AIFlowTime 最新文章列表
最新技巧與應用

· Anthropic · Claude · 形式驗證 · Theorem

Claude 大規模形式驗證

Anthropic 與 Theorem 合作:用 Claude 在 RISC-V 組合語言層級,為 100 多個真實開源函式庫寫出安全性質證明,並在過程中找出多年測不到的 bug。證明仍有假設範圍,不是「從此零漏洞」。

Anthropic 形式驗證研究文官方主視覺
圖片來源:Anthropic

為什麼形式驗證突然比較可行

Anthropic Frontier Red Team 在 2026 年 10 月 22 日發表研究:與 Theorem 合作,展示大型語言模型能大規模產出形式證明,讓「被證明過的安全保證」比較有機會進入一般軟體流程。

形式驗證把程式變成數學模型,再證明它永遠遵守一組規則;失敗處往往指向可能的 bug。過去證明成本極高(文中舉 seL4:實作約 2 人年、驗證約 20 人年),多半只用於航電等關鍵系統。現在 Claude 能較自主地為真實軟體寫證明。

官方說這是他們所知首次大規模用 AI,在組合語言(assembly)層級對正式上線軟體做形式驗證。

Anthropic 形式驗證研究文官方主視覺
圖片來源:Anthropic

123 個函式庫、RISC-V、約 1.8 億行 Rocq

他們把 Google OSS-Fuzz 裡開發者寫的 fuzz 測試,轉成「這個測試對任何小於 64 MB 的輸入都不會崩潰」這類規格,並在編譯成 RISC-V、跑在 Linux 上的語意模型裡證明。

關鍵數字(皆官方自報):

項目 數字
成功證明無崩潰的入口點 239 個
涵蓋開源函式庫 123 個
Rocq 證明總量約 1.8 億 行
典型單份證明約 60 萬 行
二進位中位數指令數約 1.8 萬 條 RISC-V 指令

假設條件包括:單執行緒靜態二進位、固定記憶體預算、RISC-V CPU、Linux OS。證明由 Rocq kernel 檢查;開發者主要需信任 RISC-V/Linux 語意模型、定理陳述本身,以及 Rocq 檢查器。Anthropic 會公開部分證明與語意;Theorem 也提供幫其他專案跑同一管線,並釋出 Claude skill。

Anthropic 說明把 fuzz 測試變成證明的段落截圖
圖片來源:Anthropic 頁面截圖(2026-10-23)

證明過程中找到的長年漏網 bug

嘗試證明時,Claude 發現並修補了許多 fuzz 不太容易碰到的問題,例如:約 20 MB、特定稀有版面才觸發的解壓縮器計數器下溢與越界寫入;需要約 64 MB 輸入與逾 2 GB 記憶體的影像解碼越界讀;跨兩個檔案 handle 的特定呼叫序;以及在 libexpat 重新發現 CVE-2026-56132(需深度巢狀輸入)。也有從不崩潰的邏輯 bug,例如限制可載入檔案的功能並非總是生效。

其他案例研究包括:為 RFC 1950(zlib)寫規格並在 Linux 核心實作的 x86 二進位上證明;用 Verus 證明 Rust 寫的 Python 子集解譯器符合學術論文中的 CPython 語意,並以逾 170 萬 個隨機 Python 程式比對,99.95% 行為一致。文中也提到在廣泛使用的 PDF 閱讀器驗證過程中,一週找到的安全 bug 數量約等於平常一年通報量。

Anthropic 說明找 bug 與其他案例的段落截圖
圖片來源:Anthropic 頁面截圖(2026-10-23)

還不是「零漏洞」貼紙

官方自己列了限制:「形式驗證通過」≠ 真實世界零 bug。規格或機器語意若與實機不符,漏洞仍可能存在。目前證明多半針對單執行緒、靜態連結 musl 的 RISC-V 二進位,而多數人實際跑的是 x86/ARM 與動態 glibc。ASan 也偵測不到所有記憶體安全問題;未驗證的入口點與呼叫端誤用仍可能出事。

效率方面:在 36 個小型驗證任務上,Opus 5.5 證明其中一半時,比 Opus 5 大約少用 40% token;代理之間共用證明工作區時約再少 17% token。這些是 Anthropic 實驗數據。

本文建議:維護 C/C++ 關鍵函式庫的人,可先看 Anthropic/Theorem 公開的證明與 skill,挑一個已有 OSS-Fuzz 入口的專案試跑;把「規格假設」寫進威脅模型,不要把證明標題直接貼成行銷上的「絕對安全」。

Anthropic 研究文開頭段落截圖
圖片來源:Anthropic 頁面截圖(2026-10-23)
想成為 AI 高手?即刻搵 Jacob
看更多最新文章