PHP2Shell 及本週重大安全漏洞:如何為伺服器修補(2026 年 10 月)
本週發生了多年來最嚴重的 PHP 安全事件之一。2026 年 10 月 21 日,PHP 項目為兩個嚴重的遠端程式碼執行(RCE)漏洞發佈緊急版本,這兩個漏洞被稱為 PHP2Shell。由於細節提前一天外洩,攻擊者在數小時內便開始掃描伺服器。與此同時,Microsoft 創紀錄的 10 月 Patch Tuesday 以及 CISA KEV 新增的多項漏洞,令 IT 團隊的緊急工作進一步增加。
本文概述事件經過、受影響的系統,以及具體的修補和緩解方法,助你為未來 24 至 72 小時排定優先次序。
重點摘要
- 立即更新 PHP: 已修補版本為 8.5.12、8.4.27、8.3.36 及 8.2.35。PHP 表示更新是唯一完整的修補方法。
- 風險最高: Apache mod_php,攻擊可在你的應用程式碼執行前觸發。PHP-FPM、php-cgi、FrankenPHP 及 LiteSpeed 在特定條件下亦受影響。
- 攻擊嘗試已出現: Cloudflare 及 watchTowr 於 10 月 21 日報告了實際攻擊嘗試。
- 舊版 PHP(8.1、8.0、7.4)沒有常規修補: 請使用發行版或供應商的修補版本、套用原始碼 backport,或進行升級。
- 本週同時需要修補: Windows Shell 零日漏洞 CVE-2026-96951,以及 Ivanti、Palo Alto PAN-OS、Fortinet、Cisco、BeyondTrust 和 Atlassian 列入 KEV 的漏洞。
甚麼是 PHP2Shell?
PHP2Shell 是指 PHP 執行環境本身的兩個漏洞,而非某個框架或 CMS 的漏洞。因此,只要伺服器運行有漏洞的 PHP 版本,WordPress、WooCommerce、Magento、Laravel 以及自行開發的 PHP 網站都可能受影響。PHP 將兩者評為 CVSS v4.0 9.2 分,由 Wiz、Calif 及 OpenAI 的研究人員發現並報告。
- CVE-2026-109618(記憶體不足導致損壞): out-of-memory 錯誤中斷請求,令資料處於部分初始化狀態。其後清理程式處理這個無效狀態,為遠端程式碼執行打開缺口。
- CVE-2026-109619(過時全域狀態 / use-after-free): PHP 在記憶體釋放後仍保留對請求資料的引用,同一 worker 的後續請求可能重用這些引用。研究人員已透過 session upload progress 功能示範程式碼執行。
- 記憶體外洩: 研究人員亦證實可在未經驗證的情況下讀取 PHP worker 記憶體,可能洩露密碼、session token 及 API key。
受影響及已修補的 PHP 版本
PHP 分支 | 已修補版本 | 備註 |
|---|---|---|
8.5 | 8.5.12 | 如暫未能修補,請同時設定 fatal_error_backtraces=0 |
8.4 | 8.4.27 | 立即升級 |
8.3 | 8.3.36 | 立即升級 |
8.2 | 8.2.35 | 此分支將於 2026 年 12 月 31 日終止支援 |
8.1 / 8.0 / 7.4 | 沒有常規上游版本 | 使用發行版或供應商修補版本、套用原始碼 backport,或升級 |
Linux 發行版經常在不更改版本號的情況下 backport 修補。在 Ubuntu、Debian、Red Hat、Alpine 等系統上,請查看套件 changelog 或供應商安全公告是否包含這兩個 CVE 編號,而不要只依賴版本號。
PHP2Shell 修補步驟
- 盤點所有 PHP 執行環境。 包括網頁伺服器、容器、CI 映像及其他安裝。注意命令列的
php -v未必是實際處理網頁請求的程式,請一併檢查phpinfo()或 FPM pool。 - 更新至已修補版本。 Ubuntu 或 Debian 範例:
sudo apt update && sudo apt install --only-upgrade php8.3 php8.3-fpm。RHEL 系統使用dnf update php*。Docker 則以最新官方 php 映像標籤重新建置並部署。 - 重新啟動所有 PHP 進程。 重新啟動 PHP-FPM、Apache(mod_php)、LiteSpeed 或 FrankenPHP,確保沒有舊 worker 仍在執行有漏洞的程式碼。
- 驗證。 確認已安裝的套件及正在運行的 worker 均顯示為已修補版本。
- 修補後檢查記憶體設定。 修補引入了更嚴格的記憶體上限,可能中止長時間執行的腳本及 shutdown handler,請測試匯入、報表等重型工作。
- 如曾暴露,請更換機密資料。 若伺服器曾在互聯網上運行有漏洞的版本,考慮到記憶體外洩風險,應更換資料庫密碼、API key 及 session secret。
今天未能修補時的臨時緩解措施
以下措施可降低風險,但 未能完全修補漏洞。只應作為正式更新前的過渡方案。
- 針對 CVE-2026-109619: 在 php.ini 或 FPM pool 設定中加入
session.upload_progress.enabled=0,然後重新啟動 worker。不要依賴 ini_set() 或 .user.ini。PHP 8.5 請同時設定fatal_error_backtraces=0。 - 針對 CVE-2026-109618: 設定
post_max_size=8M(如需上傳可設 32M),並讓upload_max_filesize低於此值;在 Nginx、Apache 或 WAF 限制請求大小,並封鎖應用程式不需要的 multipart 請求。 - 記憶體限制: 使用容器或 cgroup 記憶體限制,而非 RLIMIT_AS 或 RLIMIT_DATA。
- PHP-FPM: 如效能許可,可考慮
pm.max_requests=1,令每個 worker 只處理一個請求。 - 減少暴露面: 將管理後台及測試環境置於 VPN 或 IP 白名單之後,並啟用針對 PHP2Shell 的 WAF 或 CDN 規則。
伺服器可能已成為攻擊目標的跡象
- 異常的 multipart POST 請求,隨後日誌出現記憶體上限錯誤
- HTTP 500 回應急增
- 異常龐大的 PHPSESSID cookie
- PHP worker 無故崩潰或重啟
- 上傳或快取資料夾出現新增或被修改的 PHP 檔案
本週其他重大漏洞
緊急事項不止 PHP。Microsoft 2026 年 10 月 Patch Tuesday(10 月 13 日)修補了約 1,411 個漏洞,其中 70 個屬 Critical 級別,另有三個零日漏洞。CISA 亦於 10 月 13 日至 16 日期間,將多個正被利用的漏洞加入 Known Exploited Vulnerabilities(KEV)目錄。
CVE | 產品 | 問題 | 狀態 |
|---|---|---|---|
CVE-2026-96951 | Windows Shell | 繞過 Mark of the Web | 正被利用,經 Windows Update 修補 |
CVE-2026-108398 | .NET Framework | 繞過安全功能(WDAC) | 已公開披露 |
CVE-2026-104935 | Ivanti Connect Secure | 繞過身份驗證 | 已列入 CISA KEV |
CVE-2026-0322 | Palo Alto Networks PAN-OS | 程式碼注入 | 已列入 CISA KEV |
CVE-2025-61624 | Fortinet 產品 | 路徑遍歷 | 已列入 CISA KEV |
CVE-2026-76519 | Cisco Secure Email Gateway | 路徑遍歷 | 已列入 CISA KEV |
CVE-2026-102764 | BeyondTrust Remote Support | 繞過身份驗證 | 已列入 CISA KEV |
CVE-2026-21589 | Atlassian 產品 | 檔案及目錄外洩 | 已列入 CISA KEV,有公開 PoC |
處理以上所有漏洞時,請優先處理面向互聯網的系統,例如 VPN 閘道、防火牆、遠端支援工具及郵件閘道。套用供應商修補、確認已安裝版本;如未能即時修補,請將管理介面限制於受信任網絡,或停用受影響的功能。
Windows 10 及 11 用戶須知
2026 年 10 月更新是 Windows 11 24H2 Home 及 Pro,以及 Windows 10 Enterprise LTSB 2016 的最後一次安全更新。仍在使用這些版本的電腦應盡快計劃升級。
OneXT Digital 如何協助你
不少企業在不同主機、版本及外掛上營運數十個 PHP 網站,令緊急修補既慢且具風險。OneXT Digital 團隊可審查你的 PHP、WordPress、WooCommerce 及 Magento 環境,套用 PHP2Shell 修補或臨時加固措施,於更新後測試網站,並建立持續維護機制,讓下一個重大 CVE 能在數小時內而非數星期內處理妥當。歡迎聯絡我們,免費檢查網站安全。

