開源代碼的最大風(fēng)險(xiǎn):半日漏洞
對(duì)開源軟件(包括其他IT系統(tǒng))威脅最大的往往不是“零日漏洞”,而是那些已經(jīng)披露,甚至已經(jīng)發(fā)布補(bǔ)丁的漏洞。
Aqua Security最新發(fā)布的開源安全報(bào)告指出,越來(lái)越多的攻擊者會(huì)利用開源項(xiàng)目漏洞披露流程的缺陷,在漏洞已經(jīng)披露但尚未發(fā)布補(bǔ)丁之前收集攻擊所需信息。
主要風(fēng)險(xiǎn)來(lái)自“半日”和“0.75天”漏洞
對(duì)于開源項(xiàng)目維護(hù)者來(lái)說(shuō),所謂“半日”漏洞,就是漏洞信息已經(jīng)在GitHub或國(guó)家漏洞數(shù)據(jù)庫(kù)上披露,但仍然沒有官方修復(fù)補(bǔ)丁的漏洞。
“0.75天”漏洞則指那些已經(jīng)有官方修復(fù)程序,但沒有分配CVE編號(hào)或CPE標(biāo)識(shí)符的漏洞,這意味著漏洞掃描工具暫時(shí)無(wú)法檢測(cè)到IT環(huán)境中的易受攻擊組件,安全團(tuán)隊(duì)也不知道需要安裝補(bǔ)丁。
安全研究人員指出:攻擊者會(huì)積極收集在公共平臺(tái)(GitHub、NVD)上暴露或披露的“半日漏洞”或“0.75天漏洞”的蛛絲馬跡,例如,攻擊者可以在拉取請(qǐng)求、提交和問(wèn)題中發(fā)現(xiàn)的消息和元數(shù)據(jù)中,找到對(duì)易受攻擊代碼的引用,使用公布的漏洞利用PoC(如果存在),甚至編寫自己的漏洞利用。
有時(shí),漏洞從“零日”(維護(hù)者不知情)切換到“壹日”狀態(tài)(維護(hù)者已知曉,分配了CVE,并且通常有可用的補(bǔ)丁)之間的時(shí)間很短,攻擊者在此期間開發(fā)漏洞利用實(shí)施攻擊的風(fēng)險(xiǎn)很小。例如,Log4Shell的從公開漏洞披露到補(bǔ)丁發(fā)布的窗口約為10天(編者:PoC與補(bǔ)丁同一天發(fā)布,但依然造成了全球性的慌亂)。
值得注意的是,還有很多漏洞從披露到補(bǔ)丁的敞口可能長(zhǎng)達(dá)數(shù)月,這給攻擊者提供了充裕的時(shí)間。Kenna Security公司的研究顯示,當(dāng)漏洞利用PoC代碼先于補(bǔ)丁發(fā)布時(shí)(約三分之一的漏洞屬于這種情況),攻擊者針對(duì)漏洞資產(chǎn)實(shí)施漏洞利用的時(shí)間,比防御者采取緩解措施止損的時(shí)間,要早三個(gè)月以上。
彌補(bǔ)開源軟件漏洞披露機(jī)制的缺陷
“盡管沒有具體證據(jù)表明攻擊者正在積極利用(漏洞披露流程中的缺陷),但可以合理地假設(shè)攻擊者可能會(huì)從開源項(xiàng)目中收集信息。他們可能會(huì)利用這些數(shù)據(jù)來(lái)更深入地了解這些項(xiàng)目并尋找潛在的漏洞。“研究人員指出:“有時(shí),CVE在正式補(bǔ)丁發(fā)布之前就被上傳到NVD,這在披露過(guò)程的生命周期中發(fā)生得太早了。”
Aqua Security的研究人員展示了如何大規(guī)模識(shí)別半日漏洞:“通過(guò)NVDAPI獲取最近推送的CVE并搜索GitHub引用,我們可以檢查NVD引用的提交(PR)在GitHub上是否有包含它們的版本。”
研究人員還發(fā)布了一個(gè)名為“半日漏洞監(jiān)控器”的概念驗(yàn)證工具,不過(guò)提交或拉取請(qǐng)求是否包含有用信息的最終檢查取決于用戶。
半日漏洞監(jiān)控器(CVE Half-Day Watcher)y
當(dāng)然,研究人員開發(fā)半日漏洞監(jiān)控工具并不是為了幫助攻擊者。相反,是希望通過(guò)以下方式推動(dòng)開源項(xiàng)目維護(hù)人員盡量減少或關(guān)閉攻擊者的機(jī)會(huì)窗口:
- 制定負(fù)責(zé)任的披露政策,概述漏洞管理的安全流程(如果他們還沒有)
- 利用GitHub的私有報(bào)告功能謹(jǐn)慎地管理漏洞
- 定期掃描代碼提交、問(wèn)題和拉取請(qǐng)求以查找觸發(fā)詞,以防止漏洞過(guò)早披露。