PHP2Shell 是什麼?兩個 PHP 漏洞要升級到哪個版本,企業怎麼檢查

PHP2Shell 是 2026 年 10 月 21 日公開的兩個 PHP 遠端程式碼執行漏洞的簡稱,編號為 CVE-2026-109618 與 CVE-2026-109619,兩個都由 PHP 專案評為 CVSS v4.0 9.2。

Taiwan Bigdata Insights
Taiwan Bigdata Insights
發布於 2026/10/22· 27 分鐘閱讀

PHP2Shell 是 2026 年 10 月 21 日公開的兩個 PHP 遠端程式碼執行漏洞的簡稱,編號為 CVE-2026-109618 與 CVE-2026-109619,兩個都由 PHP 專案評為 CVSS v4.0 9.2。PHP 官方在 10 月 21 日發布 8.5.12、8.4.27、8.3.36、8.2.35 四個修補版本,官方的說法是升級才是唯一完整的解法。網站若跑在 PHP 上,包含 WordPress 這類 PHP 應用,先查 PHP 版本,再要求主機商或維運團隊升級並重啟所有 worker。

本文資料取得日為 2026 年 10 月 22 日,以 PHP 官方公告、GitHub 安全公告、CVE 記錄與發現團隊的文章為準。漏洞細節與各家說法仍在更新,轉用前請回到文末來源再核對一次。

PHP2Shell 是什麼?

PHP2Shell 指的是 CVE-2026-109618 與 CVE-2026-109619 這兩個漏洞。PHP 官方公告把風險描述為「所有處理網頁請求的 PHP 安裝」,包含 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 與 LiteSpeed,其中 mod_php 的風險最高。

  • 項目:官方摘要、CVE-2026-109618:RCE via OOM corruption(記憶體不足處理時的記憶體損壞)、CVE-2026-109619:RCE via stale global state(過期的全域狀態)

  • 項目:CVSS v4.0、CVE-2026-109618:9.2(CRITICAL)、CVE-2026-109619:9.2(CRITICAL)

  • 項目:公開時間、CVE-2026-109618:2026-10-21(GitHub 公告 13:34 UTC,CVE 記錄 13:48 UTC)、CVE-2026-109619:2026-10-21(GitHub 公告 13:34 UTC,CVE 記錄 13:54 UTC)

  • 項目:確認的影響、CVE-2026-109618:以網頁服務帳號身分,未經驗證即可遠端執行程式碼、CVE-2026-109619:未經驗證的記憶體釋放後使用、記憶體內容洩漏與遠端執行程式碼

來源:GitHub php-src 安全公告 GHSA-w8hw-w9fx-j79w 與 GHSA-6wmf-4rv5-p3rp、cve.org 記錄。NVD 另外給了 CVSS v3.1 9.8,PHP 專案給的是 v4.0 9.2。

PHP2Shell 這個名字是誰取的?

名稱的出處沒有查到明確說法。Wiz 與 Calif 在 10 月 21 日發表的文章都用 PHP2Shell 當標題,Cloudflare 的文章寫「known as php2shell」。PHP 官方公告與兩則 GitHub 公告沒有使用這個名稱。Wiz 的文章把 php2shell 描述為他們把兩個漏洞串成的利用腳本名稱。

漏洞的發現者依 CVE 記錄的致謝欄位,列有 Calif 的 Ryan、Wiz 與 OpenAI。

哪些 PHP 版本受影響?

官方 CVE 記錄列出 PHP 8.2、8.3、8.4、8.5 四條版本線,修補前的版本都受影響。發現團隊的說法範圍更大:Wiz 寫「過去十年發布的每個 PHP 版本,至少受其中一個漏洞影響,可追溯到 5.4」,Cloudflare 寫「所有執行 PHP 5.4 或更新版本的網頁伺服器」。

PHP 官方也替已終止支援的版本準備了修補。官方公告寫明,安全團隊為 PHP 7.4、8.0、8.1 提供了「最小原始碼修補(minimal source-backports)」,給自行編譯或沒有長期支援廠商的人使用。因此文章與內部通報不要寫成「只有 8.2 以上受影響」。

  • PHP 版本線:8.5、官方支援狀態(php.net,2026-10-22 讀取):安全支援到 2029-12-31、這次修補怎麼拿:升級到 8.5.12

  • PHP 版本線:8.4、官方支援狀態(php.net,2026-10-22 讀取):安全支援到 2028-12-31、這次修補怎麼拿:升級到 8.4.27

  • PHP 版本線:8.3、官方支援狀態(php.net,2026-10-22 讀取):安全支援到 2027-12-31、這次修補怎麼拿:升級到 8.3.36

  • PHP 版本線:8.2、官方支援狀態(php.net,2026-10-22 讀取):安全支援到 2026-12-31、這次修補怎麼拿:升級到 8.2.35

  • PHP 版本線:8.1、官方支援狀態(php.net,2026-10-22 讀取):2025-12-31 終止支援,最後版本 8.1.34、這次修補怎麼拿:官方不再出版本,向發行版或長期支援廠商詢問,或使用官方原始碼修補分支

  • PHP 版本線:8.0、7.4、官方支援狀態(php.net,2026-10-22 讀取):更早終止支援、這次修補怎麼拿:同 8.1

官方公告對 8.1 及更舊版本的原文是:「PHP 8.1 and older no longer receive updates from the PHP project.」,並建議洽詢發行版或長期支援廠商,或升級到仍有支援的版本。

已經有人利用這些漏洞了嗎?

截至 2026 年 10 月 22 日讀取的資料,美國 CISA 的已知遭利用漏洞目錄(KEV,10 月 21 日版)沒有收錄這兩個 CVE。CISA 在 CVE 記錄上的評估寫「Exploitation: none」,評估時間為 10 月 21 日 14:34 UTC。

