PHP2Shell とは
PHP2Shell は、2026年10月21日の緊急リリースで公表された PHP コアの2件のリモートコード実行(RCE)脆弱性の通称です。いずれも CVSS v4.0 9.2 と評価されています。PHP エンジン自体の不具合のため、その上で動く WordPress、Laravel、EC-CUBE、Drupal、独自開発のコードなど、すべてが影響を受けます。
- CVE-2026-109618 — リクエストの初期化中(multipart 解析)にメモリ不足が発生すると内部データが未初期化のまま残り、後処理がそれを正しいデータとして扱ってしまいます。Apache
mod_phpでは、アプリケーションのコードが動く前に認証なしで RCE が成立すると PHP が報告しています。 - CVE-2026-109619 — リクエストに属する内部状態が、参照先のメモリ解放後も残り、同じワーカーの次のリクエストが古いデータを使ってしまいます。致命的エラー後のセッションアップロード進捗や、PHP 8.5 の致命的エラーのバックトレースが確認済みの経路です。
修正リリースの前日に詳細が流出し、数時間以内に悪用が観測されました。日本の国家サイバー統括室も、運営者に対して直ちに更新するよう呼びかけています。
影響を受けるバージョン
| ブランチ | 影響あり | 修正版 |
|---|---|---|
8.5 | < 8.5.12 | 8.5.12 |
8.4 | < 8.4.27 | 8.4.27 |
8.3 | < 8.3.36 | 8.3.36 |
8.2 | < 8.2.35 | 8.2.35 |
8.1 · 8.0 · 7.4 | すべてのバージョン | 公式リリースなし(ベンダーのバックポートのみ) |
7.3 · 5.x | すべてのバージョン | — |
Web リクエストを処理するすべての SAPI が対象です:PHP-FPM、Apache mod_php(最もリスクが高い)、php-cgi、LiteSpeed、FrankenPHP。
このチェッカーの仕組み
Watchpost は入力したページ(既定はトップページ)、そのリダイレクト先、index.php に通常の GET リクエストを数回送り、サーバーがすでに X-Powered-By または Server ヘッダーで公開している PHP のバージョンを読み取って、そのブランチの修正版と比較します。攻撃コードは一切送信しません。
- バージョン非公開 ≠ 安全。多くのサーバーは
expose_php = Offを設定しているか、ヘッダーを削除する CDN の背後にあります。その場合はさらに調べます:放置されたphpinfo()ページ(/info.php、/phpinfo.phpなど)から正確なバージョンを、Apache/2.4.41 (Ubuntu)のようなServerバナーから OS と標準の PHP を特定します。PHP があるのに修正を確認できない場合は、サーバー上で確認するまで脆弱とみなすよう警告します。 - ディストリビューション版(例:
8.3.6-0ubuntu0.24.04.13)は、元のバージョン番号を変えずに修正が適用されます。既知の Ubuntu の修正版は判定できますが、それ以外はベンダーの告知をご確認ください。 - 結果はドメインごとに10分間キャッシュされます。修正後、少し時間をおいて再確認できます。
自分で確認する
# 1. What the site announces to the world
curl -sI https://your-site.example | grep -iE '^(x-powered-by|server):'
# 2. On the server (CLI and the web SAPI can differ!)
php -v
php-fpm8.3 -v # or: php-fpm -v / httpd -M | grep php
# 3. Distribution package (Ubuntu / Debian / RHEL)
dpkg -l | grep -E '^ii +php[0-9.]*-(common|fpm|cli)'
rpm -q php php-fpm重要なのは Web サーバーが実行しているバージョン(FPM または mod_php)であり、コマンドラインの php -v と一致するとは限りません。
対処方法
- PHP を更新:8.5.12、8.4.27、8.3.36、8.2.35、またはディストリビューションの修正済みパッケージ(Ubuntu 24.04:
8.3.6-0ubuntu0.24.04.13、Ubuntu 22.04:8.1.2-1ubuntu2.28、Debian 13:8.4.27-1~deb13u1)。 - すべての PHP ワーカーを再起動。古い FPM ワーカーは再起動するまで脆弱なバイナリのまま動き続けます:
sudo systemctl restart php8.3-fpm # every FPM pool / version you run sudo systemctl restart apache2 # mod_php: restart Apache itself (httpd on RHEL) - 共用レンタルサーバー:事業者の PHP(cPanel EA-PHP、CloudLinux alt-php など)に修正が適用済みか確認するか、コントロールパネルで修正済みバージョンに切り替えてください。
- 8.1 以前を使用中:8.2 以降への移行を計画してください。ベンダーのバックポートは時間稼ぎにすぎません。
- 修正後は
expose_php = Offを設定し、バージョンを公開しないようにしましょう。
今夜中に更新できない場合
PHP は「設定変更だけで完全に緩和する方法はない」としています。更新までの間:
- サーバーへのインターネットからのアクセスを制限してください(VPN、IP 許可リスト、CDN でのメンテナンス画面)。Apache
mod_phpのサーバーを最優先に。 session.upload_progress.enabled = 0、PHP 8.5 ではfatal_error_backtraces = 0を設定。これらは既知の特定経路を塞ぐだけです。- 新たに作られた PHP ファイル、Web ユーザーが起動した不審なプロセス、サーバーからの外向き通信を監視してください。
参考情報
このチェッカーが答えるのは1つの質問だけです。無料スキャンでは、公開ファイル、漏えいしたキー、TLS、ヘッダー、DNS など誰でも確認できる 50 以上の項目を診断し、ドメインの所有を確認するとさらに 200 以上の詳細な診断を利用できます。
フルスキャンを実行