返回趨勢情報
趨勢情報

php2shell:CVSS 9.2、從 PHP 5.4 藏超過十年;Calif 用 Sol、Wiz 用 Argon 做出未登入遠端執行,NSA 說補不了就下線

2026年10月22日
易賺Ai團隊
16 分鐘閱讀
#OpenAI#CVE#php2shell#Wiz#PHP
php2shell:CVSS 9.2、從 PHP 5.4 藏超過十年;Calif 用 Sol、Wiz 用 Argon 做出未登入遠端執行,NSA 說補不了就下線

芬蘭政府的公共網站先暗了。國家 ICT 中心 Valtori 說這是預防措施,不是已經被打進去。食品局關掉食物中毒通報、植物檢疫憑證這類系統;學術網路 CSC 也下了部分服務。荷蘭國家公共衛生與環境研究所、國會下院 Tweede Kamer 的網站跟著消失。美國國家安全局在 X 上寫:補不了,就把系統從網上拿下來。這些漏洞常常能直接摸到伺服器檔案系統或資料庫。

漏洞不在哪一家的外掛,而在 PHP 自己。Cloudflare 寫,全球大約七成網站跑 PHP;TechCrunch 轉述有人估超過 3,300 萬個站。WordPress、Drupal、Joomla、Magento、MediaWiki 都坐在上面。Wiz 在官方部落格把這組問題叫做 php2shell,並寫「軟體史上最嚴重的漏洞之一」——BBC 引述時加了一句,這個數字他們核不到。PHP 基金會自己的用詞比較乾:兩條嚴重遠端程式碼執行,條件對了,沒登入也能在伺服器上跑程式。

編號是 CVE-2026-109618 與 CVE-2026-109619。兩條的 CVSS v4.0 都是 9.2。網路上曾流出 10.0,基金會說那是錯的。修補版是 PHP 8.5.12、8.4.27、8.3.36、8.2.35。8.1 與更舊的版本,官方已不維護,只丟了 7.4/8.0/8.1 的最小原始碼回移植,其餘靠發行版與長支援廠商。

官方沒有公布「已被大規模成功入侵」的確認清單。Datadog 寫 AWS 在公開前四天、也就是 10 月 17 日就看到利用嘗試;Cloudflare 說洩漏之後客戶端已出現攻擊流量,而且攻擊者在改攻擊內容想繞過規則。OpenAI 的說法是:就他們所知,前沿模型比攻擊者先找到,這段空檔叫 Defender's Window。三邊數字對不上,現階段能核到的是:嘗試已經出現,基金會在發布當下沒指認到可運作的公開利用。

這件事會變成當天頭條,不是因為又多了兩條 CVE,而是因為發現它的方式。Calif 用 OpenAI 的 GPT-5.6 Sol;Wiz 用自家 Atlas、Google 的 Gemini 4 Argon,以及同一顆 Sol。兩邊都獨立走到遠端執行。漏洞本體在引擎裡躺了超過十年。

兩條洞各做了什麼,修補表長這樣

說白話:PHP 處理一次網頁請求時,會向記憶體借位子。請求突然失敗——最常見是觸到 memory_limit,或遇到致命錯誤——清理動作可能沒做完。下一次、同一個工作行程再接請求,就可能踩到沒初始化完、或已經釋放掉的內部狀態。109618 走「記憶體不夠、清理時把半成品當成品」;109619 走「致命錯誤留下過期指標,下一筆請求拿來用」。兩條都長在幾乎每筆請求都會碰到的記憶體管理與錯誤處理上。

這層在應用程式之下。Datadog 獨立重現 109618 時,惡意請求根本進不了網站自己的程式;PHP 在清理失敗請求的過程中就把攻擊者的指令跑掉了。網站有沒有登入牆、外掛寫得乾不乾淨,擋不住這條路徑。PHP 的公告把風險範圍寫成:所有對外提供網頁請求的安裝,包括 Apache mod_php、PHP-FPM、php-cgi、FrankenPHP、LiteSpeed。風險最高的是 mod_php:未認證請求可以在應用程式碼跑起來之前觸發。

分支受影響第一個修補版
8.58.5.12 之前8.5.12
8.48.4.27 之前8.4.27
8.38.3.36 之前8.3.36
8.28.2.35 之前8.2.35
8.1 及更舊官方已停止維護最小原始碼回移植;看發行版

Wiz 把四個可利用實例收進兩條 CVE,並在 WordPress、Drupal、Joomla 當時的官方容器映像上示範未登入遠端執行。他們強調:示範用這些內容管理系統,是因為它們常見,不是因為洞在它們身上。一個只印 Hello World 的 PHP 腳本,只要引擎版本對得上,路徑就在。另一條獨立路徑能讀工作行程記憶體,裡面可能有密碼、工作階段識別、API 金鑰、憑證——不一定要先拿到遠端執行。

