本篇重點
- PHP2Shell 包含 CVE-2026-109618 與 CVE-2026-109619 兩項高危險性核心漏洞,CVSS 評分達到 9.2 分
- 漏洞影響所有常見的 PHP 運行模式(如 PHP-FPM 與 Apache mod_php),攻擊者可無須驗證發動遠端程式碼執行(RCE)
- 官方修補版本為 PHP 8.5.12、8.4.27、8.3.36 及 8.2.35;EOL 版本需透過社群 Backport 補丁或編譯處理
事件摘要
2026 年 10 月 21 日,PHP 官方緊急發佈了針對兩項核心漏洞的修補更新,這兩項漏洞被合稱為 PHP2Shell,分別追蹤為 CVE-2026-109618 與 CVE-2026-109619 。
這組漏洞被列為近年最嚴重的 PHP 核心安全危機之一,CVSS 風險評分為 9.2(Critical)。其嚴重性在於攻擊者可以在未經身份驗證(Unauthenticated)的情況下,透過特製的 HTTP 請求觸發 PHP 引擎內部的記憶體管理錯誤,進而達到遠端程式碼執行(Remote Code Execution, RCE)。
事件影響範圍
PHP2Shell 發生在 PHP 核心執行環境,而非特定網站框架或應用程式的商業邏輯。因此,即使 Laravel、WordPress 或應用程式本身沒有相關程式碼缺陷,底層 PHP 執行環境仍可能需要修補。
官方認為所有處理 Web 請求的 PHP 安裝都應納入評估,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 與 LiteSpeed,而 mod_php 的風險尤其值得注意。
漏洞技術摘要
PHP2Shell 和 PHP 核心的記憶體管理及請求生命週期有關,但觸發機制不相同。
CVE-2026-109618:OOM 記憶體毀損
PHP 在處理請求時會配置記憶體,並在請求結束時清理相關資料。當耗盡了 memory_limit 限制(記憶體不足),PHP 會拋出 Out-of-Memory (OOM) 錯誤並使用內部的 longjmp() 機制強制進行請求清理(Request Shutdown)。
問題在於,部分內部資料可能已被其他程序路徑使用,但尚未完成初始化。如果記憶體配置在這個時間點失敗,後續的請求清理流程仍可能把不完整的狀態當作有效資料處理。
攻擊者可以透過特製的 HTTP 請求,嘗試讓 PHP 在特定狀態下發生記憶體耗盡,進而觸發錯誤的清理流程。
流程如下:
- 特製 HTTP 請求,例如觸發特定的 Multipart 請求解析與記憶體配置
- PHP 發生 OOM,執行流程提前中斷,部分內部狀態尚未完成初始化
- 錯誤的請求清理流程,可能讀取或操作無效的記憶體狀態
- 可能造成記憶體破壞、程序崩潰或 RCE
CVE-2026-109619:跨請求使用失效記憶體
在常駐進程架構(如 PHP-FPM)中,單一進程會連續處理多個 HTTP 請求。當前一個請求因為異常在中途中斷時,部分全域狀態(Global State)未被徹底重置,但其對應的記憶體空間已經被標記為釋放。
當下一個請求進入同一個 Worker 進程時,PHP 引擎在完成正規初始化前,誤用了殘留在舊記憶體位址中的無效狀態(Stale State),讓攻擊者重寫資料指標並取得系統執行權限,形成 Use-After-Free (釋放後使用)問題。
流程如下:
- 請求 A,產生或保留內部狀態
- 請求 A 結束,記憶體釋放,但部分全域狀態未正確重設
- 請求 B 由同一工作程序處理,正常初始化前的操作接觸到舊狀態
- 可能造成記憶體破壞或 RCE
官方修補版本
優先使用受支援的 PHP 分支
PHP 官方於 2026 年 10 月 21 日發布的修補版本如下:
PHP 8.1 及更早版本已停止維護,不會針對這次事件提供對應的官方修補版本。
已停止維護版本的 Backport
PHP 8.1 及更早版本(如 PHP 7.4、7.2 等)已處於停止維護(End-of-Life,EOL) 狀態,官方沒有提供預編譯的安裝包更新。
針對無法立即升級至 PHP 8.2+ 的舊系統,可以參考社群套件維護者 Patch,Ondřej Surý 提供 PHP 7.4 至 8.1 的 Minimal Source Backport,透過 OS 套件管理器更新至帶有安全性修訂號的修復包。
結論
PHP2Shell 是 2026 年 10 月 21 日公開的兩項 PHP 核心漏洞,分別涉及記憶體耗盡時的狀態破壞以及跨請求使用失效記憶體。兩項漏洞均可能導致遠端程式碼執行,官方已針對 PHP 8.2、8.3、8.4 與 8.5 發布修補版本。
事件的重要性在於漏洞是在 PHP 核心執行環境,而非特定框架或應用程式程式碼。因此,PHP 應用程式即使沒有直接使用相關功能,也不能單憑程式碼本身判定安全。
實際風險仍須區分受影響版本、可利用條件、修補狀態與入侵證據。對舊版 PHP 而言,發行版安全更新及第三方 Backport 可能提供過渡方案,但必須確認實際修補內容與維護責任。
此外,10 月 23 日公布的 CVE-2026-115560 顯示,相關風險仍有後續發展,持續追蹤官方公告、驗證設定及檢查入侵跡象,才是完整的事件處理方式。