另一方面,Cloudflare 在官方部落格寫明,漏洞在正式發布日之前外洩,並且觀察到針對其客戶的攻擊流量,攻擊者也在改寫攻擊內容嘗試繞過防護。這是目前唯一一手的在野攻擊說法。攻擊流量只表示有人在試,不等於已有網站被入侵成功。PHP 官方公告沒有說已遭利用。

Cloudflare 表示,從 10 月 21 日 03:02 UTC 起,使用免費或付費 WAF 的客戶預設已受到防護。WAF 能擋掉部分已知攻擊內容,官方仍說沒有完整的緩解方式,升級才是安全的作法。

企業要做哪幾件事?

先確認哪些系統跑 PHP,再升級並重啟。下表是依官方處置整理的檢查順序,其中「怎麼查」欄屬一般維運做法,實際指令依主機環境而異。

  • 步驟:1、要做什麼:盤點哪些網站與系統跑 PHP、怎麼查或怎麼做:問自己的維運團隊、主機商、外包網站廠商;WordPress 與多數 CMS 都跑 PHP、完成的證據:一張清單:站名、主機商、PHP 版本、負責人

  • 步驟:2、要做什麼:確認每個站的 PHP 版本、怎麼查或怎麼做:主機後台或維運人員回報的版本號;比對上表、完成的證據:每站一個版本號與查詢日期

  • 步驟:3、要做什麼:升級到修補版本、怎麼查或怎麼做:8.5.12、8.4.27、8.3.36、8.2.35;自管主機用套件管理工具,代管主機請主機商處理、完成的證據:升級後的版本號

  • 步驟:4、要做什麼:重啟所有 PHP worker、怎麼查或怎麼做:官方明說要重啟每個 worker,設定與新版才會生效、完成的證據:重啟時間紀錄

  • 步驟:5、要做什麼:8.1 以下的站先決定去向、怎麼查或怎麼做:洽詢發行版或長期支援廠商的修補套件,或規劃升級到仍有支援的版本、完成的證據:書面回覆或排程

  • 步驟:6、要做什麼:留下紀錄、怎麼查或怎麼做:誰在幾月幾日把哪個站升到哪個版本、完成的證據:一份可交給稽核或客戶的紀錄

如果網站交給外包廠商或代管主機維護,向對方問下面三個問題,請對方書面回覆:

  1. 我們的網站目前跑哪一個 PHP 版本?

  2. 已經升級到上表的修補版本了嗎?升級與重啟的時間是幾月幾日?

  3. 如果跑的是 8.1 或更舊版本,修補要怎麼取得、預計哪天完成?

無法立刻升級時,官方給了哪些暫時設定?

官方列出幾項只能降低部分攻擊路徑的設定,同時明說這些設定「不會讓系統變安全(do not make an installation safe)」。下表四項取自官方公告,已逐字對過原文,並對照到各自的漏洞。

  • 對應漏洞:CVE-2026-109618、設定:memory_limit=-1,最好用應用程式無法覆寫的方式設定,例如 FPM pool 的 php_admin_value 或 Apache 設定、官方說明的限制:移除可控的記憶體上限失敗路徑,但底層記憶體配置失敗仍可能走到有漏洞的程式碼

  • 對應漏洞:CVE-2026-109618、設定:調低 post_max_size:不需要檔案上傳的應用設 8M,需要上傳的設 32M,upload_max_filesize 要小於它、官方說明的限制:只縮小攻擊面

  • 對應漏洞:CVE-2026-109619、設定:session.upload_progress.enabled=0 並重啟所有 worker,要在請求解析前就生效的設定檔套用,不要依賴 ini_set() 或 .user.ini、官方說明的限制:只擋特定路徑

  • 對應漏洞:CVE-2026-109619、設定:PHP 8.5 設 fatal_error_backtraces=0 並重啟所有 worker、官方說明的限制:只擋已確認的 fatal backtrace 路徑

官方公告另列有容器或 cgroup 記憶體限制、在網頁伺服器或代理層限制請求大小等項目,完整清單與原文請看 php.net 公告。暫時設定不能取代升級,表上的設定要在升級完成後依應用需求還原或調整,改設定前先在測試環境確認不影響上傳功能。

常見問題

我的網站不是自己架的,需要處理嗎?

需要確認。託管在別人主機上的 PHP 網站,升級由主機商或維運廠商執行,你要做的是問清楚版本、升級日期與重啟日期,並留下回覆紀錄。

我們沒有 PHP 程式碼,還需要關心嗎?

盤點的問題是「有沒有任何系統在跑 PHP」,與自己有沒有寫 PHP 無關。WordPress、許多電商與表單系統、舊版官網、客戶端系統都可能跑 PHP。盤點時把外包網站、行銷活動頁與舊站一起列入,沒有 PHP 的系統在清單上標「無」並寫下確認日期。

WAF 開了就夠了嗎?

不夠。Cloudflare 的公告說明攻擊者會改寫攻擊內容嘗試繞過規則;PHP 官方也寫明沒有完整的緩解方式,升級是唯一安全的選擇。WAF 適合當升級前後的一層補強。

參考資料

本文為資訊整理,不構成資安或法律意見。你的環境實際是否受影響、如何升級,請與你的維運團隊或資安顧問確認。

Taiwan Bigdata Insights

Taiwan Bigdata Insights

Taiwan Bigdata Insights 是台灣大數據分析股份有限公司的官方內容平台,專注於 AI 原生營運、企業流程自動化與資料驅動決策。我們分享實戰案例、導入方法與技術架構,協助企業從工具導入升級為 AI 核心營運模式,強調可落地與實際效益。

文章大綱