你經常會對你的桌面系統進行病毒檢查,并且定期更新平臺上所有運行的服務器應用程序,但應用程序本身安全嗎?
Sonatype公司近日公布了其年度開源軟件開發調查的結果,這個調查著眼于開發人員使用開源組件的程度,特別側重于調查他們如何平衡速度和安全性的需要。Sonatype調查了來自50多個國家的3500人(其中85%以上是開發人員),來了解他們組裝軟件所采用的方法。結果表明開發人員對某些組件的依賴:至少有80%的典型的Java應用程序現在是通過開源組件和框架來組裝的。
多年來一直都是這樣,但這很好地說明了組件組裝概念的完全成熟,而不是從頭開始編寫代碼——盡管其重點主要是在Java組件。Node Package Manager(npm)、CPAN以及最近的PHP Composer等工具的普及表明Sonatype的調查結果可能反映了一種普遍的趨勢,這與使用何種語言無關。如果你詢問任何受雇的開發人員,他們都會告訴你:組件是事物建立的方式。
然而,這提出了新的問題。Sonatype得出這樣的結論,開發人員沒有跟進最新的安全問題。該調查報告稱,通過組件構建的應用程序中,71%的應用程序使用至少一種具有已知安全問題的組件版本,而解決這些安全問題的更新版本已經發布。在2012年,4600萬不安全版本的組件被下載。曾經,安全意味著保持你的現成的軟件或者LAMP堆棧軟件的更新和完全修復,但這已經不再是一個安全的假設。
筆者詢問Sonatype首席執行官Wayne Jackson是否有任何證據表明CERT發布的關鍵安全問題(CVE)的數量有所增加——來自組件漏洞利用而不是對開發完成的軟件的漏洞利用。在2006年,只有8個CVE確定了某個組件作為風險來源,而到2012年,這個數量已經上升到50。今天,如果想要確保企業安全,只是保障平臺的更新是不足夠的,還需要一個政策來保障應用程序的安全。
與其他組件庫相比,這個問題在Maven可能更加明顯,Maven修復POM中的版本號,而不是提供版本范圍。當然,使用npm的Javascript編程員和使用PHP Composer的PHP編程員能夠指定不會打破API兼容性的隨后次要版本是可以接受的,以及通過簡單的命令來更新其軟件。但這并不只是一個開源問題或者只是Java問題,從自閉源供應商購買的轉悠組件也可能受到相同的影響。
自然地,Sonatype有一個產品可以幫助解決這個問題,但根本問題是,我們大多數人根本沒有意識到開發人員對組件的選擇能夠主宰我們的系統。攻擊者可以利用組件中的漏洞利用作為進入系統的入口,而是用該組件的企業中的應用程序可能永遠無法通過更新來關閉這個入口和解決這個問題。該調查發現只有38%的受訪企業能夠控制器應用程序是用的組件,并確保定期的安全更新。
網絡安全是非常重要的事情,甚至已經被提上國家政治議程,但我們真的明白如何實現安全性嗎?現在企業開發已經逐漸轉向組件,而不是使用企業內部平臺中運行的自定義代碼,企業應該意識到這一個事實,提防攻擊者,要知道,他們正在瞄準你的組件,而不只是你的服務器。