PHP 官方 10 月 21 日一次釋出四個安全版本:8.5.12、8.4.27、8.3.36 與 8.2.35,修補 CVE-2026-109618 與 CVE-2026-109619 兩個漏洞,CVSS v4.0 評分皆為 9.2。未經驗證的遠端攻擊者即可利用,最壞的結果是遠端程式碼執行。官方在公告中表示,沒有完整的暫時緩解辦法,升級是唯一徹底的解法。
發現這組漏洞的是雲端資安公司 Wiz,並將這次事件命名為 PHP2Shell。Wiz 的研究團隊在挖掘漏洞的過程中,用到了自家的 Wiz Atlas,以及 Google 的 Gemini 4 Argon 和 OpenAI 的 GPT-5.6 Sol。
問題出在引擎本身
兩個 CVE 背後共有四個缺陷:上傳進度反序列化器的 use-after-free、遠端讀取行程記憶體、致命錯誤回溯的 use-after-free,以及 OPcache 的型別混淆。共同的根源在於 PHP 處理致命錯誤的方式,尤其是記憶體耗盡所導致的那一類。
請求異常終止後,內部狀態中會殘留已損毀的資料;同一個工作行程接著處理下一個請求時,又把這些過期狀態拿來重複使用,於是出現記憶體洩漏或記憶體損毀。攻擊者即使不執行程式碼,也能從行程記憶體中讀出密碼、權杖與 API 金鑰。
漏洞出在 PHP 引擎裡,與上層應用程式寫得安不安全無關。Wiz 在 WordPress、Drupal、Joomla 的最新容器映像檔上都示範了攻擊,一個只輸出 Hello World 的頁面也可能中招;應用程式從未呼叫過 session_start(),記憶體洩漏照樣成立。受影響範圍一路追溯到 PHP 5.4,過去十年釋出的每個版本,至少都會踩到其中一個問題。
AI 在哪個環節出了力
Wiz 的時間線是:8 月 19 日發現第一個漏洞,8 月 24 日回報給 PHP 安全團隊,9 月 21 日 PHP 確認並開始準備協同修補,10 月 21 日公開。從回報到修補上線將近兩個月,大部分時間花在修補與協調上。
依 Wiz 的說法,Argon 參與了發現漏洞、撰寫攻擊程式、偵測攻擊與驗證修補等幾個環節;大型模型協助研究員把攻擊程式碼調整到適用不同的 PHP 版本、設定與記憶體配置,失敗了就分析原因再反覆調整。Wiz 的原話是:
"Frontier AI models substantially reduced that barrier, turning a longstanding flaw into an exploit."
(前沿模型大幅降低了門檻,把一個存在已久的缺陷變成了可用的攻擊程式。)
Wiz 稱一名研究員一週內完成了過去頂尖團隊要花好幾個月的工作。OpenAI 也針對這次協同揭露發表了文章;公開報導提到,OpenAI 還釋出了一個 Codex 技能,協助網站檢查自己是否受影響,至於具體涵蓋哪些情境,目前無法逐項查證。
中國舊網站的麻煩
中國有大量中小型網站、企業官網與論壇跑在 PHP 上,用的往往是建站面板一鍵安裝的環境,版本停在 7.x 的並不少見。從官方釋出清單來看,這次修補只涵蓋 8.2 到 8.5 四條分支,7.x 早已停止支援,拿不到官方修補;8.2 也只維護到今年 12 月 31 日。
尚未升級的網站,Wiz 列出了幾個檢查跡象:異常的 multipart 請求之後緊接著出現記憶體超限錯誤、HTTP 500 反覆出現、PHPSESSID Cookie 異常龐大或格式錯亂、PHP 工作行程頻繁異常重啟。Cloudflare、Fastly、Google 等廠商已上線防護規則,套用 CDN 的網站能擋下一部分,但官方的結論沒有改變:打上修補才算完事。
參考來源:PHP 官方安全公告、Wiz 研究部落格、CocoLoop、OpenAI 安全公告;已查證修補版本號、CVE 編號與 CVSS v4.0 評分、受影響版本範圍。