漏洞編號: CVE-2026-109618、CVE-2026-109619
嚴重程度: Critical(CVSS v4.0:9.2)
影響: 未經驗證遠端程式碼執行(Pre-auth RCE)、記憶體資訊洩漏
1. 漏洞技術原理
CVE-2026-109618:OOM Memory Corruption
- 根因: PHP 在 Out-of-Memory(OOM)異常處理期間,內部 Request 資料可能只完成部分初始化。
- 觸發: 特製 HTTP Request 導致記憶體配置失敗,隨後進入錯誤清理流程。
- 缺陷: Cleanup Routine 將尚未正確初始化的資料視為有效物件操作。
- 影響: Memory Corruption,特定情況下可進一步造成 RCE。
CVE-2026-109619:Use-After-Free(UAF)
- 根因: PHP Request 結束後,部分 Global State 仍保留指向已釋放記憶體的指標。
- 觸發: 後續 HTTP Request 由相同 PHP Worker 處理時,存取殘留指標。
- 缺陷: Request State 未完整重設,造成跨 Request 的 Use-After-Free。
- 影響: Memory Disclosure、Memory Corruption,甚至 RCE。
2. 攻擊路徑
Unauthenticated HTTP Request
|
v
Crafted multipart/form-data
|
v
PHP Request Parser
|
+--> OOM / Partial Initialization
| |
| v
| Invalid Cleanup
|
+--> Stale Global State
|
v
Use-After-Free
|
v
Memory Corruption
|
v
Information Leak / RCE
漏洞存在於 PHP Runtime,而非 WordPress 應用程式本身。部分攻擊路徑可在 PHP 應用程式碼執行前觸發,因此無須 WordPress 登入權限。
實際可利用性取決於 PHP SAPI、記憶體配置狀態與伺服器設定,並非每個環境都能透過相同請求成功執行 RCE。
3. 受影響元件與版本
受影響執行環境: PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed。
| PHP 分支 | 安全修補版本 |
|---|---|
| 8.5 | 8.5.12 |
| 8.4 | 8.4.27 |
| 8.3 | 8.3.36 |
| 8.2 | 8.2.35 |
| 8.1 以下 | EOL,需確認供應商 Backport |
PHP 7.4.33 同樣需要處理。部分供應商已有回補修補,但版本號可能保持不變,因此不能只透過 php -v 判斷是否已修補。
4. 技術防護與修復建議
- Patch: 立即更新至安全版本,或套用經確認的 Vendor Backport。
- Runtime: 更新後重新啟動 PHP Worker,避免舊版程序繼續運行。
- Detection: 檢查異常 multipart/form-data Request、PHP Worker Crash、OOM 與 Segmentation Fault。
- Hardening: 限制 PHP Worker 權限,隔離網站程序與敏感資料。
- Mitigation: WAF、Rate Limit、限制上傳功能可降低部分攻擊面,但不能替代安全修補。
5. 技術結論
本次 PHP2Shell 的核心問題是 PHP Runtime 的記憶體生命週期管理缺陷:
- CVE-2026-109618:OOM 異常處理造成無效記憶體狀態。
- CVE-2026-109619:跨 Request 的 Stale Pointer 導致 Use-After-Free。
由於漏洞可能在應用程式執行前觸發,單純更新 WordPress 或外掛並不足以修復問題。必須更新 PHP Runtime 本身。
留言