2004
一個老毛病
PHP 是很多網站的引擎。已知伺服器端語言的網站裡,69.3% 用它(W3Techs)。購物車、論壇、政府網頁、wiki,常常都是它在後廚煮頁面。
這次的問題,可以想成「記憶體不夠時,事情做到一半就被叫停,後面的人卻把半成品當成品接著用」。這種味道,早就有人聞過:
- 2004 年,PHP 安全圈的前輩 Stefan Esser 找到第一個和記憶體上限有關的遠端漏洞。他覺得太嚴重,沒有公開利用方式。
- 2020 年,有人在問題回報系統登記 bug #78876:一個很長的變數把記憶體吃光,暫存檔也沒清掉。當時沒有掀起波瀾。
2024
健檢看到影子,卻停在原地
2024 年,PHP 做了多年來第一次外部健檢:德國主權科技機構(Sovereign Tech Agency)出錢,OSTIF 張羅,Quarkslab 執行。核心開發者在修別的東西時,看見了這個記憶體耗盡問題的影子,可是當時找不到一條真的打得到的路。
接著是取捨的難題。修法有好幾套,每一套都有代價:可能弄壞舊程式、可能帶來容易被打到當機的新風險,或是要求外面一大堆擴充套件跟著改。安全團隊人少,又習慣要全員同意才動手,工作因此停擺了幾個月。
修補當天,PHP 基金會沒有迴避,直接寫:
我們不打算裝作不是這樣:這次延誤是結構性失敗,原因既是安全團隊的決策方式,也是它缺乏資源。
We won't pretend otherwise: the delay was a structural failure, caused by both the security team's decision process and its lack of resources.
2026 年 5 月,基金會成立 Ecosystem Security Team,決策改成可以多數決。
AI
三組人,幾乎同時摸到同一面牆
2026 年,AI 進到現場。基金會與 Alpha-Omega 合作,用 Anthropic 的 Claude Mythos 掃描 PHP,再用 OpenAI 的 Daybreak Red 驗證回報。自 7 月起,他們發了 15 個 CVE,也清掉一百多份無效、重複或無法重現的回報——AI 讓信箱變忙,不全是驚喜。
Calif 的 Ryan Austin 參加 OpenAI 資助的 Patch the Planet。基金會說他 7 月 30 日開始看(另有說法寫 8 月 1 日,見說法打架)。8 月 11 日他回報,同一天 OpenAI 自己的人也獨立回報了同一個根源。Austin 後來說,他沒有用一般人拿不到的模型,也沒有秘密工具,「了解你的目標」依然管用。
Wiz 晚了幾週,但是獨立發現。8 月 19 日找到第一個問題,20 日在 Drupal、21 日在 WordPress 上確認,24 日回報 PHP。他們的自評被轉述得很廣:一個研究者一個星期做完的事,以前要一個世界級團隊做好幾個月。
9 月 18 日 OpenAI 又補了更多路徑;9 月 21 日 PHP 確認 Wiz 的報告,開始協調修補。大家約好先不說,等修補一起公開,這叫「禁運」。
外洩
禁運在記者會前裂開
原訂公開日是 10 月 22 日(確切鐘點有三種說法)。10 月 20 日下午,UTC 大約三點(台灣晚上 11 點),Hacker News 出現一篇貼文。編號是真的:CVE-2026-109618、CVE-2026-109619。分數是錯的:貼文寫 10.0,官方是 9.2。貼文隨後撤下,但截圖不會跟著撤。
台灣時間 10 月 21 日凌晨 3 點 30 分,PHP 發出預告:修補提前到當天晚上 10 點(UTC 下午 2 點)。watchTowr 在預告後幾分鐘發出常見問題,向媒體確認:洞是真的。之後 Calif 誤發了一段展示影片,刪了,副本留下。
真正讓「公開那天才是第一天」這個想法破產的,是 Amazon:他們的誘餌系統 MadPot 在 10 月 17 日就看到利用嘗試,比修補公開早四天。對方怎麼知道的,Amazon 說不知道。
Cloudflare 從 10 月初就在準備防護規則,10 月 21 日上午也替免費方案預設打開。下午 3 點 41 分(台灣),Chainguard 在協調發布前先推出已含修補的映像,基金會把這寫成單方面打破禁運。
晚上 10 點,修補準時上線:8.5.12、8.4.27、8.3.36、8.2.35。近 200 個檔案、超過一萬行程式碼。之後誘餌系統很快看到新的攻擊嘗試;同一天,Huntress 在自家客戶的機器上還沒看到。兩句話都留著——一個看的是誘餌,一個看的是真實客戶。
關站
全世界先拔插頭
接下來是新聞畫面:荷蘭、法國、比利時、芬蘭、德國的政府網站預防性下線;美國 NSA、英國 NCSC 建議不能立刻更新的系統考慮下線;日本首相在 X 上呼籲大家確認網站有沒有用 PHP;台灣數位發展部資通安全署通知各機關與企業。民間也有論壇、遊戲、維基媒體的部分系統緊急維護。
這些多半是預防。把服務關掉,不代表已經被駭,是為了不要被駭。
看熱鬧時,請不要做的事
吃瓜可以,但轉傳攻擊程式、轉傳「一鍵檢測腳本」、拿別人的網站試手氣,都不在看熱鬧的範圍裡。那些東西只會讓還沒更新的學校、診所和小店家更危險。
想幫忙的版本很樸實:問出自己管的網站用的是哪一版 PHP,或請主機商用文字確認是否已經更新並重新啟動。
