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