基金會寫,兩個問題都卡在「幾乎每筆請求都會碰到」的位置,所以難修:改錯了會弄壞相容性、弄出新的拒絕服務,或逼第三方擴充套件一起改。2024 年 Quarkslab 幫 PHP 做外部稽核時,基金會約來的核心開發者已經看到 109618 背後那組記憶體耗盡問題的苗頭。當時推得出理論攻擊,推不出具體路徑,其他更具體的洞把它壓下去。安全組在幾套修法之間達不成共識,修補停了又重開,停了好幾個月。基金會自己寫:這是結構性失敗,決策流程加上人手不夠。

誰先找到,時間線怎麼對

Calif 是 OpenAI「Patch the Planet」計畫裡的資安公司,7 月 30 日開始稽核 PHP。8 月 11 日,Calif 研究員 Ryan A 報了一條無條件遠端執行,根因就是 2024 年那組記憶體耗盡問題。OpenAI 同一天獨立報了同一根因;9 月 18 日又補了更多攻擊路徑。Wiz 的時間線自己寫:8 月 19 日用 Atlas、Argon、Sol 找到第一個洞;20 日在 Drupal 上確認未登入遠端執行;21 日 WordPress 也過;24 日正式報給 PHP 安全組。PHP 9 月 21 日確認並開始做協調修補。

從 8 月 11 日起,這件事變成基金會安全人力的第一優先。他們後來加了 OpenAI 的 Daybreak Red 來驗證報告與利用,也用過 Anthropic 的 Claude Mythos 掃過程式。7 月 1 日以來,安全組發了 15 條 CVE,另外消化超過 100 份無效、重複或無法重現的報告。AI 幫忙分群與驗證,每一個判斷與每一個修補仍是人做的。

日期(2026)發生什麼
8 月 11 日Calif 與 OpenAI 同日報同一根因
8 月 19–24 日Wiz 找到、在 Drupal/WordPress 確認、正式通報
9 月 21 日PHP 確認並開始協調修補
10 月 20 日 15:00 UTC兩條 CVE 編號在論壇流傳,時間與 CVSS 都是錯的
10 月 20 日 19:30 UTCPHP 提前預告;原定 22 日 14:00 的發布改到 21 日 14:00
10 月 20 日約 20:00 UTCCalif 誤把示範影片公開,刪了之後拷貝還在轉
10 月 21 日 03:02 UTCCloudflare 對免費與付費 WAF 預設開防護
10 月 21 日 07:41 UTCChainguard 提前發布含修補的映像,打破禁運
10 月 21 日 14:00 UTC修補版公開

協調披露本來要撐到 22 日。20 日下午編號先流出,沒有技術細節,卻帶錯發布時間與 10.0 分數。基金會把預告提前,發布往前挪一天:再往前,發行版還沒包好套件;再往後,編號已經在街上。Calif 那支被誤發的影片,讓各種概念驗證加速出現。21 日清晨,Chainguard 單方面把含修補的映像公開——發行商本來是為了「官方一宣布,用戶立刻能更新」才提前拿到補丁。任何攻擊者這時都能從二進位對修補。基金會寫:這無視了好幾週的協調。

OpenAI 把這整段空檔命名為 Defender's Window:維持者與基礎設施商趕在公開前準備修補與防護。他們說與白宮 Super Intelligence Force、國家網路總監辦公室、CISA 以及國際對口單位有接觸。CISA 發了緊急告警,要求立刻更新。英國 NCSC、歐盟 CERT-EU、澳洲對口單位、日本內閣網路安全單位都發了類似指引:來不及修,就考慮把系統隔離或下線。日本首相高市早苗在 X 上要大家檢查公開網站是不是跑 PHP。白宮說聯邦機構正在跟領先實驗室加速處理。

這跟站內寫過的 Sol、Luna 開賣對得上型號:Calif 用的是 GPT-5.6 Sol。ChatGPT 一般對話後來把付費層換上 GPT-6、免費 Go 用 Luna,Sol 仍是寫程式與代理工作那一檔,見 一般對話換上 GPT-6。Argon 則是 Google 先給 Fairwind、再放進 Pro 與付費 API 的那顆,見 Gemini 4 Argon 開進 Pro。

網站為什麼會整片消失

