堇意科技 堇意科技 AI Agent · 數位轉型
免費取得報價

我們通常於數小時內回覆(GMT+8)。

安全公告與實戰紀錄

PHP2Shell 緊急應變:兩個 CVSS 9.2 的 PHP 遠端程式碼執行漏洞

2026 年 10 月 21 日,PHP 於 14:00 UTC 發布緊急修復。本文完整記錄公告核實、香港生產節點排查、版本升級,以及 Linux/Windows Server 自動檢查與可回溯修復工具。

三分鐘結論

01

問題在 PHP 本身

升級 WordPress、Laravel 或外掛無法修補漏洞,必須更新 PHP 執行環境。

02

修補後必須重新啟動

FPM、Apache、IIS 與容器中的舊 worker 不會因套件更新自動消失。

03

先快照再修復

工具備份只涵蓋它管理的 PHP;整機快照仍是首選回溯方式。

發生了什麼

PHP 官方修復兩個位於解釋器核心、可造成未認證遠端程式碼執行的重大漏洞。它們與應用框架無關,影響所有處理 Web 請求的 PHP SAPI:PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 與 LiteSpeed。

CVE-2026-109618 利用記憶體耗盡時的異常退出;請求記憶體尚未完整初始化時,清理階段可能把損壞資料當成有效狀態。CVE-2026-109619 是跨請求 use-after-free:前一請求留下的全域狀態在記憶體釋放後,仍被同一 worker 的後續請求使用。

哪些版本受影響

PHP 8.2、8.3、8.4、8.5 應升級到各自修復版。PHP 8.1 及更早已停止上游安全維護;PHP 僅提供 7.4、8.0、8.1 最小原始碼回溯補丁,沒有新的官方二進位版本。

分支受影響官方修復
PHP 8.5< 8.5.128.5.12
PHP 8.4< 8.4.278.4.27
PHP 8.3< 8.3.368.3.36
PHP 8.2< 8.2.358.2.35
PHP 8.1 及更早上游 EOL升級或使用廠商回溯補丁
發行版可能保留舊版本號但已回溯修復。不能只看 php -v,必須核對發行版 CVE 公告與套件變更紀錄。

為何不能只升級網站程式

攻擊發生在應用程式碼執行之前的 PHP 請求初始化、解析或清理階段。更新 WordPress、Drupal、Joomla、Laravel 或安全外掛都不能取代 PHP 更新。

  • PHP 認為 mod_php 風險最高:已證明未認證請求可在應用程式碼執行前觸發。
  • PHP-FPM 不應視為安全。原始碼分析支持其易受影響,且另一個 CVE 已在 mod_php 與 FPM 上驗證。
  • 安裝套件不等於完成修復。舊 FPM、Apache、IIS worker 仍可能執行舊二進位。
  • Docker 必須拉取修復映像並重建容器;docker restart 只會重新啟動舊映像。

我們的排查路徑

我們先以唯讀掃描器盤點 CLI、FPM、CGI、Apache 模組、Docker、Windows 服務、擴充與相關 INI,再從實際 Web 入口確認版本,而不是只相信單一 php -v 輸出。

  • 檢查 PATH、/www/server/php、/usr/local、/opt、FPM pool、Apache 模組、IIS FastCGI、登錄檔與容器。
  • 比對套件安裝時間與 worker 啟動時間,找出「已升級但仍執行舊程序」。
  • 隱藏 PHP 版本、CDN 與 WAF 只能降低暴露,不能證明後端執行環境已修復。
  • 第三方設備、NAS、控制面板與產品內嵌 PHP 必須另外查廠商公告。

安全修復順序

官方唯一完整修復是升級。以下順序適用 Linux、Windows Server、寶塔、IIS 與容器部署。

  • 在雲端或虛擬化平台建立整機快照,記錄 PHP、SAPI、擴充、服務與 pool 設定。
  • 備份 PHP 目錄、php.ini、FPM/Apache/IIS 設定與二進位檔,確認回溯腳本可讀。
  • 安裝同分支官方修復版,或發行版明確標示修復 CVE 的套件。
  • Docker 拉取新映像並重建容器;套件更新後完整重新啟動 FPM/Apache/IIS/長駐 worker。
  • 驗證登入、上傳、付款、佇列、快取與關鍵 API,並從真實 Web 入口確認 SAPI 版本。
  • 若修復前曾暴露公網,繼續排查 webshell、異常子程序、新排程、異常外連與憑證存取。

無法立即升級時的臨時措施

臨時設定只能阻斷部分已知路徑,不代表系統安全。補丁與完整重新啟動仍是唯一完整修復。

  • CVE-2026-109618:在應用無法覆寫的 FPM/Apache 設定中強制 memory_limit=-1、降低 post_max_size,並在代理層限制 body、part、header 與巢狀數量。不要用 RLIMIT_AS/RLIMIT_DATA 取代。
  • CVE-2026-109619:在請求初始化前設定 session.upload_progress.enabled=0 並完整重啟 worker;PHP 8.5 同時設定 fatal_error_backtraces=0。
  • 不要依賴 .user.ini 或 ini_set() 作為關鍵緩解,它們對部分攻擊路徑生效太晚。
  • Cloudflare WAF 等邊界防護只能作縱深防禦,且只覆蓋經由該代理的流量。

回溯與工具邊界

首選回溯始終是整機快照。伺服器腳本會在 Linux 的 /root/php2shell-fullfix/<時間戳>/ 或 Windows 的 C:\ProgramData\PHP2ShellFullFix\<時間戳>\ 產生報告、備份清單與 rollback 腳本。

自動修復只涵蓋可驗證的寶塔 PHP、限定 Debian PHP 官方映像容器與 Windows 官方 PHP ZIP 安裝;未知原始碼、發行版套件與第三方內嵌 PHP 不做盲目修改。

修復模式要求:理解風險、已建立整機快照、已驗證備份與回溯。任一確認字串不符,腳本立即停止。

本次應變工具

掃描器只做無害的版本與設定盤點;伺服器修復腳本預設只檢查,變更前要求三次確認並產生回溯檔。

Windows PC 掃描器GitHub Release · PHP2ShellScanner-PC.exe 本機 Web 掃描器GitHub Release · 127.0.0.1 Linux+Windows Server 腳本GitHub Release · Linux .sh · Windows Server .ps1 GitHub 原始碼與文件scriptsnet / php2shell-security-toolkit

SHA256 校驗值

HTTP 掃描看不到隱藏版本;不能把「未識別」當成「安全」。

權威來源

產品判斷優先採用 PHP 官方與 GitHub Security Advisory;CISA、CERT-EU、NCSC-NL 與雲端廠商公告用於交叉核驗。

  1. PHP official security advisory · 2026-10-21
  2. CVE-2026-109618 · GHSA-w8hw-w9fx-j79w
  3. CVE-2026-109619 · GHSA-6wmf-4rv5-p3rp
  4. PHP 8.2.35 official release record
  5. NCSC-NL · php2shell operational information
  6. CISA CSAF/VEX · VA-26-295-01
  7. Canadian Centre for Cyber Security · AL26-026
  8. CERT-EU Security Advisory 2026-018
  9. Cloudflare · php2shell WAF protection

HTTP 掃描看不到隱藏版本;不能把「未識別」當成「安全」。

免費取得報價
與無軒線上對話
WhatsApp 免費方案