PHP2Shell 技術總覽
給工程師、維運與資安人員。先看 TL;DR 與版本矩陣,再進你的平台頁照「檢查 → 更新 → 重啟 → 驗證」做完。
TL;DR
- 兩個 PHP 核心漏洞:CVE-2026-109618(RCE via OOM corruption)與 CVE-2026-109619(RCE via stale global state),官方 CVSS v4.0 都是 9.2。
- 官方於 2026-10-21 14:00 UTC(台灣時間 22:00)發布修補。所有服務網頁請求的 PHP 安裝都要假設有風險,Apache mod_php 最高。
- 漏洞可以在應用程式碼開始之前就被觸發,WordPress、Drupal 等應用本身的更新不是這次的修補,只能更新 PHP。
- 官方原話:There are no complete mitigations, updating is the only safe choice. 暫時緩解只能降低特定路徑的曝險。
- 更新之後要重啟所有 worker,再向正在接流量的行程確認版號。
版本矩陣
| 分支 | 官方給了什麼 | 該怎麼做 |
|---|---|---|
| 8.5 | 8.5.12(含 Windows binary) | 升級到 8.5.12 以上,並重啟所有 worker。 |
| 8.4 | 8.4.27(含 Windows binary) | 升級到 8.4.27 以上,並重啟所有 worker。 |
| 8.3 | 8.3.36(含 Windows binary) | 升級到 8.3.36 以上,並重啟所有 worker。 |
| 8.2 | 8.2.35(含 Windows binary) | 升級到 8.2.35 以上,並重啟所有 worker。 本分支安全支援到 2026-12-31,修完仍要排程離開。 |
| 7.4、8.0、8.1 | 最小化原始碼回移植,沒有新的官方安裝包 | 優先用發行版或 LTS 廠商的回移植套件;見 舊版策略 |
| 7.3 以前(含 5.x) | 沒有官方修補 | 升級到仍受支援且已修補的分支;完成前不要直接對網際網路開放 |
發行版套件的版號可能不是上表的 php.net 版號,仍可能已經回移植修補,以該發行版的安全公告為準。程式碼被認為可回溯到 5.4.0,但並非每一個歷史版號都經過逐一驗證。
受影響 SAPI 風險排序
- Apache mod_php官方明確最高
- PHP-FPM官方列入,必須更新
- php-cgi官方列入,必須更新
- FrankenPHP官方列入,必須更新
- LiteSpeed官方列入,必須更新
官方點名所有服務網頁請求的安裝。mod_php 以外的項目,官方沒有再分第二名、第三名;PHP-FPM 已確認可經應用層路徑 RCE,不要降級看待。控制台、廠商設備或 Windows 軟體內建的 php.exe、php-cgi.exe 也要盤點。
命令列的 php 不在官方「服務網頁請求」那句的主詞裡,但官方也沒有保證命令列絕對無關。盤點時以「會不會被網頁請求碰到」為準。
現在立刻做
- 盤點:列出所有會回應網頁請求的 PHP,包括控制台(cPanel、Plesk)、Docker 映像、廠商設備與 Windows 軟體內建的 PHP。
- 確認實際版本:
php -v不一定等於網站在用的 PHP-FPM 或 mod_php,見是否受影響。 - 更新:依你的平台頁更新到已修補的版本或發行版套件。
- 重啟:重啟所有 php-fpm、Apache、LiteSpeed worker;Docker 要重建映像並重新部署。
- 驗證:向正在接流量的行程確認版號,滾動更新不要留下舊 worker。
- 查日誌:調查視窗從 2026-10-17 起算,見偵測與應變。
- 還不能更新:先套官方暫時緩解,並考慮暫時下線或不直接對外。
各平台修補
每頁都照同一個順序:檢查 → 更新 → 重啟 → 驗證。
- 作業系統:Debian、Ubuntu、RHEL/Rocky/Alma、Alpine、Windows、macOS(Homebrew)
- 容器:Docker/Kubernetes
- 主機控制台:cPanel、Plesk、DirectAdmin
- 應用工具:Drupal、WordPress
- 舊分支:自行編譯 7.4/8.0/8.1、舊版本策略
背景與參考
來源
查詢日期:。官方公告優先列出;內容如與 PHP 官方公告不一致,以官方公告為準。