開源安全性的「採礦時代」

開源軟體 (OSS) 安全性的格局正在經歷根本性的轉變。我們已經進入了某些人所稱的「採礦時代」(strip mining era),在這種情況下,大型語言模型 (LLMs) 和 AI 驅動的掃描器可以快速解析大量程式碼,以以前無法想像的規模和速度識別潛在漏洞。雖然尋找錯誤 (bugs) 的目標本身是積極的,但報告的龐大數量正對維持網路運行的維護者(通常是志願者)造成系統性的壓力。

這種轉變不僅僅是關於更好的工具;它還涉及漏洞發現經濟學的改變。當研究人員可以將 AI 指向一個儲存庫 (repository) 並在幾秒鐘內生成數十個潛在問題時,分流 (triage) 的負擔就完全從發現者轉移到了維護者身上。

自動化發現的負擔

多年來,開源軟體的「眾多眼睛」理論認為,更高的能見度會帶來更安全的程式碼。然而,AI 時代引入了一個悖論:如果維護者被雜訊淹沒,更多的「眼睛」(以自動化掃描器的形式)實際上可能會降低安全性。

許多維護者現在正面臨大量的報告。當自動化工具產生真實的嚴重缺陷與誤報 (false positives) 的混合物時,緊張局勢就會出現。正如一位開發者所指出的,驗證漏洞的過程需要相當長的時間,如果沒有進行驗證,研究人員基本上是在用未經證實的缺陷對維護者進行「垃圾郵件攻擊」。

我發現自己很難為「在未經驗證的情況下直接向 OSS 維護者發送缺陷報告」這種做法辯護——如果我想做好這件事,驗證過程需要花費相當長的時間。

這創造了一個動盪的環境,維護者(通常是在業餘時間工作的志願者)被期望放下一切去修復由他們並未要求且未支付費用的工具所發現的漏洞。

開源與閉源在 AI 時代的對比

關於「採礦」的辯論引發了關於開源與閉源軟體相對安全性的更廣泛討論。傳統上,閉源軟體依賴於「透過隱蔽實現安全性」(security through obscurity)。然而,AI 正在侵蝕這一優勢。

現代 LLMs 變得越來越能夠將二進位檔 (binaries) 反向工程為可讀的程式碼。這意味著閉源軟體不再僅僅因為原始碼不公開而安全。如果 AI 可以對二進位檔進行推理,它就能發現與在公開的 GitHub 儲存庫中發現的相同的零日漏洞 (zero-days)。

相反,有些人認為開源軟體最終會更具韌性。雖然 AI 發現的錯誤 (bugs) 「海嘯」目前可能令人不堪重負,但這可能導致一個平台期,在此之後,最明顯的缺陷會從生態系統中被清除,從而提高整體程式碼品質的基準線。

永續性危機

除了技術挑戰之外,還存在著人性方面的挑戰。開源模式建立在志願主義之上,但安全性的期望已提升到了企業級別。公司依賴 OSS 來構建其關鍵基礎設施,但通常不為那些正遭受 AI 生成的錯誤報告轟炸的維護者提供任何財務支持。

這導致了幾個關鍵的爭議點:

  • 分流差距 (The Triage Gap): 報告錯誤 (bug) 的難易程度與修復它的難度之間存在巨大的差距。
  • 激勵機制問題 (The Incentive Problem): 如果沒有漏洞獎金 (bug bounties),高質量的研究人員就幾乎沒有動力在報告錯誤之前花時間驗證錯誤。
  • 維護者的困境 (The Maintainer's Dilemma): 維護者被迫在個人生活與使用其免費軟體的全球企業對其緊迫的安全需求之間做出選擇。

向前邁進:從雜訊到訊號

「採礦」式的 OSS 安全性研究是災難還是必要的演化?有些人將其視為「漏洞末日」(vulnerability apocalypse),而其他人則將其視為程式碼品質的階梯式增長。核心事實是,程式碼在 AI 發現缺陷之前就已經是有問題的了;了解缺陷的存在是修復它的唯一途徑。

為了在這個時代生存,生態系統可能需要轉向更嚴格的內部篩選流程,並可能需要改變我們資助維護關鍵 OSS 的方式。隨著攻擊工具變得更加容易獲取,防禦工具——以及為使用這些工具的人提供的資金——也必須相應地擴大規模。

Sources