跳到正文
CVE news(crowdstrike.com)·· 3 天前精選AI 評分70

PHP2Shell 漏洞:武器化障礙或限制即時廣泛利用

Obstacles to Weaponizing PHP2Shell Likely Constrain Immediate Widespread Exploitation

AI 導讀

PHP2Shell 漏洞(CVE-2026-109618 / CVE-2026-109619)雖未被實際利用,但其高危性與廣泛影響已引起業界關注。

  • - 受影響版本:PHP 8.2.35 以前、8.3.36 以前、8.4.27 以前、8.5.12 以前。
  • 舊版亦可能受影響。
推薦理由

此報告說明 PHP2Shell 漏洞雖尚未被實際利用,但其高危性與廣泛影響提示組織須優先修補並加強容器及工作者隔離。

正文 · AI 翻譯

2026年10月21日,PHP 公佈兩個嚴重漏洞(現已追蹤為 CVE-2026-109618 和 CVE-2026-109619,並被稱為 PHP2Shell),影響多個 PHP 版本。這些漏洞可能允許未經身份驗證的威脅行為者在特定條件下實現遠端程式碼執行(RCE),且可在執行易受攻擊的 PHP 版本的產品中被利用。 

由於其嚴重性以及 PHP 佔全球網站約 70% 的事實,1 包括 WordPress,這些漏洞在公開前後已受到媒體和業界廣泛關注。業界來源已公佈與這些漏洞或其他所稱 PHP 漏洞相關的概念驗證(POC)程式碼。CrowdStrike Counter Adversary Operations 分析的許多案例都是僅證明漏洞存在的崩潰 POC;將其轉換為能可靠實現 RCE 的可靠 POC 攻擊並非簡單或保證成功。

要利用這些漏洞,攻擊者必須為特定的 PHP 版本和應用程式(例如 WordPress)調整 POC 攻擊程式。此調整對潛在威脅行為者構成實質障礙,因為攻擊程式開發者必須瞭解並使用與目標應用程式相同版本的 Docker 容器、套件及其他元件。

目前,CrowdStrike Counter Adversary Operations 尚未觀察到這些漏洞在實際環境或我們的蜜罵環境中被成功利用。此外,我們也未發現任何完全武器化的攻擊程式,或任何足以廣泛實現適用利用的 POC 攻擊程式。儘管 PHP2Shell 受到關注,但目前僅觀察到測試、探測和未成功的利用嘗試。 

威脅行為者擁有多個可行的替代漏洞,能在多數可靠且大規模使用 PHP 的應用程式中實現未經身份驗證的 RCE。許多機會主義的威脅行為者目前可能偏好

CVE-2026-109618 與 CVE-2026-109619 概覽 

2026年10月21日,PHP 公佈 CVE-2026-109618 與 CVE-2026-109619,影響以下版本:

  • 8.2.35 以前
  • 8.3.36 以前
  • 8.4.27 以前
  • 8.5.12 以前

業界來源及供應商的初步分析顯示,許多舊版本(包括已停止支援的 PHP 版本)亦受此漏洞影響,且可能僅能獲得有限的補丁來修復。

CrowdStrike Counter Adversary Operations 重新製作了一個概念驗證攻擊程式,利用執行中 mod_php 或 PHP-FPM 工作程式的許可權實現 RCE,兩者在大多數情況下應為非特權,符合最小許可權原則。

瞭解 PHP 工作程式與請求處理 

PHP worker 是一個長時間執行的程序,用於執行 PHP 請求。為了減少啟動開銷,伺服器會重複使用 worker,而不是為每一次 HTTP 請求啟動新的 PHP 直譯器。在正常情況下,請求特定的資料會在請求開始時初始化,並在結束時釋放;而程序層級的狀態則會在 worker 的生命週期內持續存在。因此,兩個不相關的請求可能會被同一個 worker 依序處理。這一區別對跨請求漏洞至關重要:如果一個請求留下不一致的記憶體狀態,只有當後續請求再次到達同一個持久化 worker 時,才可能受到影響。

mod_php 與 PHP-FPM 是最常見的兩種 PHP 部署與網路伺服器整合模式。它們使用不同的伺服器 API(SAPIs),這些 API 定義了 PHP 引擎如何接收與處理網路請求。

使用 mod_php 時,PHP 直接以模組方式載入 Apache,PHP 程式碼在 Apache worker 程序內執行。

使用 PHP-FPM 時,PHP 作為一個獨立服務執行,包含一個主程序與一組 worker。像 Apache 或 Nginx 之類的網路伺服器會透過 FastCGI 協定(通常使用 Unix socket 或 TCP 連線)將請求轉發給這些 worker。

在兩種模式中,worker 都會被多次重複使用。這種重複使用對於留下損毀或過期狀態的漏洞尤為重要,因為後續請求可能會受到影響。

在對 CVE-2026-109618 與 CVE-2026-109619 進行技術分析時,CrowdStrike Counter Adversary Operations 發現了三個獨立的缺陷,若被利用,可能會啟用遠端程式碼執行(RCE)。 

CVE-2026-109618 與部分 hashTable 插入缺陷相符,而 CVE-2026-109619 與持久化序列化上下文 use-after-free 以及 session-global use-after-free 缺陷相符。

CVE-2026-109618 部分 hashTable 插入

PHP 內部使用 HashTable 結構來儲存鍵值對集合,包括陣列與 HTTP 請求變數。每個儲存專案由一個 bucket 表示,該結構包含值以及如鍵、型別等資訊。PHP 透過 HashTable 的專案計數來判斷哪些 buckets 包含有效資料,並需要進行處理或釋放。

