PHP 與 Node.js 同日爆出重大漏洞:PHP2Shell、Node2Shell 事件整理與 Good Aidea 的因應
資安觀點
2026/10/21 PHP 與 Node.js 同日發布重大安全更新,台灣多家廠商 10/22 跟進公告。本文整理漏洞重點、受影響版本,以及 Good Aidea 平台與創作者各自該做的事。
發布日期:2026 年 10 月 27 日 | 本文引用資訊截至 2026 年 10 月 26 日,後續若官方有更新,以官方公告為準。
發生了什麼事
2026 年 10 月 21 日(UTC),PHP 與 Node.js 兩個最常見的網站執行環境同一天發布了重大安全更新。10 月 22 日起,台灣資安媒體與多家本土廠商(如眾至資訊)陸續公告受影響產品與修補時程,日本首相官邸亦罕見地對網站管理者發出警示。這不是單一軟體的問題,而是「你的網站跑在什麼版本上」的問題。
PHP:PHP2Shell(CVE-2026-109618、CVE-2026-109619)
- 性質:PHP 核心本身的漏洞,與你用什麼框架無關。可被未經驗證的攻擊者遠端執行程式碼(RCE),並伴隨類似 Heartbleed 的記憶體內容外洩。兩個 CVE 的 CVSS v4.0 皆為 9.2(Critical)。
- 受影響版本:8.2.x(< 8.2.35)、8.3.x(< 8.3.36)、8.4.x(< 8.4.27)、8.5.x(< 8.5.12)。
- 修補版本:8.2.35、8.3.36、8.4.27、8.5.12。
- 觸發條件:預設開啟的
session.upload_progress.enabled加上接受 multipart 上傳。攻擊者可控的 session ID 與上傳檔名被寫入 session 檔,後續請求反序列化時觸發 use-after-free。 - 無法立即升級時的部分緩解(官方建議,每項都只是局部):
session.upload_progress.enabled=0、8.5.x 另設fatal_error_backtraces=0、pm.max_requests=1,並重啟所有 worker。 - 注意:GitHub 上已出現假冒的 PoC,請勿下載執行來路不明的「驗證腳本」。Check Point 統計約 10% 的組織受影響,歐洲達 14%。
Node.js:10 月安全更新(含 Brotli RCE,CVE-2026-111497)
- 性質:Node.js 內建 Brotli 解壓縮器的越界寫入。當伺服器解壓攻擊者控制的 Brotli 資料(例如
Content-Encoding: br的請求、fetch()來自惡意伺服器的回應、啟用壓縮的 WebSocket frame)時,可能被遠端執行程式碼。嚴重度 High。 - 同批修補的其他漏洞(共 10 個 CVE):
dns.resolve對 NUL 位元組截斷主機名稱、TLS 主機名稱驗證對全形數字與非標準 IPv4 的處理瑕疵、HTTP keep-alive 回應錯配、crypto.randomUUID()在快照/SEA 中重複輸出等。 - 修補版本:26.x → 26.12.1;24.x(LTS)→ 24.22.1;22.x(LTS)→ 22.23.4。20.x 以下已終止維護,不會有修補。
- 附帶更新:內建 CA 信任清單移除了 eMudhra 中繼憑證(該公司因私鑰保管不當退出 TLS 憑證市場),OpenSSL、undici、c-ares 亦同步更新。
Good Aidea 的因應
Good Aidea 的架構分成兩層:平台本身(網站、後台、部署流程)與創作者的動態網站(你上傳含 Dockerfile 的 ZIP,由平台建置並以獨立容器運行)。兩層的責任不同,我們分開說明。
平台本身
- 平台以 Node.js 開發,建置映像的基底已固定為 Node.js 24.22.1,即本次修補版本;專案設定亦鎖定
>=24.22.1 <25,避免在低版本上建置。 - 平台不使用 PHP,不受 PHP2Shell 直接影響。
- 對外流量一律經過平台閘道,創作者網站的容器本身不直接對公網開放,只接受閘道以服務身分驗證後的轉發。這不能取代升級,但縮小了被直接掃描的面。
- 每個動態網站依方案套用固定的運算資源上限(執行個體數、記憶體、CPU、並行數、逾時),用量異常時會自動暫停對外服務(fail-close),避免單一站點被利用後拖垮其他站點。
創作者的動態網站:請你立刻檢查
動態網站的執行環境版本由你的 Dockerfile 決定,平台不會替你改動 base image。請依下列清單處理:
- 確認 base image 版本。例如
FROM php:8.3-fpm請改為明確的修補版php:8.3.36-fpm;FROM node:24請改為node:24.22.1(或對應 LTS 的修補版)。 - 重新建置並重新部署。平台會在每次部署時從 Dockerfile 重新建置映像(ZIP 內不接受
node_modules、vendor等相依目錄),所以只要 base image 版本更新並重新部署,就會拿到修補後的執行環境。 - Node.js 站點:若你的程式會對外
fetch()不受信任的來源,或接受 Brotli 壓縮的請求/WebSocket,更新前可先關閉 Brotli 解壓;使用--permission的請勿把它當成安全邊界。 - PHP 站點:無法立刻升級時至少先套用上述
php.ini緩解設定並重啟。 - Node.js 20 以下:已無修補,請直接升到 22 或 24 LTS。
- 部署後到「網站建置」頁確認線上版本已更新,並觀察「網站監控」是否有異常流量。
我們學到的事
這次兩個生態系同日修補、隔日即出現大量掃描與假 PoC,顯示「補丁釋出到被攻擊」的時間差已縮短到以小時計。對平台而言,能做的是把執行環境版本固定、把對外面縮到最小、讓重新部署夠簡單;對創作者而言,最有效的一件事仍然是:把 Dockerfile 的 base image 釘在明確的修補版本,然後重新部署。
參考資料
- JFrog Security Research,PHP2Shell: All You Need to Know About CVE-2026-109618 and CVE-2026-109619
- Sansec,PHP2Shell: PHP RCE (CVE-2026-109618, CVE-2026-109619)
- Qualys,PHP2Shell: Find, Mitigate, and Patch Now
- Astra Security,Node.js Security Release (October 2026): Brotli RCE + 9 CVEs
- Brandefense,Node2Shell: Fixed Node.js Versions and Check
- iThome,資安日報 2026 年 10 月 23 日:日本首相就 PHP2Shell 警告網站管理者
- iThome,Check Point:約 10% 組織受 PHP2Shell 影響
- iThome,眾至資訊公告多項產品受 PHP2Shell 影響並釋出更新
- iThome,eMudhra 中繼憑證私鑰事故
- 官方來源:PHP Releases、Node.js Security Releases
本文整理自上述公開來源,CVE 編號、版本號與數據以各來源發布時為準;不包含任何漏洞利用程式碼。

