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