此漏洞源於 HTTP 請求變數解析過程中的記憶體損毀。如果在 PHP 新增新 HashTable 專案時記憶體分配失敗,專案計數可能會在相應桶完全初始化前被更新。在請求關閉時,PHP 可能會將這個不完整的 bucket 視為有效,並嘗試存取或釋放無效資料。這可能導致無效的記憶體存取、記憶體損毀或 PHP 程序終止,進而可能執行任意程式碼。

CVE-2026-109619:持久化序列化上下文 Use-After-Free

PHP 的 serialize() 函式將 PHP 值(例如陣列或物件)轉換為可儲存或傳輸的編碼字串。相對應的 unserialize() 函式則從該字串重建原始 PHP 值。在執行這些操作時,PHP 會維持一個內部序列化上下文,用於追蹤物件、參考與遞迴資料結構。

zend_bailout(),PHP 內部在發生致命錯誤後停止執行的緊急機制,會立即將控制權轉移至恢復點,因此除非顯式處理,否則正常函式回傳與清理程式碼可能會被跳過。

PHP 在其序列化上下文處理中存在跨請求使用後釋放漏洞。若致命錯誤導致 zend_bailout() 中斷 serialize() 或 unserialize(),PHP 可能會將內部上下文指向屬於當前請求的記憶體。該記憶體在請求結束時被釋放,但 PHP 工作程式可能仍存活並保留舊指標。同一工作程式後續處理的請求可能會存取或修改已釋放的記憶體。根據設定,成功利用可能允許攻擊者洩露記憶體、使 PHP 工作程式崩潰,或執行任意程式碼。

CVE-2026-109619:Session-Global 使用後釋放漏洞

PHP 的 session upload‑progress 功能允許應用程式監控檔案上傳進度。啟用時,PHP 會偵測 multipart 或 form‑data 請求中的特定欄位,並在 PHP 指令碼開始執行前在使用者的 session 中建立暫存進度記錄。隨著上傳資料到達,PHP 會定期開啟 session、更新已處理的位元組數、寫入 session 資料,並釋放 session 鎖。當上傳完成或取消時,PHP 會移除進度記錄並清除相關內部狀態。

PHP 在 session upload‑progress 生命週期中存在跨請求使用後釋放漏洞。若致命錯誤在上傳進度清理完成前中斷 multipart 請求處理,PHP 可能會跳過通常關閉 session 並清除其內部狀態的程式碼。此時當前請求的記憶體被釋放,但持續存在的 PHP 工作程式仍可能保留對該記憶體的指標。同一工作程式後續處理的請求可能會存取或修改已釋放的記憶體。 

根據設定,成功利用可能導致記憶體洩露或損毀、使 PHP 工作程式崩潰、永久持有 session 鎖,或使受影響的服務無法使用。

評估

漏洞利用開發者不太可能開發出在所有受影響的 PHP 部署環境中均能可靠運作的單一通用利用程式。然而,針對特定部署設定(如固定的 Docker 映像或已知的 PHP、libc、SAPI 與網頁應用程式版本組合),製作可可靠進行遠端利用的 POC 利用程式是可行的。對於此類情況,攻擊者可提前校準利用程式的偏移量與堆排程,產生能可靠適用於任何執行相同未修改套件或映像版本的系統的利用程式。

在短期至長期內,高階威脅行為者可能會嘗試利用此漏洞攻擊高價值目標,因為替代利用方式較不切實際。然而,若有公開的利用程式能克服上述利用挑戰並針對廣泛使用的 PHP 部署可用,許多額外的威脅行為者幾乎肯定會立即嘗試利用它。 

此漏洞所引發的媒體與產業廣泛關注幾乎肯定會在短期至長期內激勵威脅行為者與安全研究人員發現更多 PHP 漏洞。 

雖然威脅行為者尚未成功利用 PHP2Shell,但他們試圖將這些漏洞武器化的速度之快,凸顯了攻擊者將新漏洞迅速整合進其作業能力的能力,往往得益於業界公開研究。此趨勢,加上漏洞發現、再發現與補丁迴避的反覆模式,且目前被 AI 助力的漏洞研究進一步加速,強調組織必須保持警覺,積極修補與強化環境以對抗新興威脅。

建議

以下建議可協助保護組織,防範本報告所描述的活動:

  • 盡快將所有使用 PHP 的應用程式升級至最新版本,優先修補對外部網路開放的應用程式
  • 部署後重新建置容器映像檔並重新啟動所有 Apache 與 PHP-FPM 工作程序,以清除任何殘留的程序狀態
  • 除非明確需要,否則停用會話上傳進度(透過 session.upload_progress.enabled = Off);此舉可阻擋與序列化上下文及會話全域 use-after-free 條件相關的上傳進度路徑,但並未緩解 HashTable 漏洞
  • 在不需要時停用檔案上傳(透過 file_uploads = Off);盡可能針對每個應用程式或 PHP 池執行此設定,以避免不必要的功能影響
  • 限制請求內容在到達 PHP 前的大小;設定 Apache、NGINX、反向代理或 WAF,限制內容大小、上傳大小、上傳時長、引數名稱長度、巢狀深度、表單欄位數量,並剔除異常大型 URL 編碼鍵以及格式錯誤或異常的多部分請求
  • 將每個 PHP 應用程式以獨立且最低許可權的帳號執行,並阻止 PHP 工作程序修改應用程式程式碼或存取無關機密

其他資源

1 https[:]//w3techs[.]com/technologies/history_overview/programming_language/ms/y ||

https[:]//thenextweb[.]com/news/why-php-continues-to-be-a-popular-but-divisive-programming-language

來源: CVE news (crowdstrike.com)
開啟原文