軟件審計(jì)是在企業(yè)投入生產(chǎn)之前發(fā)現(xiàn)開(kāi)源許可證風(fēng)險(xiǎn)的最佳方式。新思科技的黑鴨審計(jì)服務(wù)團(tuán)隊(duì)每年為其客戶進(jìn)行數(shù)千個(gè)代碼庫(kù)的開(kāi)源審計(jì)。這些審計(jì)需求主??要來(lái)自合并和收購(gòu)交易,并最終成為新思科技年度《開(kāi)源安全和風(fēng)險(xiǎn)分析》(OSSRA)報(bào)告的匿名數(shù)據(jù)的關(guān)鍵來(lái)源。
當(dāng)新思科技團(tuán)隊(duì)對(duì)代碼庫(kù)進(jìn)行審計(jì)時(shí),他們專注于識(shí)別所有開(kāi)源和第三方組件及與其關(guān)聯(lián)的許可證,以便確定是否存在任何潛在的許可證沖突。
近期發(fā)布的2019年OSSRA報(bào)告審查了1,200多個(gè)商業(yè)代碼庫(kù)的數(shù)據(jù)結(jié)果,這些代碼庫(kù)用于希望評(píng)估其開(kāi)源許可證合規(guī)性和安全風(fēng)險(xiǎn)的企業(yè)和組織。
審計(jì)發(fā)現(xiàn),2018年掃描的代碼庫(kù)中有超過(guò)96%的代碼庫(kù)是開(kāi)源的,超過(guò)99%的代碼庫(kù)包含超過(guò)1,000個(gè)由開(kāi)源組件構(gòu)成的文件。開(kāi)源代碼與代碼庫(kù)中代碼總數(shù)的比例在2018年為60%,高于2017年的57%。這些數(shù)字反映了經(jīng)審計(jì)的代碼庫(kù)通常來(lái)自業(yè)務(wù)是構(gòu)建軟件的公司。這些公司的價(jià)值通常體現(xiàn)在其擁有的專有代碼,它們代碼庫(kù)中開(kāi)源代碼與專有代碼的比例往往較低。
相比之下,F(xiàn)orrester和Gartner等分析師指出,超過(guò)90%的IT企業(yè)在任務(wù)關(guān)鍵型的工作中使用開(kāi)源軟件,而且開(kāi)源占據(jù)了90%的新代碼庫(kù)。根據(jù)2019年紅帽(Red Hat)“企業(yè)開(kāi)源狀態(tài)”報(bào)告,超過(guò)69%的受訪企業(yè)認(rèn)為他們使用開(kāi)源至少“非常重要”(40%非常重要,29%極其重要)。
無(wú)論您參考哪組數(shù)據(jù),很明顯開(kāi)源組件和庫(kù)是每個(gè)行業(yè)中幾乎所有應(yīng)用程序的支柱。大多數(shù)企業(yè)擁有數(shù)千種不同的軟件,從移動(dòng)應(yīng)用程序到基于云的系統(tǒng),再到本地運(yùn)行的遺留系統(tǒng)。該軟件通常是商業(yè)現(xiàn)成軟件包、開(kāi)源軟件和定制代碼庫(kù)的混合體。漏洞影響所有軟件。
然而,很少有公司能夠充分追蹤他們?cè)诖a中使用的開(kāi)源組件,并且沒(méi)有采用開(kāi)發(fā)人員使用開(kāi)源所做出的選擇所需的策略、流程和工具。因此,開(kāi)源帶來(lái)的所有好處也可能帶來(lái)各種風(fēng)險(xiǎn)。
風(fēng)險(xiǎn)問(wèn)題來(lái)自未修補(bǔ)的軟件,不是使用開(kāi)源
正如紅帽報(bào)告指出的那樣,安全被認(rèn)為是阻礙一些企業(yè)允許開(kāi)源使用的主要障礙。有趣的是,同一份報(bào)告將安全性視為IT決策者在使用開(kāi)源時(shí)所看到的最大好處之一。這種看似矛盾反映了兩種現(xiàn)狀:人們擔(dān)心非托管開(kāi)源代碼可能會(huì)在開(kāi)源和專有解決方案中引入漏洞;人們意識(shí)到正確管理開(kāi)源 - 包括使用可信來(lái)源和自動(dòng)化工具來(lái)發(fā)現(xiàn)和修復(fù)安全問(wèn)題 - 可以大大減少開(kāi)源風(fēng)險(xiǎn)的潛力。
所有軟件,無(wú)論是專有軟件還是開(kāi)源軟件,都存在可能存在漏洞。企業(yè)需要識(shí)別和修補(bǔ)這些漏洞。開(kāi)源社區(qū)在發(fā)布補(bǔ)丁方面做出了示范性的工作,通常比專有軟件快得多。
但無(wú)論是專有軟件還是開(kāi)源軟件,相當(dāng)大數(shù)量的企業(yè)都沒(méi)有及時(shí)應(yīng)用補(bǔ)丁,而暴露在風(fēng)險(xiǎn)之中。不修補(bǔ)的原因是多種多樣的:有些企業(yè)被無(wú)休止的可用補(bǔ)丁所淹沒(méi),無(wú)法確定需要修補(bǔ)的優(yōu)先級(jí);有的缺乏應(yīng)用補(bǔ)丁的資源;有的需要平衡風(fēng)險(xiǎn)與財(cái)務(wù)成本之間的關(guān)系。
未修補(bǔ)的軟件漏洞是企業(yè)面臨的最大的網(wǎng)絡(luò)威脅之一,軟件中未修補(bǔ)的開(kāi)源組件增加了安全風(fēng)險(xiǎn)。 2019年OSSRA報(bào)告指出,2018年審計(jì)的代碼庫(kù)中有60%至少存在某種開(kāi)源漏洞。 新思科技在2018年為其黑鴨 KnowledgeBase?知識(shí)庫(kù)增加了7,393個(gè)開(kāi)源漏洞。過(guò)去二十年,該知識(shí)庫(kù)已經(jīng)報(bào)告了超過(guò)50,000個(gè)開(kāi)源漏洞。
有什么風(fēng)險(xiǎn)?
開(kāi)源的某些特性使流行組件中的漏洞很容易受到攻擊。商業(yè)軟件的發(fā)布者可以自動(dòng)向用戶推送修復(fù),補(bǔ)丁和更新。但與商業(yè)軟件不同,您需要負(fù)責(zé)追蹤使用的開(kāi)源的漏洞和修復(fù)程序。
無(wú)處不在的開(kāi)源為攻擊者提供了一個(gè)有利的環(huán)境,因?yàn)槁┒词峭ㄟ^(guò)國(guó)家漏洞數(shù)據(jù)庫(kù)(NVD)、郵件列表、GitHub問(wèn)題和項(xiàng)目主頁(yè)等來(lái)源披露的。如前所述,許多企業(yè)沒(méi)有保留其應(yīng)用程序中使用的開(kāi)源組件的準(zhǔn)確、全面和最新的清單。例如,美國(guó)參議院常設(shè)調(diào)查小組委員會(huì)的一份工作人員報(bào)告指出,Equifax缺乏完整的軟件庫(kù)存是導(dǎo)致其2017年大規(guī)模數(shù)據(jù)泄露的一個(gè)因素。
正確管理開(kāi)源軟件不僅僅是關(guān)乎安全性
現(xiàn)在有數(shù)千個(gè)開(kāi)源許可證,如果不遵守這些許可證,可能會(huì)使企業(yè)面臨訴訟風(fēng)險(xiǎn)和損害知識(shí)產(chǎn)權(quán)風(fēng)險(xiǎn)。無(wú)論是使用開(kāi)源計(jì)劃認(rèn)可的流行許可證還是其它許可證,企業(yè)只有在確定由這些許可證管理的開(kāi)源組件后才能管理和遵守許可證要求。 2019年OSSRA報(bào)告中詳述的經(jīng)過(guò)審計(jì)的代碼庫(kù)中有32%包含可能導(dǎo)致沖突或需要進(jìn)行法律審查的自定義許可證。 68%的代碼庫(kù)包含許可證沖突的組件。
除了安全和許可風(fēng)險(xiǎn)之外,操作風(fēng)險(xiǎn)是開(kāi)源使用不太嚴(yán)重但仍然不可忽視的后果。今天使用的許多開(kāi)源組件都被放棄了。換句話說(shuō),他們沒(méi)有開(kāi)發(fā)人員社區(qū)貢獻(xiàn)、修補(bǔ)或改進(jìn)它們。如果組件處于非活動(dòng)狀態(tài)且沒(méi)有人維護(hù)它,則意味著沒(méi)有人正在解決其潛在的漏洞。 2019年OSSRA報(bào)告指出,85%的被審計(jì)代碼庫(kù)包含超過(guò)四年沒(méi)有更新或在過(guò)去兩年沒(méi)有開(kāi)發(fā)活動(dòng)的組件。
使用開(kāi)源并不是在冒險(xiǎn),但是開(kāi)源的非托管使用卻有風(fēng)險(xiǎn)
開(kāi)源為使用它的組織提供了許多好處 - 但只有在正確管理開(kāi)源以識(shí)別任何安全和法律合規(guī)性問(wèn)題時(shí)。為了防范開(kāi)源安全和合規(guī)風(fēng)險(xiǎn),企業(yè)應(yīng)該:
創(chuàng)建和執(zhí)行開(kāi)源風(fēng)險(xiǎn)政策和流程。只有少數(shù)開(kāi)源漏洞 - 例如影響Apache Struts或OpenSSL的漏洞 - 可能會(huì)被廣泛利用??紤]到這一點(diǎn),企業(yè)應(yīng)將其開(kāi)源漏洞管理和緩解工作的重點(diǎn)放在CVSS(通用漏洞評(píng)分系統(tǒng))評(píng)分和漏洞利用的可用性上,不僅僅是漏洞披露的“零天攻擊”,而是貫穿開(kāi)源組件生命周期。
必須讓開(kāi)發(fā)人員了解管理使用開(kāi)源的必要性。企業(yè)實(shí)施自動(dòng)化流程、追蹤代碼庫(kù)中的開(kāi)源組件及其已知的安全漏洞、以及版本控制和重復(fù)等操作風(fēng)險(xiǎn),并根據(jù)問(wèn)題的嚴(yán)重性確定問(wèn)題的優(yōu)先級(jí)。
執(zhí)行其開(kāi)源軟件的完整清單。在代碼庫(kù)中使用完整、準(zhǔn)確、及時(shí)的開(kāi)源清單至關(guān)重要。清單應(yīng)涵蓋兩個(gè)方面:源代碼;如何在生產(chǎn)中部署或用作應(yīng)用程序中的庫(kù)的任何商業(yè)軟件或二進(jìn)制文件中使用開(kāi)源的信息。
了解開(kāi)源的已知漏洞。國(guó)家漏洞數(shù)據(jù)庫(kù)(National Vulnerability Database)等公共資源是公開(kāi)披露開(kāi)源組件漏洞信息的可靠平臺(tái)。但是,不要僅僅依靠NVD來(lái)獲取漏洞信息。還需要查看其它資料。這些資料提供影響代碼庫(kù)的漏洞的早期通知,理想情況下,還會(huì)提供安全性洞察、技術(shù)詳細(xì)信息以及升級(jí)和修補(bǔ)程序指南。
監(jiān)控新的安全威脅。當(dāng)應(yīng)用程序完成開(kāi)發(fā)時(shí),追蹤漏洞的工作還未結(jié)束。只要應(yīng)用程序仍在使用中,企業(yè)就需要持續(xù)監(jiān)控新威脅。
識(shí)別許可風(fēng)險(xiǎn)。不遵守開(kāi)源許可證可能會(huì)導(dǎo)致企業(yè)面臨訴訟和危害知識(shí)產(chǎn)權(quán)的重大風(fēng)險(xiǎn)。教育開(kāi)發(fā)人員了解開(kāi)源許可證及其義務(wù)。讓法律顧問(wèn)也參與教育過(guò)程,當(dāng)然他們還有審查許可證和遵守法律義務(wù)。
確保審查開(kāi)源是并購(gòu)盡職調(diào)查一部分。如果您正在進(jìn)行收購(gòu),請(qǐng)了解目標(biāo)公司正在使用的開(kāi)源,它可能沒(méi)有適當(dāng)?shù)毓芾砗眠@些開(kāi)源。不要猶豫,詢問(wèn)有關(guān)其開(kāi)源使用和管理的問(wèn)題。如果軟件資產(chǎn)是公司估值的重要組成部分,請(qǐng)讓第三方來(lái)審核開(kāi)源代碼。
最重要的是,如果企業(yè)不知道自己正在使用什么軟件,那就無(wú)法提供修補(bǔ)方案。如果您無(wú)法充滿信心地說(shuō)在內(nèi)部和外部應(yīng)用程序中使用的開(kāi)源組件是最更新的,應(yīng)用了所有關(guān)鍵補(bǔ)丁,那么就該重新評(píng)估現(xiàn)有的開(kāi)源管理策略和流程了。