OpenAI 找出 PHP 漏洞,但真正關鍵的是接下來那兩個月

PHP 撐著大約七成的網站。這個月,OpenAI 說它的模型——包括 GPT-5.6 Sol——幫研究人員在裡面找到了關鍵的安全漏洞。這句話是標題。下一句才是故事:這家公司接著花了兩個月,跟一批維護者和安全廠商組成聯盟,先把修補做出來、測完,才對外公布。
兩個月的沉默不是一個公關週期。那恰恰是漏洞處理裡最沒有人願意截圖發出來的那一塊。
協同揭露才是真正的產品
用模型找 bug 現在很便宜。一個夠可靠的 agent,給它一個 shell、一份原始碼、幾個小時,產出的候選崩潰比人工審同一份程式碼快得多。其中大部分是垃圾,而把垃圾跟真正的記憶體安全問題分開,成本就轉移到這裡。
OpenAI 這次做的事——至少它自己說的是這樣——是那段不好看的中間環節:組聯盟、逐條驗證候選、寫修補、在整個生態裡測試、敲定揭露日期,最後才發布。正是這個順序,讓一個 PHP 漏洞沒有變成針對 WordPress 站的狂歡週末。
這也意味著真正的問題不是「模型有沒有找到東西」,而是這套安排能不能複製。聯盟能成立,是因為有一方資源充足的人來召集。它顯然沒辦法直接套用到成千上萬個開源專案上——它們和 PHP 躺在同一張相依圖裡,卻沒有人能召集任何東西。
{{INLINE1}}這個檢測工具很誠實地承認自己做不到什麼
和揭露一起,OpenAI 還放出了一個 PHP 版本檢測工具:一個 Codex skill 加一個 Node 命令列工具。把它指向某個站,它會掃 HTTP 標頭,然後給出 OK、VULNERABLE 或 UNKNOWN。
這個方法值得細看。它只是把標頭裡的版本字串跟已知的修補分界線做比對,本身不做任何獨立驗證。這是刻意的設計選擇,換來的是一個有三種誠實輸出的工具,而不是一個只有兩種不誠實輸出的工具。
基於標頭的偵測有個眾所皆知的失效情境:大量生產環境的 PHP 部署都在版本上說謊——可能是反向代理重寫了標頭,可能是標頭被剝掉了,也可能是多年前有人把 expose_php 關掉,現在沒人記得。UNKNOWN 就是為這種情況準備的。一個會說「我看不出來」的工具,比一個說「你沒事」的工具更有用。
發布通路是另一個有意思的細節。它是當成一個 Codex skill 發出來的,不是網頁應用,也不是 GitHub Action。這其實是在表態:OpenAI 認為接下來的安全初篩會發生在哪裡——就在那個已經在讀你 repo 的 agent 裡。
模型是怎麼找到記憶體 bug 的
「AI 找到了漏洞」這句話被用來指三件不同的事,所以機制值得說準一點。
第一種是配了更聰明排程器的 fuzzing。覆蓋率引導的 fuzzer 找 PHP 的 bug 已經找了十年;模型加進來的是讀修補的能力——猜出哪條相鄰的程式路徑現在變得可達,然後寫出能跑到那裡的 harness。這確實有用,而且一點都不神奇。
第二種是在原始碼上做推理。給一個先解析長度前綴、再配置記憶體的函式,強一點的模型會指出整數溢位,並給出一個候選輸入,全程不執行任何東西。偽陽性大多來自這裡,因為模型看不到三個檔案之外那個老早就把值限死的呼叫方。
第三種是初篩。把幾百個候選分成「大概是真的」「大概是雜訊」「得人來判斷」,這是最少被討論、大概也最值錢的用法,因為正是這一步決定了安全團隊到底有沒有時間去看任何東西。
只有第三種能脫離聯盟規模化。這也就是整場發布裡那個不太被說破的問題:模型那部分工作,任何有 API key 的人都能複製;協調那部分不能。
十億美元的使用額度
OpenAI 還承諾了 10 億美元的 Daybreak 使用額度,給第一線防禦者。這該被理解成基礎設施,而不是慈善。檢測工具只有在用得起的人手上才幫得上忙——用得起的意思是,能照著攻擊到來的頻率去跑。免費額度能讓一家醫院的 IT 團隊查一次;十億美元承諾的算力,能讓他們一直查。
底下還有一層戰略邏輯,值得點明。如果模型供應商變成了安全工具的上游,他們也就變成決定哪些漏洞先被發現、以及先告訴誰的那一方。這是把大量判斷權集中在一個商業實驗室裡,而上面那套揭露流程,恰恰決定了這種安排能不能被信任。
這也是個招人的論據。安全研究員很稀缺,而一個能指著「我們花了兩個月,把全網最流行語言的漏洞協同修好」的實驗室,故事比發一個 benchmark 好聽得多。
如果你在維運一個站,這意味著什麼
這週就去查你的 PHP 版本,而且要從你的網路外面查,因為那才是攻擊者看到的東西。如果標頭什麼都告訴不了你,那你有一件沒有任何掃描器能替你做的事,因為唯一可靠的答案在機器上的套件管理器裡。
然後想想這個模式,而不是這起事件。模型沒有取代安全團隊。它改變了比例:候選更多,初篩更多,能拍板的人還是那麼多。每個採用這些工具的組織,都得在某個地方把初篩能力建起來;不建的那些,最後會積下一堆沒人讀的發現,看起來跟根本沒掃過一模一樣。
會被忘掉的那部分
還有一點值得注意:這次發的是版本檢測工具,不是自動修補的工具。沒有人給站長一個一鍵修復,因為一鍵修復鋪到七成網頁上,本身就是一次大規模故障。這裡選保守是對的,同時也註定了會留下一長串沒修的安裝,而下一次事故就從那裡來。
半年後,這件事的總結會變成「AI 找到了 PHP 的漏洞」,而這是所有真話裡最沒意思的一句。真正能帶走的一課無聊得多:價值在那兩個月的協同工作裡,模型的貢獻只是讓這個過程的頭一週快了一點。
這仍然是大事件。只是不是發布稿在賣的那個大事件。安全工作從來主要是協調,而最有用的工具,是讓協調變便宜的那些,不是讓「發現」變響的那些。
相關文章
用 LLM 代理組出一間交易公司:117,000 顆星,先讀免責聲明
分析師、看多、看空、交易員、風控、投資組合經理——組織圖就是架構,而 README 裡那句關於非決定性的提醒,才是全文最重要的一行。
225,000 顆星只為一份 markdown:Karpathy 的抱怨變成四條規則
沒有程式碼、沒有建置、沒有基準測試:四條原則寫進一份 CLAUDE.md,比今年大多數能力發布更受關注,而這個落差本身就是新聞。
Cloudflare 開源了自用的稽核器:重點是它會反駁
六個階段、三種結論,還有一條最要緊的規則:檢查 finding 的 agent 永遠不是發現它的那個;Cloudflare 也承認單次執行大約只找到一半。
Impeccable:62 條不必靠模型的規則,專門抓 AI 味
滿畫面 Inter、紫色漸層、卡片裡再塞卡片,一個給編碼代理用的設計技能用 24 個指令和 62 條確定性規則,在 CI 裡零 token 攔下這些套路。