PHP・Node.jsの重要なセキュリティ更新:WireBoardの対応と、サイト運営者がすべきこと

Patrick Wunderlin
Patrick Wunderlin
PHP・Node.jsの重要なセキュリティ更新:WireBoardの対応と、サイト運営者がすべきこと

本日2026年10月21日、PHPとNode.jsのセキュリティ更新が公開されました。特にPHPで修正された2件の脆弱性は深刻です。ログインせずにWebサーバー上でコードを実行できるもので、修正版の公開前から攻撃が報告されています。

WireBoardはすでに更新済みです。サービスの停止はなく、WireBoardのアカウントや計測スクリプトについて、お客様にご対応いただくことはありません。

ただし、ご自身のWebサイトやアプリで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開発チームは、深刻度が「緊急」にあたる2件の脆弱性を修正しました。いずれも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の展開処理でバッファの範囲外に書き込みが発生し、リモートコード実行につながる可能性があります。Brotli圧縮されたデータを返すサーバーに対してfetch()を呼び出すだけで、影響を受ける可能性があります。

  • CVE-2026-105483 / CVE-2026-106069:IPアドレスを特殊な形式で表記することで、TLSのホスト名検証を回避できる脆弱性です。

  • CVE-2026-105482:dns.resolveが、コード内で検証した名前とは別の名前を解決してしまう可能性があります。

WireBoardの対応

本日、WireBoardのインフラ全体に両方の更新を適用しました。サービスの停止やデータへの影響はありません。WireBoardはこれまでどおりお使いいただけます。

対応が必要なのは?

ご自身のWebサイト、アプリ、サーバーで次のいずれかを使っている場合は、対応が必要です。

  • PHPを直接使っている場合や、WordPress、WooCommerce、Magento、Drupal、Joomla、Laravel、SymfonyなどのCMSやフレームワーク経由で使っている場合。

  • Node.jsを使っている場合。Next.js、Nuxt、Express、NestJSのアプリや、Node.jsで動くバックエンドサービス、ビルドサーバーなどが該当します。

わからない場合は、開発担当者やホスティング事業者に確認してください。「このサイトはPHPかNode.jsを使っていますか? 本日公開されたセキュリティ更新は適用済みですか?」と聞けば十分です。

バージョンの確認方法

PHP

確認すべきなのは、Webサーバーで使われているバージョンです。ターミナルでphp -vを実行すると、コマンドライン用のPHPのバージョンが表示されますが、Webサーバーのものとは異なる場合があります。

  1. サイトのWebルートにinfo.phpというファイルを作り、<?php phpinfo();と記述します。

  2. ブラウザーでそのファイルを開き、上部のPHP Versionを確認します。

  3. 確認後はすぐにファイルを削除してください。サーバーの詳しい設定情報が外部から見えてしまいます。

cPanelやPleskなど、多くのホスティング管理画面でもPHPのバージョンを確認できます。

Linuxディストリビューションのパッケージをお使いの場合:Ubuntu、Debian、RHELなどでは、バージョン番号を変えずに修正をバックポートすることがあります。その場合は、パッケージの変更履歴に該当のCVE IDが記載されているか確認してください(手順は後述)。

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 Security NoticesまたはDebian Security Trackerを確認し、時間をおいて再度試してください。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の更新だけだと公に説明しています。回避策を適用済みの場合は更新が終わるまで維持し、必ず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などの系列はサポートが終了しており、修正版は提供されません。

すぐにアップグレードできない場合は、対応が終わるまでWebアプリケーションファイアウォール(WAF)でサイトを保護する、アクセスを制限するなどの措置を検討してください。

参考情報

公式のセキュリティ情報

解説・手順ガイド

この記事をシェア
コピーしました
Patrick Wunderlin

執筆者

Patrick Wunderlin

WireBoard.io 創設者。EPFL 卒のコンピューターエンジニアで、Web 解析、リアルタイムデータ処理、そしてビジネスの成長を支えるツールづくりに情熱を注いでいます。

WireBoard

サイトをリアルタイムで追跡

自分で組み立てるライブダッシュボード。無料で開始。クレジットカード不要。