警惕開源代碼庫(kù)中的安全隱患
最近的一項(xiàng)研究發(fā)現(xiàn),在調(diào)查的31個(gè)流行庫(kù)(框架)的1261個(gè)版本中,超過(guò)三分之一存在已知的安全漏洞,大約四分之一的下載文件已經(jīng)被污染。
該項(xiàng)研究由Aspect Security和Sonatype發(fā)起。Aspect Security是一家評(píng)估軟件安全漏洞的公司,Sonatype主要提供中央資源庫(kù)(Central Repository),托管了超過(guò)30萬(wàn)個(gè)庫(kù)和開源組件,每年有超過(guò)40億次請(qǐng)求。
Aspect公司的研究人員分析了在過(guò)去12個(gè)月內(nèi),從Central Repository中下載的31個(gè)流行的Java框架和安全庫(kù),并發(fā)現(xiàn):
所有的下載中,有1980萬(wàn)次下載的版本存在已知漏洞,占26%。
下載次數(shù)最多的、存在已知漏洞的庫(kù)是Google Web Toolkit(GWT)、Apache Xerces、Spring MVC和Struts 1.x。
研究發(fā)現(xiàn),在開源代碼庫(kù)中發(fā)現(xiàn)的漏洞類型非常廣泛,一些漏洞允許攻擊者完全接管主機(jī),一些可能會(huì)導(dǎo)致數(shù)據(jù)丟失或損壞,還有一些可能會(huì)向攻擊者提供有用的信息。
研究人員稱,安全性庫(kù)比框架更有可能存在已知漏洞,現(xiàn)在的應(yīng)用程序通常使用30個(gè)或更多的庫(kù),這可能危及到應(yīng)用程序中80%的代碼。在大多數(shù)情況下,漏洞的影響在很大程度上取決于應(yīng)用程序如何使用這些庫(kù)。
研究人員列出了一些廣為流傳的已知漏洞:
在過(guò)去一年中,Spring被超過(guò)4.3萬(wàn)個(gè)組織下載了1800萬(wàn)次,但是去年的一個(gè)發(fā)現(xiàn)顯示,Spring表達(dá)式語(yǔ)言中有一個(gè)新型的漏洞,攻擊者可以通過(guò)HTTP參數(shù)提交來(lái)利用該漏洞,并獲得敏感的系統(tǒng)數(shù)據(jù)、應(yīng)用程序和用戶cookies。
2010年,谷歌的研究團(tuán)隊(duì)發(fā)現(xiàn)了Struts2中一個(gè)漏洞,該漏洞允許攻擊者在所有基于Struts2的應(yīng)用程序中執(zhí)行任意代碼。
Apache CXF(Web服務(wù)框架)在過(guò)去一年內(nèi)被超過(guò)1.6萬(wàn)個(gè)組織下載了420萬(wàn)次,從2010年該框架中就存在兩個(gè)大的漏洞(CVE-2010-2076和CVE 2012-0803),允許攻擊者欺騙任何使用CXF的服務(wù),下載任意的系統(tǒng)文件,并繞過(guò)驗(yàn)證。
研究人員稱,目前開發(fā)者還沒(méi)有好的方法來(lái)得知他們正使用的庫(kù)中存在的已知漏洞,他們必須隨時(shí)檢查幾十個(gè)郵件列表、博客、論壇,此外,開發(fā)團(tuán)隊(duì)也不太可能去尋找這些開源庫(kù)中的漏洞,因?yàn)檫@需要大量的安全方面的經(jīng)驗(yàn),在分析這些庫(kù)時(shí)自動(dòng)化工具基本上用處不大。
Aspect公司CEO稱,使用開源庫(kù)也存在“依賴管理”的問(wèn)題,開發(fā)者需要確定他們的項(xiàng)目中真正直接依賴的庫(kù)。通常情況下,開發(fā)者會(huì)在一些非必需的功能中使用庫(kù),而這些庫(kù)還可能依賴于其他庫(kù),顯然這帶來(lái)了大量過(guò)時(shí)的代碼,增加了安全風(fēng)險(xiǎn),同時(shí)增大了應(yīng)用程序的規(guī)模。
要想避免或降低這些風(fēng)險(xiǎn),就需要找出在項(xiàng)目中使用的庫(kù),確定哪些已經(jīng)過(guò)時(shí)。Aspect公司建議盡量少使用庫(kù)。
【編輯推薦】