推廣活動

Claude狂寫1.8億行證明!兆次測試漏掉的Bug,被AI一鍋端

RexAA
•
AI速讀
Anthropic 聯手 Theorem Labs 展現 AI 在極限安全驗證上的強大能力。透過將程式碼轉化為數學命題,Claude 成功對 123 個開源庫執行形式化驗證,生成 1.8 億行通過核驗的證明程式碼,挖掘出潛伏十餘年的高危漏洞及 x86 硬體 Bug,效能遠超 Google 的兆次模糊測試。研究顯示,AI 驗證速度每兩個月翻倍,且證明可復用,大幅降低成本。Theorem 預估至 2027 年底,可將 Nix 生態 95% 的機器碼納入證明,以數學手段為數字世界築起底層防線。

全球軟體的bug,要被Claude端掉了?

短短48小時,全球就爆了27起重大網路攻擊,現在人們都在瘋傳,「最暗十月」來了。


一早,Anthropic前沿紅隊團隊聯手Theorem Labs發佈了一份重量級報告——

他們讓Claude深入到底層彙編指令(RISC-V),向真實的生產級開放原始碼庫發起總攻。

短短幾周,Claude拿下了123個開放原始碼庫中的239個測試入口的形式化驗證,狂飆1.8億行Rocq數學證明程式碼,全部通過機器核驗!

Google平台跑了上兆次都沒撞出來的隱秘漏洞,連同潛伏十餘年的高危邏輯死角,甚至x86處理器硬體本身的真實缺陷,在這場大清剿中悉數現形。

更誇張的是,在一個熱門的PDF閱讀器中,Claude一周挖出的安全漏洞,直接頂得上它通常一整年的報告量。

Image
Image


這一次,Claude把找Bug、修Bug和驗證修復連成一條流程,展開了一場「數學級」Bug清掃。

席捲全球的網路安全危機,或許真的有救了。


兆次測試漏掉的Bug

被數學逼了出來

過去十年,開源世界最倚重的防線之一,是Google在2016年推出的OSS-Fuzz。

這套方法叫模糊測試,往程序入口裡成批灌半隨機的輸入,看那一個能把程序搞崩。它累計跑了上兆次測試。

但模糊測試終究是在迷宮裡碰運氣。它的輸入通常被限制在1MB以內,只要還有一條路沒走過,那裡的Bug就能一直藏下去。

研究團隊這回把測試入口改寫成了一道數學命題,在設定條件下,小於64MiB的任意輸入,都不會觸發約定的崩潰,包括斷言失敗和ASan記憶體檢測工具能捕捉的錯誤。

Claude要做的,就是證明它。一次跑通不算數,規定範圍內的每一種輸入、每一條能走到的路徑,都必須被證明不會觸發上述錯誤。

證明一旦卡住,要麼是Claude還沒找到證法,要麼是程序裡真有Bug。找到Bug後,Claude會自己打補丁,然後接著往下證。

於是,那些躲在測試搆不著的角落裡的Bug,現形了。

某個解壓器裡藏著一處計數器下溢,會把資料寫到記憶體邊界之外,可只有喂進約20MB、排布又很罕見的輸入才會觸發。

研究團隊稱,光是嘗試證明的過程,就揪出了數百個Bug。

測試和證明到底差多少,研究人員在Claude用Rust寫的Python直譯器裡,故意埋了7個Bug。

隨機測試放跑了其中5個,最後證明一個都沒放過。

Image
Image

狂跑391行程式碼,63萬行證明

這批證明,做在了最底層。

Claude證明的對象,是編譯之後真正在CPU上運行的RISC-V機器碼。原始碼和編譯出來的程序未必完全一致,只有證到機器指令,證明的才是實際跑起來的那個程序。

為此,Theorem先把RISC-V指令和Linux處理程序的行為寫成了數學模型,目前的證明就建立在這套模型之上,限定在單線程、靜態連結、固定記憶體預算的環境中。

證到這一層,工程量開始爆炸。JSON解析庫cJSON的一個解析入口只有391行C程式碼,Claude為它寫了63萬行Rocq證明。

膨脹上千倍,是因為證明要覆蓋整個處理程序。C程序的啟動、記憶體分配器、printf、記憶體檢測工具自己的執行階段,全都要一併證明,和cJSON本身有關的只佔十分之一。

