發(fā)布源:深圳維創(chuàng)信息技術(shù)發(fā)布時(shí)間:2020-09-14 瀏覽次數(shù): 次
開源對開發(fā)者來說有非常大的好處,因?yàn)閹缀跞魏稳硕伎梢悦赓M(fèi)地使用和定制它,并為社區(qū)做出貢獻(xiàn)。
這種能夠確保更大透明度、安全性和促進(jìn)開發(fā)人員跨項(xiàng)目協(xié)作的方式,也為對手從中獲利鋪平了道路。
作為一名安全研究人員,我在今年遇到并分析了700多個(gè)被植入了的RubyGems軟件包,除了挖掘比特幣之外沒有任何其他用途。
還有一個(gè)很受歡迎的例子是章魚掃描儀,這是一種惡意軟件,它已經(jīng)悄悄地把它的觸角注入到了至少26個(gè)GitHub項(xiàng)目當(dāng)中。
這些事件強(qiáng)調(diào)了這樣一個(gè)事實(shí),即任何對公眾開放的系統(tǒng)也會對對手開放,并且容易被濫用。
上面的例子集中在惡意組件上面。
那些沒有被注意到的擁有安全漏洞的合法開源包呢?一個(gè)易受攻擊或惡意的軟件包進(jìn)入流行的存儲庫,并最終進(jìn)入你的軟件供應(yīng)鏈,可能會對你的客戶造成嚴(yán)重破壞。
在npm、PyPI、NuGet和Fedora等流行的開源存儲庫中,已經(jīng)檢測到了脆弱的和惡意的組件。
“在過去的幾年里,我們已經(jīng)看到了在整個(gè)生態(tài)系統(tǒng)的開源包中所發(fā)現(xiàn)的所有漏洞,傳統(tǒng)上,Node.js和Java每年都顯示出了最大數(shù)量的新漏洞,”Snyk開源安全報(bào)告2020的作者說。
該報(bào)告還表明,在軟件開發(fā)過程早期實(shí)施的安全措施是2019年報(bào)告的新漏洞比少的原因。
“如果這一趨勢持續(xù)下去,這可能是一個(gè)積極跡象,表明提高開源軟件安全性的努力正在開始取得成效,”報(bào)告繼續(xù)說道。
下面是一些提高開源代碼安全性的最佳實(shí)踐。
1. 了解你的軟件Sonatype進(jìn)行的2020年DevSecOps社區(qū)調(diào)查顯示,大多數(shù)公司--即使是那些在其工作流程中內(nèi)置了某種程度的DevSps實(shí)踐的公司,也缺乏對其軟件應(yīng)用程序所使用的所有開源組件以及應(yīng)用于它們的漏洞的全面了解。
“當(dāng)一個(gè)開放源代碼的項(xiàng)目中發(fā)現(xiàn)一個(gè)漏洞時(shí),你應(yīng)該立即問兩個(gè)問題:我們是否曾經(jīng)使用過該開源組件,以及(如果是的話)它在哪里?”報(bào)告作者說。
Sonatype對5000多名開發(fā)人員的調(diào)查顯示,只有45%擁有成熟DevOps實(shí)踐的組織為其應(yīng)用程序保留了完整的軟件物料清單(SBOM)。
“調(diào)查結(jié)果顯示,在有‘不成熟實(shí)踐’的組織中,多達(dá)74%的組織無法知道一個(gè)新披露的開源組件中的漏洞是否適用于他們的軟件,”該報(bào)告說。
這意味著那些擁有完整SBOM的不成熟實(shí)踐的組織將無法知道他們是否使用了易受攻擊的開源代碼,也不知道在他們的環(huán)境中哪里可以找到新發(fā)布的漏洞。
考慮到每天在NVD、GitHub和其他托管網(wǎng)站上發(fā)布的大量漏洞,如果沒有一些自動化的解決方案,開發(fā)者和安全專家將很難跟上這些數(shù)據(jù)。
歷史表明,大多數(shù)組織都是等到安全事件發(fā)生后才會加強(qiáng)他們的安全措施。
然而,俗話說,一分預(yù)防勝于一分治療。
通過在軟件開發(fā)生命周期中采用“左移”的方法,在早期實(shí)現(xiàn)的安全性可以獲得十倍的回報(bào),并提高開發(fā)人員的整體意識。
2. 解決依賴性問題Veracode的2020年軟件安全狀態(tài)報(bào)告強(qiáng)調(diào)了一個(gè)常見的軟件安全問題。
與開發(fā)人員本身不同,“相互關(guān)聯(lián)的依賴關(guān)系”會間接地在應(yīng)用程序中引入潛在的風(fēng)險(xiǎn),這些風(fēng)險(xiǎn)可能會被大多數(shù)開發(fā)人員所忽略。
“我們的數(shù)據(jù)顯示,大多數(shù)有缺陷的庫都間接地變成了代碼。
應(yīng)用程序中有47%的缺陷庫是可傳遞的--換句話說,它們不是由開發(fā)人員直接引入的,而是由某個(gè)庫所引入的(42%是直接引入的,12%是兩者兼而有之)。
這意味著開發(fā)人員引入的代碼會比他們預(yù)期的要多,而且往往是有缺陷的代碼。
”然而,根據(jù)Veracode的說法,糾正這個(gè)問題似乎并不是一項(xiàng)重大的任務(wù):“解決這些庫中的安全缺陷通常不是一項(xiàng)重要的工作。
應(yīng)用程序中大多數(shù)庫所引入的缺陷(將近75%)都可以通過較小的版本更新來解決。
通常不需要主要庫的升級!這一數(shù)據(jù)表明,問題的關(guān)鍵在于發(fā)現(xiàn)和跟蹤,而不是大規(guī)模的代碼重構(gòu)。
”3. 自動進(jìn)行代碼掃描以查找未知項(xiàng)章魚掃描事件和其他形式的開源生態(tài)系統(tǒng)的濫用,如typosquatting,已經(jīng)促使像GitHub這樣的庫維護(hù)者必須強(qiáng)制對他們所托管的開源項(xiàng)目進(jìn)行自動掃描。
正如今年所報(bào)道的那樣,GitHub現(xiàn)在已經(jīng)集成了基于CodeQL的開源存儲庫的自動掃描。
GitHub高級產(chǎn)品經(jīng)理Justin Hutchings告訴Register網(wǎng)站,“事實(shí)證明,這種能力在安全方面是非常有用的。
大多數(shù)安全問題都只是錯(cuò)誤的數(shù)據(jù)流或錯(cuò)誤的數(shù)據(jù)使用。
”除了識別出隱藏的漏洞和bug之外,還可以定期掃描開放源碼的項(xiàng)目,以尋找出數(shù)據(jù)泄漏的跡象,比如貢獻(xiàn)者無意中公開的私鑰和憑證。
從去年開始,一些供應(yīng)商就已經(jīng)在他們的產(chǎn)品中集成了自動掃描功能,以識別發(fā)布到合法開源存儲庫中的惡意軟件。
這些技術(shù)會將行為分析與機(jī)器學(xué)習(xí)相結(jié)合,以主動搜尋“假冒部件”。
獨(dú)立開發(fā)人員在較小規(guī)模上發(fā)布的實(shí)驗(yàn)性開源掃描器(npm-scan)也出現(xiàn)了,可以使用啟發(fā)式方法檢測易受攻擊的組件。
在組件進(jìn)入供應(yīng)鏈之前,使用自動化工具實(shí)現(xiàn)這種廣泛的安全審計(jì)可以幫助增加開源生態(tài)系統(tǒng)中的信任度和完整性問題。
4. 小心許可風(fēng)險(xiǎn)使用開源軟件的關(guān)鍵好處是它的許可證所提供的自由。
如果你在開源包中發(fā)現(xiàn)了一個(gè)尚未修復(fù)的bug,你可以選擇自己修復(fù)它,而不是等待供應(yīng)商。
你可以在你的項(xiàng)目中定制一個(gè)你認(rèn)為合適的開源應(yīng)用程序,并將定制的版本交付給你的客戶。
但是,要了解使用開源組件可能產(chǎn)生的任何潛在的許可沖突,就可能需要更多的技巧了。
Synopsys發(fā)布的2020年開源安全與風(fēng)險(xiǎn)分析報(bào)告指出:當(dāng)一個(gè)代碼庫包含開源組件,而其許可證可能與代碼庫的總體許可證發(fā)生沖突時(shí),聲明的許可證沖突就會出現(xiàn)。
例如,GNU通用公共許可證v2.0(GPLv2)下的代碼在編譯成一個(gè)正常分布的商業(yè)軟件時(shí)通常就會引起沖突問題。
但對于被認(rèn)為是軟件即服務(wù)(SaaS)的軟件來說,相同的代碼就不是問題。
”對于在不同上下文中使用相同的開源應(yīng)用程序的開發(fā)人員來說,這些相互沖突的術(shù)語可能會造成混淆。
除了漏洞和惡意組件之外,一些自動化解決方案還可以識別出大量的許可證和由它們所引起的潛在沖突。
Black Duck的一份報(bào)告發(fā)現(xiàn),2019年審計(jì)的代碼庫中有67%包含有許可證沖突的組件。
對于某些行業(yè),如互聯(lián)網(wǎng)和移動應(yīng)用程序,這一比例還要高得多(93%)。
“GPL是比較流行的開源許可之一,它的各種版本也可能會與代碼庫中的其他代碼產(chǎn)生許可沖突。
事實(shí)上,前10個(gè)有沖突的許可證中有5個(gè)就是GPL及其變體,”該報(bào)告稱。
Copyright © 2021 深圳市維創(chuàng)信息技術(shù)有限公司 版權(quán)所有