PHP 與 Node.js 重大安全更新:WireBoard 已完成修補,你該做些什麼?

Patrick Wunderlin
Patrick Wunderlin
PHP 與 Node.js 重大安全更新:WireBoard 已完成修補,你該做些什麼?

今天(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 版本,兩者可能不同。

  1. 在網站根目錄建立名為 info.php 的檔案,內容為 <?php phpinfo();

  2. 用瀏覽器開啟這個檔案,查看頂端的 PHP Version。

  3. 查完後請立即刪除檔案,因為它會暴露伺服器的完整設定。

許多主機控制台(如 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

執行 nvm install 24(或 22 / 26),接著執行 nvm alias default 24

官方安裝程式

至 nodejs.org/en/download 下載你所用系列的最新版本

Docker

指定已修補版本的標籤,例如 FROM node:24.22.1,再執行 docker pull 並重新建置。若使用 node:24 這類浮動標籤,從快取映像檔重新建置時,仍可能沿用舊版。

Homebrew

執行 brew update && brew upgrade node(或 node@24 / node@22)。Homebrew 的更新可能晚幾個小時;若需要立即更新,請使用 nvm 或官方安裝程式。

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 等系列已停止支援,不會收到修補。

如果無法立即升級,可考慮先在網站前端部署網頁應用程式防火牆,或暫時限制存取,直到完成升級。

延伸閱讀

官方公告

實用指南

分享這篇文章
已複製!
Patrick Wunderlin

作者

Patrick Wunderlin

WireBoard.io 創辦人。EPFL(瑞士聯邦理工學院洛桑校區)資訊工程師,熱衷於網站分析、即時資料處理,以及打造助企業成長的工具。

WireBoard

即時追蹤您的網站

完全由您親手打造的即時 dashboard。免費開始,不用信用卡,零麻煩。