今天(2026 年 10 月 21 日),PHP 與 Node.js 都發布了安全更新。其中 PHP 的漏洞尤其嚴重:本次修補的兩個重大漏洞,讓攻擊者不必登入就能在網頁伺服器上執行程式碼,而且修補發布前就已傳出攻擊案例。
WireBoard 已完成更新。更新過程沒有停機,你的 WireBoard 帳號和追蹤程式碼都不需要做任何調整。
不過,如果你自己的網站或應用程式使用 PHP 或 Node.js,請繼續往下看,並在今天完成更新。
重點整理
更新至 | 嚴重程度 | |
|---|---|---|
PHP | 8.5.12、8.4.27、8.3.36 或 8.2.35(或供應商已修補的套件) | 重大(CVSS 9.2),無須驗證身分即可遠端執行程式碼 |
Node.js | 26.12.1、24.22.1 或 22.23.4 | 高 |
使用 WordPress、Magento、Drupal、Laravel 或其他 PHP 應用程式?你的網站就有用到 PHP,請立即更新。
使用共享主機或代管服務?PHP 修補由主機商負責,請確認對方已完成更新。
更新 PHP 後,請重新啟動 PHP-FPM 或 Apache,否則系統仍會繼續執行舊版。
還在使用已停止支援的版本(PHP 8.1 或更舊版本、Node.js 25、23、20 或更舊版本)?這些版本不會收到官方修補,請安排升級至仍受支援的版本。
這次發生了什麼事?
PHP:「PHP2Shell」(CVE-2026-109618 與 CVE-2026-109619)
PHP 團隊修補了兩個重大漏洞,兩者的 CVSS v4.0 評分皆為 9.2:
CVE-2026-109618:PHP 在處理請求時耗盡記憶體,可能造成記憶體損毀,進而讓攻擊者遠端執行程式碼。
CVE-2026-109619:攻擊者可利用殘留的全域狀態,遠端執行程式碼。
在預設設定下,這兩個漏洞都能從遠端觸發,且不需要通過身分驗證。漏洞細節在原定發布日的前一天流出,因此修補尚未推出,資安公司就已觀察到針對 PHP 網站的攻擊與探測。有幾家公司為求謹慎,甚至暫時關閉服務,等完成更新後才恢復。
所有仍受支援的 PHP 分支都受影響,受影響範圍為各分支中早於 8.2.35、8.3.36、8.4.27 與 8.5.12 的版本。
Node.js:2026 年 10 月安全更新
Node.js 針對 26.x、24.x 與 22.x 系列發布修補,涵蓋 10 個漏洞,其中 4 個的嚴重程度為「高」。以下幾項最值得注意:
CVE-2026-111497:Brotli 解壓縮器存在越界寫入漏洞,可能讓攻擊者遠端執行程式碼。應用程式只要透過
fetch()向會回傳 Brotli 壓縮資料的伺服器發出請求,就可能觸發漏洞。CVE-2026-105483 / CVE-2026-106069:攻擊者可利用 IP 位址的非典型寫法,繞過 TLS 主機名稱驗證。
CVE-2026-105482:
dns.resolve實際查詢的名稱,可能與程式碼檢查過的名稱不同。
WireBoard 做了哪些處理?
我們今天已在 WireBoard 的所有基礎設施套用這兩項更新。更新過程沒有停機,資料未受影響,你也可以照常使用 WireBoard。
你是否受影響?
如果你自己的網站、應用程式或伺服器使用下列技術,就需要處理:
PHP,包括直接使用 PHP,或透過 WordPress、WooCommerce、Magento、Drupal、Joomla、Laravel、Symfony 等 CMS 或框架使用。
Node.js,例如 Next.js、Nuxt、Express 或 NestJS 應用程式,以及任何執行 Node 的後端服務或建置伺服器。
不確定嗎?問開發人員或主機商就好:「我們的網站有用到 PHP 或 Node.js 嗎?有更新到今天發布的安全版本了嗎?」
如何確認版本
PHP
要確認的是網頁伺服器實際使用的版本。在終端機執行 php -v,看到的是命令列使用的 PHP 版本,兩者可能不同。
在網站根目錄建立名為
info.php的檔案,內容為<?php phpinfo();用瀏覽器開啟這個檔案,查看頂端的 PHP Version。
查完後請立即刪除檔案,因為它會暴露伺服器的完整設定。
許多主機控制台(如 cPanel、Plesk)也會顯示 PHP 版本。
使用 Linux 發行版套件請注意:Ubuntu、Debian、RHEL 等發行版經常將修補回移植到舊版,但不變更版本號碼。這種情況下,請改查套件的變更紀錄,確認是否包含對應的 CVE 編號(詳見下方)。
Node.js
node -v
如果顯示 v26.12.1、v24.22.1、v22.23.4,或同系列中更新的版本,就已包含修補。
如何更新 PHP
請依照伺服器上 PHP 的安裝方式,參考對應段落。
共享主機或代管服務
PHP 由服務商管理,也由對方負責修補。請先查看服務狀態頁或公告,再按照上述步驟,用 phpinfo() 確認版本。如果控制台可自行選擇 PHP 版本,而你目前使用 8.1 或更舊版本,請先確認 CMS 和外掛相容,再切換至 8.2 或更新版本。
Ubuntu / Debian
sudo apt update
# replace 8.3 with the PHP branch you use
sudo apt install --only-upgrade 'php8.3-*'
# confirm the fix is included
apt changelog php8.3-fpm | grep -E 'CVE-2026-10961(8|9)'
如果最後一個指令沒有輸出任何內容,表示修補尚未進入你使用的發行版套件庫。請查看 Ubuntu 安全公告或 Debian 安全追蹤系統,稍後再試。如果你使用 Ondřej Surý 提供的 PHP 套件,也以同樣方式從該套件庫更新。
RHEL / AlmaLinux / Rocky Linux
dnf module list php # see which PHP stream you're on
sudo dnf upgrade 'php*'
# confirm the fix is included
rpm -q --changelog php-fpm | grep -E 'CVE-2026-10961(8|9)'
如果你使用 Remi 套件庫,請從該套件庫更新。
Docker
拉取新映像檔不會更新正在執行的容器。請拉取映像檔、重新建置,再重新建立容器:
docker pull php:8.3-fpm # use your tag
docker compose build --pull
docker compose up -d
若要更保險,可在 Dockerfile 中指定已修補的確切版本,例如 FROM php:8.3.36-fpm。
自行編譯或使用 Windows
請至 php.net/downloads 下載已修補的版本。
接著重新啟動 PHP
這一步很容易漏掉。正在執行的程序必須重新啟動,否則仍會繼續使用舊版 PHP:
# PHP-FPM (Debian/Ubuntu; replace 8.3 with your branch)
sudo systemctl restart php8.3-fpm
# PHP-FPM (RHEL family)
sudo systemctl restart php-fpm
# Apache with mod_php
sudo systemctl restart apache2 # or httpd on RHEL
完成後再查看一次 phpinfo(),確認新版已生效。
「只改設定,不更新可以嗎?」
不行。先前網路上流傳過一些暫時的應變方式,例如關閉 session.upload_progress.enabled,但這些做法只能降低風險。一位 PHP 核心開發者已公開表示,更新 PHP 才是唯一真正有效的處理方式。如果你已採取暫時措施,請保留到更新完成,但不要因此省略更新。
如何更新 Node.js
安裝方式 | 更新方式 |
|---|---|
nvm | 執行 |
官方安裝程式 | 至 nodejs.org/en/download 下載你所用系列的最新版本 |
Docker | 指定已修補版本的標籤,例如 |
Homebrew | 執行 |
Linux 套件管理工具 | 照平常的方式,透過發行版或 NodeSource 套件庫更新。 |
託管平台(Vercel、Netlify、Heroku、Render 等) | 查看平台的執行環境設定與公告。多數平台會自動套用已修補的執行環境,但你可能需要重新部署。 |
更新後,請重新啟動應用程式(或重新部署),並用 node -v 確認版本。
如果你使用的版本已停止支援
官方只會為仍受支援的版本提供修補:
PHP:8.2、8.3、8.4 與 8.5。PHP 8.1 及更舊版本不會收到官方更新。部分 Linux 發行版與付費長期支援供應商會回移植修補,請向你的供應商確認;否則,升級至仍受支援的分支才是安全的做法。另外,PHP 8.2 的安全更新僅提供至 2026 年 12 月 31 日。
Node.js:22.x、24.x 與 26.x。25、23、20 等系列已停止支援,不會收到修補。
如果無法立即升級,可考慮先在網站前端部署網頁應用程式防火牆,或暫時限制存取,直到完成升級。
延伸閱讀
官方公告
實用指南