PHP 不是瀏覽器裡的東西,是伺服器端語言。一般訪客感覺不到它,直到網站不見。BBC 寫,維基媒體基金會為了修補,預防性關掉一批系統,有人當天進不了維基百科的部分頁面。愛丁堡市議會網站打不開;BBC 自己若干節目頁——包括 Doctor Who、《The Traitors》——也掛了,但這兩處尚未確認跟 PHP 有關。DeviantArt 顯示維護中,沒說原因。Huntress 的說法比較貼現場:PHP 安靜地撐著內容管理、共享主機、控制面板,以及一堆根本不對外承認自己跑 PHP 的器具與管理介面。

Sophos Counter Threat Unit 的 Don Smith 告訴 BBC:當務之急不是按一個「更新」按鈕,而是找出每一處 PHP 還在跑。它可能在公開網站下面,也可能在第三方產品裡。CERT-EU 把風險寫成未認證遠端程式碼執行,攻擊者理論上能裝惡意程式、把站拿下來。Cloudflare 技術長 Dane Knecht 說,早期攻擊已經出現,他們跟著新路徑改規則。

Wiz 的重點不是「AI 比較會找 bug」,而是經濟帳翻了。這組洞要串多個缺陷、還要對每個目標的記憶體配置做調整;換一個 PHP 版本、換一套設定,假設就破。以前這種手工活難規模化。有了大型語言模型,同一組利用可以對不同版本、設定、記憶體配置做改寫,失敗了再迭代。他們寫:單一研究員一週做完以前世界級團隊要幾個月的事。Google DeepMind 負責 Gemini 安全的 Raluca Ada Popa 為此發了聲明,稱 Argon 讓防禦端補上這段差距。

同一套能力也給攻擊者。OpenAI 自己在協調披露文裡寫:這凸顯 AI 能挖到有互聯網級影響的缺陷,同一能力也能幫攻擊者快速做出進攻工具。他們宣布再砸 10 億美元,補貼 Daybreak for Frontline Defenders,對保護關鍵服務、安全資源不足的組織。基金會則在文末直接要錢:依賴 PHP 的公司、主機商、雲、政府,請按依賴程度贊助;德國 Sovereign Tech Agency 資助 2024 年稽核,被拿來當公共投資的例子。

修了就算完?現場還沒有那麼乾淨

唯一完整修法是換引擎。改網站程式、停外掛、加登入牆,都不算修到。Cloudflare 從 10 月初就在做 WAF 規則,公開前約 9 小時對免費與付費方案預設開啟,並為此做了新的「完整交易偵測」:請求看不夠,要把同源回應一起看,才能在誤殺不多的情況下擋。他們仍寫:WAF 是多一層,不是替代修補。

社群流傳的暫時手段,Datadog 與 PHP 自己都說不完整。例如關掉 session.upload_progress,擋不住全部路徑。PHP 為 109618 寫過管理員層把 memory_limit 設成不限制、再在前端與容器加請求與記憶體上限;又警告不要用作業系統行程限制去硬砍,因為那類限制本身就可能觸發這條洞依賴的配置失敗。109619 要在請求解析前載入的設定裡改,並重啟每一個工作行程。這些都是撐時間,不是補丁。

還有一批人根本碰不到 php -v。家電、網路設備、管理介面、廠商自己打包的直譯器,管理員不能直接升級 PHP,只能等供應商。NCSC 要組織在打完官方補丁之後,繼續盯第三方、器具、打包服務。容器映像也要重建、重佈,舊工作行程要換掉,不然修過的套件跟線上跑的不是同一個。

Chainguard 提前公開修補映像、Calif 影片外流、編號提早在街上走,這三件事把 Defender's Window 剪短了。基金會在發布當下檢查過流傳的概念驗證,沒指認到可運作的公開利用;Cloudflare 與 Datadog 看到的是嘗試與改寫中的流量。兩種敘事可以同時成立:完整利用腳本未必已經滿街跑,掃描與試探已經開始。

站內同一週還寫過 Anthropic 把網安驗證拆成三層、公開題全擋、紅隊測試卻近乎沒防護,見 Glasswing 與三層驗證。那是模型產品的防護欄怎麼被繞。php2shell 是另一邊:模型幫人把十年沒人做成利用的引擎缺陷,做成未登入遠端執行。一邊在測模型會不會聽話,一邊在測模型會不會把整個 Web 的地基翻開。

OpenAI 還丟出一組他們想跟資安社群辯的問題:披露窗口該留多久、什麼證據該提前公開、政府能不能在失去管理權之後用漏洞去補自己的系統、要不要做到全網常駐掃描已知洞。這些都還沒有答案。眼前能核的比較窄:你的對外服務、容器、器具、主機商,跑的是不是 8.5.12/8.4.27/8.3.36/8.2.35,或者發行版已經回移植的套件。版本對不上,NSA 的那句話仍然有效——補不了,就先從網上拿下來。