セキュリティ勧告 · 2026年10月21日公開

PHP リモートコード実行の脆弱性php2shell チェック

CVE-2026-109618 と CVE-2026-109619 は、認証なしで PHP の Web サーバー上でコードを実行できる脆弱性です。サイトのアドレスで影響を確認し、環境に合った対策をすぐに見つけられます。

CVSS v4.0
9.2 Critical(早急な対応が必要)
攻撃条件
リモート · 認証不要

2026年10月22日 時点の公開情報に基づく

サイトチェック

レスポンスヘッダーに表示される PHP バージョンで判定します。攻撃リクエストは送りません。

Web ルートにある既知の phpinfo パス 5か所に追加でリクエストします。見つかれば、ヘッダーでバージョンを隠しているサーバーでも実際のバージョンと設定を確認できます。

確認するパスと注意事項
  • 確認するパス:/phpinfo.php, /info.php, /test.php, /i.php, /php_info.php
  • 各パスに GET リクエストを 1回ずつ送り、phpinfo ページが見つかった時点で止めます。レスポンスは先頭の 512KB までしか読みません。
  • 攻撃リクエストではありませんが、公開されていないパスを要求するため、サイトのセキュリティ機器やログにパス探索として記録される場合があります。
  • 見つかったパス、PHP バージョン、実行方式、関連する設定値のみを保存し、ページの内容は保存しません。
  • 非侵入型チェック
  • 数秒で結果
  • サーバー点検スクリプト付き

点検したアドレスと結果は、内部統計のため1年間保管します。

影響を受けるバージョンと修正バージョン

以下の範囲に該当する PHP は更新が必要です。Web リクエストを処理するすべての PHP(PHP-FPM、Apache mod_php、CGI/FastCGI)が対象です。

PHP バージョン脆弱なバージョン修正バージョン
PHP 8.58.5.12 未満8.5.12 以降
PHP 8.48.4.27 未満8.4.27 以降
PHP 8.38.3.36 未満8.3.36 以降
PHP 8.28.2.35 未満8.2.35 以降
PHP 8.1 以前すべて修正リリースなし(サポート終了)
  • PHP 8.6.0 は RC4 から修正が含まれています。開発版のため、本番環境では使わないでください。
  • PHP 8.2 は 2026年12月31日にサポートが終了します。8.2.35 に更新する場合も、上位バージョンへの移行を早めに計画してください。

ディストリビューションのバックポートに注意

  • Ubuntu、Debian、RHEL 系のディストリビューションや cPanel、マネージドホスティングでは、バージョン番号を変えずにセキュリティ修正だけを適用(バックポート)することがあります。たとえば Ubuntu 24.04 の PHP は 8.3.6 と表示されますが、修正が適用されている場合があります。
  • そのため、上の表のバージョン番号だけで判断すると誤ることがあります。最終確認は パッケージのリビジョンとディストリビューションのセキュリティ情報(Ubuntu USN、Debian DSA、Red Hat RHSA)で行ってください。
  • パッケージの変更履歴から CVE 番号を探すコマンドは、下の対応ガイドの「1. 確認」タブにあります。サーバー点検スクリプトも、バックポートの痕跡を見つけると参考メモを表示します。

対応ガイド

段階とサーバー環境を選ぶと、必要なコマンドと設定だけを表示します。

レスポンスヘッダーでわかるのは一部だけです。バージョンを隠しているサーバー、社内ネットワークのサーバー、複数の PHP が入ったサーバーは、サーバー上で直接確認する必要があります。

Cloudbric サーバー点検スクリプト

インストールされたすべての PHP(PHP-FPM、CGI、CLI、Apache mod_php)を探し、バージョン、関連する設定、設定の上書き、更新後に再起動されていないプロセスまで確認します。読み取り専用で、外部とは通信しません。サイトチェックを実行すると結果画面からダウンロードできます。

サイトチェックへ

コマンドで直接確認

サーバー環境

例は PHP 8.3 を前提としています。バージョン番号はサーバーに合わせて変更してください。CLI と Web(PHP-FPM、mod_php)では設定が異なる場合があります。

php -v
php-fpm8.3 -v                     # FPM binary name differs per version
dpkg -l | grep -E '^ii\s+(php|libapache2-mod-php)'
apt changelog php8.3-common | grep -iE 'CVE-2026-10961[89]'

完了の目安

チェック状態は保存されません。

脆弱性の概要

PHP プロジェクトは 2026年10月21日に 2件の脆弱性を公開し、セキュリティアップデートを配布しました。2件をあわせて php2shell と呼びます。

CVE-2026-109618 メモリ不足処理中の状態破損
リクエストデータの初期化途中でメモリ不足(OOM)処理が PHP を中断すると、リクエストの後処理が不完全なデータを正常なデータとして扱い、リモートコード実行につながる可能性があります。
CVE-2026-109619 ワーカーに残ったグローバル状態の再利用
リクエストが使っていた内部状態がメモリ解放後も残り、同じワーカーが処理する次のリクエストがそれを使います(use-after-free)。session.upload_progress 機能が関連する経路です。

