2026 年 10 月 21 日,PHP 官方緊急發布安全更新,修補兩個合稱 php2shell 的嚴重 PHP 漏洞(CVE-2026-109618、CVE-2026-109619),風險評分 9.2 分(滿分 10 分)。
如果你的網站是 WordPress、WooCommerce,或其他用 PHP 寫的網站,這件事跟你有關。
這篇文章會用白話說明:
- php2shell 漏洞是什麼
- 為什麼網站什麼都沒改,還是有風險
- 怎麼確認你的網站已經修補好
php2shell 是什麼?
PHP 是一種網站程式語言,全世界大約七成以上的網站靠它運作,WordPress 也是用 PHP 寫的。
php2shell 是 PHP「引擎本身」的漏洞,不是某個外掛或佈景主題出問題。攻擊者不用登入,也不需要帳號密碼,只要對網站送出特製的請求,就有機會在主機上執行自己的程式。資安術語叫「遠端程式碼執行」(RCE)。
| 項目 | 內容 |
|---|---|
| 漏洞名稱 | php2shell(CVE-2026-109618、CVE-2026-109619) |
| 公布日期 | 2026 年 10 月 21 日 |
| 嚴重程度 | CVSS 9.2,嚴重 |
| 需要登入嗎 | 不需要 |
| 受影響範圍 | PHP 5.4 以後的版本,預設設定就有這個漏洞 |
| 已修補版本 | 8.2.35、8.3.36、8.4.27、8.5.12 |
注意
官方還沒公布,攻擊就已經開始了。
資安公司發現,修補釋出前幾小時、甚至前幾天就有人在攻擊。美國資安署(CISA)也在 10 月 26 日,把它列進「已知遭利用的漏洞」清單。
為什麼它會壞掉?用白話說明
可以把 PHP 想像成一間餐廳的廚房。
步驟一 每位訪客進來,PHP 都會先「整理點單」
訪客送出表單或上傳檔案時,PHP 會先把收到的資料整理好,整理完才交給 WordPress 處理。
這個步驟發生在你的網站程式碼執行之前。
步驟二 攻擊者故意送一張「超大點單」
每個 PHP 請求能用的記憶體有上限。攻擊者故意送出一份特別大、特別複雜的表單資料,讓 PHP 整理到一半就把記憶體用完,程式只好中斷。
步驟三 中斷時,留下整理到一半的半成品
問題就出在這裡。PHP 在中斷前,已經先在帳本上記了「這裡有一筆資料」,可是那筆資料其實還沒放好。
就像點單本上已經寫了「第 5 道菜」,菜還沒做,廚師就被叫走了。
步驟四 收拾的時候,把半成品當成真的
請求結束時,PHP 會照著帳本收拾所有資料。它看到「第 5 道菜」就照常處理,結果拿到的是一塊沒整理過的記憶體,裡面可能是攻擊者事先塞進去的內容。
另一個漏洞的情況也類似。同一個 PHP 程序接著會服務下一位訪客,上一位留下的殘渣如果沒清乾淨,下一個請求就會讀到「已經丟掉的舊資料」(術語叫 use-after-free)。
步驟五 攻擊者趁這個空隙執行自己的程式
這些被當成真資料的殘渣是攻擊者控制的,所以他們有機會讓 PHP 執行他們指定的指令,最後拿到主機的執行權限。

流程整理
- 訪客送出特製表單
- PHP 整理資料(WordPress 還沒開始跑)
- 記憶體用完,整理到一半被中斷
- 帳本記了資料,實際內容卻是殘渣
- 收拾時或下一個請求把殘渣當真
- 攻擊者控制的內容被執行,網站被入侵
為什麼外掛、防火牆擋不住?
因為整個過程發生在 WordPress 啟動之前。
WordPress 的資安外掛、登入限制、驗證碼,都要等 WordPress 跑起來才開始工作。這次的問題出在更前面的「PHP 整理資料」階段,網站本身寫得再乾淨也沒用。
研究人員還發現,這個漏洞可能透過 Cookie,把伺服器記憶體裡的其他資料洩漏出去,例如別人的登入資訊或金鑰。
哪些網站會受影響?
只要網站用 PHP 運作,而且還沒更新到修補版本,都在影響範圍內:
- WordPress、WooCommerce 網站
- Magento、Drupal、Joomla 等系統
- 自己用 PHP 開發的網站
不管主機用 Apache、Nginx 搭配 PHP-FPM,還是 LiteSpeed,都包含在內。
舊版 PHP 要特別注意
PHP 7.3 以前的版本官方已經不再維護,不會有官方修補。如果你的網站還在用很舊的 PHP,請盡快找主機商或工程師處理。
怎麼確認我的網站已經修補?
步驟一 先看主機商的公告
大部分網站放在主機商那裡,PHP 由主機商管理。這次很多主機商都主動處理了。例如 Cloudways 在 10 月 21 日先部署臨時防護,隔天就完成全平台修補。
先到主機商的狀態頁或客服信件,確認他們有沒有處理。
步驟二 檢查 PHP 版本
在 WordPress 後台依序點「工具」→「網站健康狀態」→「資訊」→「伺服器」,就能看到 PHP 版本。
修補版本如下:
| 你用的版本系列 | 修補後版本 |
|---|---|
| PHP 8.2 | 8.2.35 以上 |
| PHP 8.3 | 8.3.36 以上 |
| PHP 8.4 | 8.4.27 以上 |
| PHP 8.5 | 8.5.12 以上 |
步驟三 版本號沒變,不一定代表沒修補
有些主機用「回補」的方式修補,修補完版本號還是舊的。
這種情況光看版本號判斷不了。可以直接問主機商客服,或請工程師看 PHP 的編譯日期(Build Date)是不是在 10 月 21 日之後。
步驟四 不放心的話,查一下網站紀錄
如果網站在修補前已經暴露了一段時間,建議請工程師看一下伺服器紀錄(log),確認有沒有可疑跡象,例如:
- 大量「記憶體用完」的錯誤訊息
- 特別大的表單或上傳請求
- 不認識的管理員帳號、陌生的檔案
順便做好這幾件事,網站更安全
這次的漏洞跟登入無關。不過我幫客戶檢查網站紀錄時,常常順便看到大量機器人在暴力破解後台登入。建議一起把基本防護做好:
- 限制登入嘗試次數:WordPress 本身沒有次數限制,可以裝 Limit Login Attempts Reloaded 這類外掛
- 開啟兩步驟驗證:管理員帳號加上手機 App 驗證碼
- 定期更新:WordPress、外掛、佈景主題、PHP 版本都要更新
- 固定備份:出事的時候才有辦法還原
常見問題
我的網站沒有上傳功能,也會受影響嗎?
會。攻擊發生在 PHP 整理資料的階段,跟網站有沒有做上傳功能無關。
裝了資安外掛就安全了嗎?
不夠。這次的問題發生在 WordPress 啟動之前,外掛來不及攔截。根本的解法是更新 PHP。
我自己不會看這些設定,怎麼辦?
可以直接把這篇文章傳給主機商或網站工程師,請他們確認 PHP 已經更新到修補版本。
結語
php2shell 提醒我們:網站安全不只是 WordPress 和外掛的事,底下跑的 PHP 和主機環境也一樣重要。
這次我管理的客戶網站,我都逐一追蹤了主機商的修補進度,也檢查了伺服器紀錄,確認有沒有入侵跡象。如果你不確定自己網站的狀況,或需要協助檢查,歡迎跟我聯絡。

