お役立ち情報

ISSコラム

column by iss

【緊急】PHPに重大な脆弱性「PHP2Shell」 世界中のWebサイトに影響、今すぐ確認と更新を

 

2026年10月21日、PHPの開発チームは、PHP本体に見つかった2件の重大な脆弱性(CVE-2026-109618、CVE-2026-109619、通称「PHP2Shell」)を修正したバージョンを緊急公開しました。ログイン不要で、外部からサーバー上の任意のプログラムを実行されるおそれがあり、すでに攻撃の試みも観測されています。PHPは、サーバー側の言語が判明しているWebサイトの約7割で使われており、WordPressやEC-CUBEなどで構築したサイトも対象です。本コラムでは、何が起きているのか、そして自社で何を確認し、どう対応すべきかを解説します。

1. 何が起きているのか

今回の脆弱性は、WordPressなどのアプリケーションではなく、それらを動かす土台であるPHP本体(実行環境)に存在します。深刻度はCVSS v4.0で9.2と、「緊急」レベルに分類されています。

脆弱性の情報が予定より早く外部に漏れたため、PHPの開発チームは修正版の公開を前倒ししました。修正版の公開前から攻撃の兆候が観測されており、国内でも複数の企業やレンタルサーバー事業者が、予防的にサービスを一時停止したり、緊急メンテナンスを行ったりしています。

2. 何が危ないのか

2件の脆弱性は、いずれもPHPがリクエストを処理する際の、メモリの扱いに関する不具合です。

  • CVE-2026-109618:メモリが不足したときの処理に不具合があります。準備が途中までしか済んでいないデータが、後片付けの処理で正しいデータとして扱われてしまいます。
  • CVE-2026-109619:使い終わって解放したメモリを指す情報が残ってしまう不具合です。同じプロセスで処理される次のリクエストが、その古い情報を使ってしまいます(解放後使用)。

これらを悪用されると、攻撃者はログインすることなく、細工したリクエストを送るだけで、サーバー上で任意のプログラムを実行できるおそれがあります。研究者は、WordPress・Drupal・Joomlaに対して認証なしで遠隔からコードを実行できることや、認証情報や暗号鍵が読み取られるおそれがあることを実証しています。


図2 今回の脆弱性が狙われる仕組み

ここがポイント アプリケーションを最新の状態にしていても、PHP本体が古ければ攻撃を受ける可能性があります。「WordPressは更新しているから大丈夫」とは言えない点に注意が必要です。

3. 影響を受ける範囲

PHPの開発チームは、Webリクエストを処理しているすべてのPHP環境が危険にさらされているとしています。対象となる実行形態は、PHP-FPM、Apacheのモジュール版(mod_php)、php-cgi、FrankenPHP、LiteSpeedです。なかでもmod_phpは、アプリケーションの処理が始まる前に攻撃が成立することが実証されており、最も危険度が高いとされています。

影響はPHP 5.4までさかのぼると報告されています。バージョンごとの状況は次のとおりです。


研究者の推計では、インターネットから接続できるPHPサーバーは世界で190万台を超え、そのうち130万台以上が影響を受ける可能性があるとされています。

4. 今すぐ取るべき対応

対応の流れを図にまとめました。まずは自社のPHPのバージョンを確認し、バージョンに応じた対応を取ってください。


図3 バージョン別の対応の流れ

 

① PHPを使っているシステムを洗い出す

自社のサーバーだけでなく、クラウド環境、コンテナイメージ、レンタルサーバー、外部の委託先が運用しているサイトまで含めて、PHPのバージョンと実行形態を確認します。

② 修正版へ更新する

8.2〜8.5系は、修正版へ更新してください。Linuxディストリビューションの標準パッケージを使っている場合は、版数が古く見えても修正が取り込まれていることがあります。版数ではなく、更新履歴(チェンジログ)にCVE番号が記載されているかで判断してください。コンテナで運用している場合は、ベースイメージを更新したうえで再ビルドが必要です。

なお、修正版では、メモリの上限に達した時点で処理を終了する仕組みが加わっています。更新後は、memory_limitやpost_max_sizeの設定を見直し、アプリケーションが正常に動作するかを確認してください。

③ レンタルサーバーを利用している場合

事業者からのお知らせを確認してください。管理画面でPHPのバージョンを選ぶ形式のサービスでは、修正版が選ばれているかを確認し、必要に応じて切り替えてください。

④ すぐに更新できない場合の暫定策

公表されている暫定策を紹介します。ただし、いずれも攻撃をすべて防げるものではありません。あくまで更新までのつなぎとして検討してください。

  • CVE-2026-109619への対策:php.iniで session.upload_progress.enabled を 0(Off)に設定し、すべてのPHPプロセスを再起動します。PHP 8.5では、fatal_error_backtraces も 0 に設定します。
  • CVE-2026-109618への対策:アプリケーション側で上書きされないよう memory_limit を -1 に設定します。あわせて post_max_size を小さく保ち、Webサーバーやリバースプロキシでリクエストのサイズを制限します。
  • WAFを利用している場合は、ベンダーが提供する防御ルールが適用されているかを確認します。

⑤ 侵害の痕跡がないかを確認する

修正版の公開前から攻撃の試みが観測されているため、更新した後も、すでに侵入されていないかを確認することが重要です。次のような点を確認してください。

  • PHPのプロセス(php-fpm、php-cgi、httpd、apache2など)から、シェル(sh、bashなど)や、curl・wgetなどの通信用ツールが起動していないか
  • whoami・id・uname など、偵察に使われるコマンドがWebサーバーから実行されていないか
  • 公開ディレクトリに見覚えのないPHPファイル(Webシェル)が置かれていないか、管理者アカウントが追加されていないか

不審な点が見つかった場合は、ログを保全したうえで、インシデント対応を開始してください。メモリ上の情報が漏えいした可能性も考え、パスワードやAPIキー、暗号鍵の変更もあわせて検討してください。

5. まとめ

PHP2Shellは、PHP本体に存在する脆弱性であるため、影響範囲が非常に広いことが特徴です。修正版はすでに公開されています。まずは自社のPHP環境を把握し、速やかに更新してください。サポートが終了した古いバージョンを使い続けている場合は、これを機に移行計画を前倒しすることをお勧めします。

状況は現在も刻々と変化しています。最新の情報は、PHP公式サイトやセキュリティ機関の発表をご確認ください。

PHP環境の棚卸しや脆弱性診断、侵害の有無の調査など、対応にお困りの際はお気軽にご相談ください。

※本コラムは2026年10月22日時点の公開情報をもとに作成しています。攻撃の状況や推奨される対応は今後変わる可能性があります。


参考情報