影響範囲

  • PHP-FPM、Apache mod_php、CGI/FastCGI など Web リクエストを処理するすべての PHP
  • アプリケーションのコードが実行される前の段階で成立するため、ログイン機能のないサイトも対象
  • PHP を内蔵したネットワーク機器、アプライアンス、管理コンソール(メーカーのパッチが必要)
  • CLI 専用の PHP は Web 経由では露出しませんが、あわせて更新を推奨

更新までの空白期間を Cloudbric WAF+ で埋めましょう

稼働中のサービスはすぐに更新できないことが少なくありません。Cloudbric WAF+ は php2shell(CVE-2026-109618、CVE-2026-109619)の攻撃の試みを検知・遮断するセキュリティルールを適用しており、更新を準備する間の Web サービスの露出を減らせます。

WAF はパッチの代わりにはなりません。オリジンサーバーに直接アクセスできる場合は保護されないため、オリジンへのアクセス制限と更新をあわせて進めてください。

緊急導入を相談する

よくある質問

「バージョン非公開」は安全という意味ですか?

いいえ。レスポンスヘッダーに PHP バージョンが表示されていないという意味です。バージョンを隠しているサーバーも脆弱な可能性があるため、サーバー点検スクリプトで確認してください。

インターネットで公開されている攻撃コード(PoC)で確認してもよいですか?

推奨しません。PHP 公式の発表とセキュリティアドバイザリーには攻撃コードは含まれていません。「php2shell PoC」として出回っているコードは出所の確認が難しく、マルウェアが含まれている可能性があるため、本番サーバーや業務用 PC で実行しないでください。影響の有無は、このページのような非侵入型のチェックで確認してください。

phpinfo の公開確認では何をしますか?

チェックフォームでこのオプションを有効にすると、レスポンスヘッダーの確認に加えて、Web ルートの既知の phpinfo パス(/phpinfo.php, /info.php, /test.php, /i.php, /php_info.php)に順番に GET リクエストを送ります。phpinfo ページが見つかれば、ヘッダーでバージョンを隠しているサーバーでも、実際の PHP バージョンと Web に適用されている設定を確認できます。phpinfo ページの公開自体が情報漏えいにあたるため、見つかった場合は削除を推奨します。公開されていないパスを要求するため、サイトのセキュリティ機器やログにパス探索として記録される場合があります。自身が管理するサイトでのみ有効にしてください。

ディストリビューションのパッケージのバージョンが修正版より古く表示されます。

Ubuntu、Debian、RHEL 系では、バージョン番号を変えずにセキュリティ修正だけを適用(バックポート)することがあります。ディストリビューションのセキュリティ情報で、この CVE が修正されたパッケージのバージョンを確認してください。スクリプトは点検した PHP ごとに、その PHP が属するパッケージの変更履歴から CVE 番号を探して参考メモを表示し、パッケージでインストールされていない PHP にはディストリビューションのバックポートが適用されないことを知らせます。

スクリプトで CLI だけが脆弱と表示されます。

CLI は Web リクエストを処理しないため、Web 経由で露出する経路ではありません。それでも、同じサーバーの PHP はまとめて更新するほうが安全です。

社内ネットワークのサーバーやコンテナはどう確認しますか?

外部から接続できないアドレスでも、チェック後の結果画面からスクリプトをダウンロードできます。コンテナの場合は、コンテナの中でスクリプトを実行してください。

どのような情報が保存されますか?

入力したアドレス、対象サーバーの応答情報(IP、ステータスコード、ヘッダー)、判定結果、ページの言語、アクセス元の国、スクリプトのダウンロードとお問い合わせのクリック有無を、内部統計のため1年間保管します。チェックを依頼した方の IP アドレスとブラウザー情報は、チェック記録には保存しません。Web サーバーのアクセスログには IP アドレスとブラウザー情報が90日間残りますが、結果リンクや記録番号は残らないため、チェック記録とは結び付きません。お問い合わせを押すと、判定の種類(例:脆弱)のみが Cloudbric のウェブサイトに渡されます。このページは Cookie を使用しません。 phpinfo の確認を有効にした場合は、見つかったパス、PHP バージョン、実行方式、関連する設定値もあわせて保管し、ページの内容は保存しません。

チェックのリクエストはどこから送られますか?

チェックのリクエストは User-Agent「Cloudbric-php2shell-check/1.0 (+https://php2shell.cloudbric.com)」で送信します。HEAD リクエストを1回だけ送り、拒否された場合は GET リクエストを1回送ります。レスポンス本文は読み取りません。 phpinfo の確認を有効にすると、既知のパス 5か所に GET リクエストを追加で送り、レスポンスは先頭の 512KB までしか読みません。