整個項目裡,Claude累計寫了約10億行證明,最後約1.8億行通過了檢查。其中超一半,是Claude給自己寫的工具自動生成的。

最後把關的,是Rocq證明檢查器,它按邏輯規則逐步驗算,一份證明要花30分鐘到幾個小時的CPU時間。檢查器確認的是證明符合規範,人類仍要審查規範和機器模型是否對應真實需求。

模型寫得再流暢,過不了檢查器,就一行都不算數。寫出這樣規模的證明,放在過去是一個不敢想的工程量。

傳奇微核心seL4,寫程式碼只用了2人年,給它做完形式化驗證卻花了整整20人年。所以幾十年來,這種等級的安全保證,只有空巴飛控這類人命關天的程式碼才用得起。

而這一次,123個開源庫,Claude只用了幾周。

Claude給晶片寫了一套數學

順手揪出硬體Bug

要說Claude證明能挖得有多深,看一眼cpp-httplib就知道了。

為了排除遞迴太深、撐爆棧記憶體的可能,Claude追進了C++標準庫libc++的紅黑樹,在機器碼上證明這棵樹的高度始終被壓在對數等級。樹的高度受控,銷毀時的遞迴層數才有上限,才能繼續證明棧空間不會被耗盡。

它先把zlib壓縮格式的標準寫成形式化規範,再證明Linux核心自帶的zlib實現完全符合它。

這一回,證明做在了x86機器碼上。而x86指令集的數學模型,是Claude完全自主寫出來的。

這套模型準到什麼程度呢?在模型裡一條指令一條指令地單步推演,能在Linux核心上把Ubuntu的使用者態完整啟動起來。

寫模型的過程中,Claude找出了x86官方參考文件裡的數百處錯誤,還發現了少量藏在CPU硬體本身裡的Bug。

從軟體一路證到晶片,AI已經在幫人類重新核對整台電腦的地基。

證明速度兩個月翻一番

1.34億美元的驗證路線圖

形式化驗證最大的門檻是貴,一份證明往往要燒掉數億token。如今這筆帳,正在飛快變小。

Anthropic用36個小型驗證任務做了測試,Opus 5.5完成其中一半所需的token,比Opus 5少了約40%。

Theorem測了今年5月到9月發佈的7款前沿模型,驗證速度大約每兩個月翻一番。

而且,證明可以復用。

Agent們共享工作區之後,同一組任務少花了17%的token。libcups、freerdp、libzmq這幾個八竿子打不著的項目,共用了運行庫等底層程式碼,因此大段證明都是從別人證好的部分抄過來,改一改就用上了。

順著這個思路,Theorem算了一筆以Nix軟體生態為樣本的總帳。

在Nix軟體生態裡,只要9MB的共享基礎庫,就是三分之二機器碼的全部依賴。光是OpenSSL一個庫,就出現在近1.6萬個軟體包的運行依賴裡。

按今天的價格,把OpenSSL證穿一次約22萬美元,攤到每個下游軟體包,只要14美元左右。

Theorem推算,如果驗證能力保持兩個月翻倍,並按每年1億美元的預算推進,到2027年底,總成本約1.34億美元,就有望把Nix生態95%的機器碼納入證明。

作為對照,GovAI估計,全球網路犯罪相關損失、應對和防禦支出,每年合計約5000億美元。

全球網安至暗48小時,讓數學來兜底

Linux核心是全世界測試得最狠的軟體之一,9月的一份Debian核心安全公告,就列出了1000多個漏洞。前沿大模型已經能把幾個看似無害的小Bug,串成一條致命的攻擊鏈。

找Bug的AI越來越強,靠人類一個個打補丁,已經追不上它的速度。

論文作者之一Aengus Lynch寫道,「對網際網路來說,這是一段可怕的日子。我相信,這是一束希望之光。」

他還相信,終有一天,Theorem會把所有關鍵軟體都形式化驗證一遍。

現在,首批25個庫、60個入口的證明已經在GitHub公開,任何人都能下載下來,親手驗算一遍。

寫程式碼的機器越來越多,人類也正在把一條路走通,讓支撐數字世界的關鍵程式碼,都帶上一份數學證明。(新智元)