很多情況下,一旦產(chǎn)品中發(fā)現(xiàn)高風(fēng)險(xiǎn)安全漏洞,更大的挑戰(zhàn)橫亙眼前:怎樣依據(jù)美國國家漏洞數(shù)據(jù)庫(NVD)中指定的名稱找出受影響的組件或產(chǎn)品。之所以存在這個(gè)問題,是因?yàn)镹VD使用通用平臺枚舉(CPE)名稱標(biāo)識軟件產(chǎn)品,該名稱由美國商務(wù)部下屬的國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)指定。
NVD根據(jù)供應(yīng)商、產(chǎn)品及其版本字符串用CPE標(biāo)識硬件和軟件組件。軟件用戶若想通過NVD確定自己在用的某產(chǎn)品組件是否存在相關(guān)漏洞,就必須知道該組件的準(zhǔn)確CPE名稱。然而,無論是開源還是專有組件,通常都不太可能找到其CPE名稱。
大多數(shù)情況下,軟件安全所需的諸多流程就是因?yàn)檫@一問題而無法可靠地自動(dòng)化,比如軟件物料清單(SBOM)生成。
難以在NVD中找到漏洞的原因
為了解問題全貌,可以考慮下面六種情況,下列情況都可令依賴CPE作為唯一標(biāo)識符在NVD中檢索組件和產(chǎn)品漏洞極端困難。
1、漏洞在NVD中以通用漏洞與暴露(CVE)編號(如“CVE-2022-12345”)標(biāo)識,并采用通用漏洞評分系統(tǒng)(CVSS)為每個(gè)CVE指定威脅級別。通常不會在分配到CVE編號之前就為軟件產(chǎn)品創(chuàng)建CPE。然而,很多軟件供應(yīng)商從未上報(bào)漏洞(可能產(chǎn)生CVE),于是其產(chǎn)品在NVD中便一直沒有CPE了。
這未必是因?yàn)楫a(chǎn)品從未出現(xiàn)漏洞,而是因?yàn)殚_發(fā)商可能沒向NVD報(bào)告過任何現(xiàn)有漏洞。
因此,下面兩種情況下,在NVD中檢索就會得到“無匹配記錄”的結(jié)果了:
(1) 給定產(chǎn)品中不存在漏洞
(2) 存在漏洞,但開發(fā)商從未報(bào)告過
2、由于NVD收錄新CPE名稱時(shí)不執(zhí)行任何錯(cuò)誤檢查,所以有可能出現(xiàn)不符合一貫命名規(guī)范的產(chǎn)品CPE名稱。于是,如果用戶用正確指定的CPE檢索產(chǎn)品,就會收到“0條匹配記錄”的錯(cuò)誤提示信息。如果使用了原始(非規(guī)范)CPE名稱,但不存在該產(chǎn)品相關(guān)的CVE報(bào)告,用戶也會收到如上提示信息。
這種提示信息可能意味著用戶檢索的產(chǎn)品CPE名稱有效,但該產(chǎn)品未報(bào)告過CVE;也可能意味著用戶輸入的CPE不匹配NVD中的CPE,但實(shí)際上存在與提交到NVD的(非規(guī)范)CPE相關(guān)聯(lián)的CVE。
用戶在檢索欄中拼錯(cuò)了CPE名稱也會出現(xiàn)顯示“0條匹配記錄”錯(cuò)誤提示信息的情況。這種情況下,用戶根本不會知道是手誤導(dǎo)致的,而會認(rèn)為產(chǎn)品就是不存在報(bào)告的漏洞。
3、隨著時(shí)間流逝,產(chǎn)品或供應(yīng)商名稱會因并購而改變,而產(chǎn)品的CPE名稱也會變。這種情況下,如果用戶用最初的CPE而沒用新的CPE名稱檢索,也不會知道新出現(xiàn)漏洞的情況。與前面的情況相同,用戶會收到顯示為“0條匹配記錄”的信息。
4、供應(yīng)商或產(chǎn)品名稱存在不同變體的情況也會導(dǎo)致檢索出錯(cuò),比如“Microsoft”和“Microsoft Inc.”,或者“Microsoft Word”和“Microsoft Office Word”等等。沒有精準(zhǔn)的供應(yīng)商或產(chǎn)品名稱,NVD檢索就會產(chǎn)生錯(cuò)誤的結(jié)果。
5、同一產(chǎn)品在NVD中可能會擁有多個(gè)CPE名稱,如果產(chǎn)品由不同人員錄入,而每個(gè)人都用了不同迭代的話。這可能導(dǎo)致幾乎無法確定哪個(gè)名稱是正確的。更糟糕的是,如果為每個(gè)CPE變體都錄入了CVE,就會導(dǎo)致產(chǎn)品沒有“正確”的名稱。其中一個(gè)例子就是OpenSSL(如“OpenSSL”和“OpenSSL Framework”)。由于沒有哪個(gè)CPE名稱包含所有OpenSSL漏洞,用戶必須單獨(dú)檢索每個(gè)產(chǎn)品名稱變體。
6、很多情況下,漏洞只影響某個(gè)軟件庫里的一個(gè)模塊。然而,由于CPE名稱是指定給整個(gè)產(chǎn)品而非各個(gè)模塊的,用戶需完整閱讀CVE報(bào)告才能確定到底是哪個(gè)模塊易受攻擊。如果沒看全,可能會導(dǎo)致非必要的修復(fù)或緩解,比如在用產(chǎn)品中并未安裝有漏洞的模塊,而是安裝了庫里其他模塊的時(shí)候。
幸好,名為SBOM論壇的跨行業(yè)小組(包括OWASP、Linux基金會、Oracle和其他組織的成員)正在研究這個(gè)問題,并制定了旨在提升NVD準(zhǔn)確性的一項(xiàng)提案,該提案的重點(diǎn)放在現(xiàn)代自動(dòng)化用例上。
該小組的建議,例如軟件采用包URL(purl)和硬件采用GS1標(biāo)準(zhǔn),旨在創(chuàng)建一種標(biāo)準(zhǔn)化的方式供可靠查詢NVD和接收關(guān)于漏洞的準(zhǔn)確信息。
來源:數(shù)世咨詢