Heartbleed事故后:軟件政策何去何從?
通過重寫開源和第三方組件開發(fā)使用的腳本來降低企業(yè)的風險。
首席信息安全官(CISO)的工作正受到密切關注,面對持續(xù)的挑戰(zhàn),他們必須最大限度地利用安全舉措來確保企業(yè)資產(chǎn)得到充分保護,其工作的重點在于嚴格控制用戶對關鍵數(shù)據(jù)和資源的訪問。但對于管理這些數(shù)據(jù)(包括加密、身份驗證和權限檢查使用的代碼)訪問的軟件,卻很少得到這種相應水平的關注。
面對資源限制,企業(yè)越來越多地使用開源庫和第三方組件來開發(fā)復雜的應用。為什么重寫已經(jīng)存在的功能呢?因為很少有企業(yè)會像檢查內(nèi)部創(chuàng)建的軟件一樣嚴格檢查這些代碼。
由已經(jīng)離職的老員工維護的應用和數(shù)據(jù)庫,以及通過合并和收購獲取的軟件系統(tǒng),都會帶來安全隱患。有些IT團隊可能會假定這些代碼是安全的,因為別人已經(jīng)完成了檢查缺陷和漏洞的工作。而OpenSSL加密軟件庫中的Heartbleed漏洞讓我們明白,單純地依賴別人來正確部署和提供安全性可能讓企業(yè)和客戶數(shù)據(jù)處于風險之中。
對于使用開源和第三方軟件涉及的風險,安全管理人員該發(fā)揮怎樣的作用呢?根據(jù)《高管的觀點:(ISC)2全球信息安全工作力CXO報告》(The View From the Top: (ISC)2 Global Information Security Work-force CXO Report)顯示,在2013年接受采訪的1634名安全高管列出的威脅問題中,應用漏洞名列榜首,同時它也是最少受關注的問題。只有7%的受訪者花了很多時間在軟件安全上。
和企業(yè)移動和BYOD要求一樣,軟件安全政策合規(guī)低得令人沮喪。修訂安全政策對決定著企業(yè)的賠償責任和漏洞問題的開發(fā)做法會有什么影響?
盡早且經(jīng)常發(fā)布
首席信息安全官面臨的困境是:確保軟件項目內(nèi)使用的代碼的安全性,同時不會惹怒企業(yè)業(yè)主以及開發(fā)團隊,要知道,當預算緊張又需要按時交付應用和更新時,開發(fā)團隊通常承受著巨大壓力。對于不安全的軟件,隨著威脅逐漸超過其帶來的優(yōu)勢,安全人員需要重新評估使用開源軟件和第三方組件涉及的風險,并研究如何能最好地管理它們。
開源軟件的安全性和質(zhì)量(這是企業(yè)選擇使用這些庫和組件的兩個原因)取決于每個項目的開發(fā)人員團隊的規(guī)模是否足以大得讓人能夠發(fā)現(xiàn)缺陷和漏洞。這即是所謂的林納斯定律——“足夠多的眼睛,就可讓所有問題浮現(xiàn)”,該概念根據(jù)Linus Torvalds的名字命名,他是Linux的創(chuàng)造者,也是自我修正、社區(qū)驅(qū)動的軟件開發(fā)模式的早期支持者。然而,這一理念在現(xiàn)在的威脅環(huán)境存在的問題是,發(fā)現(xiàn)和利用漏洞的金錢獎勵要高于發(fā)現(xiàn)、發(fā)布和修復開源軟件漏洞的獎勵。
開源安全舉措也有金錢獎勵,微軟和Facebook贊助的Bug Bounty會對“提交在主要開源軟件(例如PHP、Perl和Apache httpd)中發(fā)現(xiàn)的漏洞,用以打造更安全的互聯(lián)網(wǎng)的黑客”進行獎勵。
約翰霍普金斯大學的計算機科學教授Matthew Green以及由社區(qū)資助的對TrueCrpt磁盤加密工具進行審查工作的另一些人,提出了一個漏洞賞金計劃,作為該安全審計工作的一部分。由于不知名的“安全漏洞”,這個開源加密項目在5月份突然被其開發(fā)者關閉。
有關美國國家安全局的監(jiān)視活動的新聞已經(jīng)導致很多國家(包括中國和其他民族國家)質(zhì)疑開源項目以及有美國公司故意將漏洞引入到主流安全協(xié)議和功能中,以為NSA提供后門程序。RSA(EMC公司的安全分支)、微軟和TrueCrpt都是面臨審查的公司。
企業(yè)開發(fā)團隊在構建應用時,可以輕松地使用100或以上不同的開源庫、框架和工具,以及從互聯(lián)網(wǎng)復制代碼片段。2014年Sonatype開源開發(fā)調(diào)查發(fā)現(xiàn),90%的典型應用是由開源組件組裝,其中很多包含已知的安全漏洞。漏洞組件引入至新應用的問題已經(jīng)非常嚴重,這已經(jīng)出現(xiàn)在OWASP的Web應用漏洞前10名的榜單上了。
糟糕的政策 存在漏洞的軟件
研究表明,只有少數(shù)企業(yè)部署或強制執(zhí)行了關于使用第三方代碼的政策。Sonatype調(diào)查發(fā)現(xiàn),在3353名受訪者中,75%表示其企業(yè)有關于代碼和組件使用的政策,但只有68%的受訪者(管理人員、架構師和開發(fā)人員)遵守這些政策。事實上,77%的受訪者表示其企業(yè)從未禁止開源組件,即使有31%是開源軟件的受害者或者可能遭泄露事故。
顯然,負責管理企業(yè)軟件安全狀態(tài)的信息安全主管需要重新審視政策、程序,以及管理代碼和組件使用的指導方針,以確保其安全程序?qū)﹂_源代碼的使用擁有足夠的控制。軟件開發(fā)生命周期應該建立起“將安全做法實際引入到開發(fā)過程中”的框架。
根據(jù)Cigital公司首席技術官Gary McGraw表示,軟件安全組(SSG)應該監(jiān)管應用安全,SSG屬于安全部門,并作為孤島式安全團隊和開發(fā)團隊之間的中介。SSG的主管應該由董事會來委任,以確保安全代碼被視為企業(yè)的重要組成部分;它是企業(yè)管理流程中的必要費用之一,且等同于其他業(yè)務驅(qū)動因素。Cigital的成熟模型中構建安全(BSIMM)調(diào)查使用了67個真正軟件安全舉措的數(shù)據(jù),這些數(shù)據(jù)來自于美國銀行、EM、富達、匯豐銀行、微軟、McAfee、Salesforce和Zynga等,該調(diào)查發(fā)現(xiàn),具有成熟軟件開發(fā)操作的企業(yè)通常有高級管理人員來管理軟件安全,以及SSG來管理開發(fā)程序。(在Creative Commons Shared Attribution 3.0 License下可查看BSIMM-V項目的數(shù)據(jù)和相關文件)
開發(fā)團隊應該在最開始就參與制定軟件安全政策的工作,否則遵守程度會很低。SSG和開發(fā)團隊領導者需要商定代碼和組件選擇的具體參數(shù),包括業(yè)務用例、支持論壇和文檔的質(zhì)量、可接受許可證,最重要的是代碼質(zhì)量。
讓開發(fā)人員負責代碼和組件選擇過程,可以讓他們的聲譽面臨壓力,這意味著他們可能需要為代碼的未來問題承擔責任。這種水平的參與度可以幫助開發(fā)團隊意識到,速度和花哨的功能并不是最重要的編碼因素,還應該考慮開源組件以及與內(nèi)部代碼和軟件組成的依存關系。SSG以及開發(fā)團隊可以根據(jù)整體企業(yè)風險來確保每個代碼選擇或組件,以確定所需的安全審查范圍。#p#
符合成本效益的代碼分析
開發(fā)團隊需要同時使用靜態(tài)和動態(tài)代碼分析。代碼的靜態(tài)分析(常發(fā)生在執(zhí)行應用之前)為代碼審查提供了可擴展的能力,可以幫助驗證編碼政策的合規(guī)性。而在正常運行時執(zhí)行的動態(tài)分析可以確保代碼得到正確的集成,以及按預期工作等。安全管理人員需要確保為開發(fā)人員和運行這些工具的質(zhì)量保證測試人員提供充分的培訓。
雖然分析工具可以完成大部分發(fā)現(xiàn)和標記漏洞的工作,但它們并不完美,特別是對于凌亂和復雜的代碼庫。對于處理或存儲著敏感數(shù)據(jù)的應用,請做好對其關鍵組件使用手動代碼審查的準備。如果代碼過于復雜難于理解,應該重新考慮是否該使用或者請求外界的協(xié)助。而對于高技能任務,外包則更符合成本效益。有些企業(yè)的安全團隊缺乏人力和資源,相比之下,采用基于云的掃描來測試漏洞的服務可提供對漏洞的更深入的視圖。
應用安全測試服務也已出現(xiàn),例如惠普的Fortify Software Security Center、Check-marx和Veracode的VAST按需服務,它們分析代碼而不需要訪問源代碼。然而,依賴于第三方服務或咨詢顧問意味著需要完全理解測試的東西以及測試情況。例如,OpenSSL有一個FIPS 140-2認證,但FIPS認證只檢查加密例程,而Heartbeat協(xié)議不是加密模塊的組成部分,所以它在FIPS的范圍之外。同樣重要的是要記住,一次性的認證或?qū)彶橹粫w那個時間點的威脅情況,因此應該執(zhí)行定期審查。
谷歌的單一代碼TRUNK
在獲得批準后,代碼應該存儲在內(nèi)部資源庫,同時,開發(fā)者工具應被配置為只能從該資源庫審查代碼,而不是從互聯(lián)網(wǎng)。谷歌將其所有項目的源代碼保存在單一代碼trunk中,其所有開發(fā)人員都可以訪問這個相同的資源庫。這是版本控制的重要方面,這減少了交叉編譯注入攻擊的風險(在這種攻擊中,攻擊者感染承載組件的服務器,并使用惡意副本來替換它們)。
企業(yè)應該記錄所有第三方代碼,包括所有依賴關系和資源,將其保存在資料庫中,并指派一個人來監(jiān)控所有相關安全郵件列表,以及獲取、測試和分發(fā)所有更新和修復。
在2013年,開源框架Ruby on Rails受到多個安全漏洞影響,這些漏洞允許遠程代碼執(zhí)行。有些開發(fā)團隊不知道該流行web應用框架的這些關鍵警報和更新,讓其客戶和用戶面臨攻擊的風險。
漏洞將不可避免地進入生產(chǎn)代碼,因此企業(yè)必須保存所有相關信息,例如源代碼、二進制文件、文檔、應急響應計劃和第三方軟件的許可條款,以允許對應用的發(fā)布后的維護。企業(yè)應該部署應急響應計劃來處理關鍵補丁修復。互聯(lián)網(wǎng)上的所有應用都需要快速的響應來防止攻擊者成功地利用新發(fā)現(xiàn)的漏洞。
企業(yè)現(xiàn)在依賴于可靠的安全的軟件。在應用開發(fā)過程中使用開源代碼可以帶來效率、成本和安全方面的好處,但對這些代碼的審查需要更實際的項目時間表,以及一定的預算來支付工具和培訓費用。通過維護良好的資源庫來自動化政策執(zhí)行可以讓開發(fā)人員保持足夠的開發(fā)靈活性,同時減少應用的復雜性和漏洞。如果企業(yè)使用過時的且不能強制執(zhí)行的軟件安全政策,也不獎勵那些對代碼維持良好控制的開發(fā)人員,那么將毋庸置疑地在未來面臨更高的風險。