セキュリティとプライバシー

PHP、深刻なリモートコード実行脆弱性「PHP2Shell」に対する緊急パッチを公開

PHPは、認証なしでリモートコード実行を可能にするランタイムエンジン内の2つの重大な脆弱性を修正するための緊急アップデートを発表しました。これらの欠陥はほぼすべてのPHPバージョンに影響し、すでに攻撃者が...

割れたガラスと漏れ出す回路を持つ脆弱なサーバーのイラスト
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

PHPプロジェクトは2026年10月21日、「PHP2Shell」と総称される2つの重大な脆弱性に対応するため、緊急セキュリティアップデートをリリースしました。これらの欠陥は個々のアプリケーションではなく、PHPコアランタイムに存在するため、攻撃者は認証なしでWebサーバー上で任意のコードを実行できます。脆弱性の詳細がオンラインで漏洩したため、PHPセキュリティチームは即座に対応し、予定より1日早くリリースを行いました。

何が起きたのか

CVE-2026-109618およびCVE-2026-109619として特定されたこれらの脆弱性は、CVSS v4.0深刻度評価で9.2という高リスクと判定されています。PHP 5.4以降のほぼすべてのバージョンに影響します。修正版はPHP 8.5.12、8.4.27、8.3.36、および8.2.35で利用可能です。これらのバグは言語エンジン自体に存在するため、脆弱なPHPインストール環境で配信される静的な「Hello World」ページですら危険にさらされます。最も高いリスクがあるのはApacheのmod_phpを使用するサーバーであり、アプリケーションコードが実行される前に、単一の未認証リクエストだけでエクスプロイトがトリガーされる可能性があります。

Wiz、Calif、OpenAIの研究チームがこれらの欠陥を発見し報告しました。AIツールの支援を得た彼らの作業により、PHP内に10年以上残存していたコードに対する動作するエクスプロイトの特定が加速されました。公式パッチ提供前には、Cloudflareが顧客への早期の悪用試行を観察していました。パッチリリース時点では、セキュリティ企業watchTowrが両方のCVEに対する活発な悪用試行を確認しましたが、特定の成功した侵入については当時公的に確認されていませんでした。BambooHRや複数のオランダ政府プラットフォームなどの主要サービスは、予防措置としてシステムをオフラインにしました。

仕組み

これらの脆弱性により、攻撃者はPHPワーカープロセスからメモリを読み取り、場合によってはリモートコード実行を達成できます。このメモリアクセスにより、攻撃者がコード実行権限を取得する前に、他のリクエストからのパスワード、APIキー、認証トークンなどの機密データが露呈する可能性があります。リスクプロファイルはサーバー構成によって異なります。mod_phpは即時の悪用に非常に脆弱ですが、PHP-FPMはセットアップ中にリクエストが失敗した場合にワーカーを終了させるため、ある程度の自然な耐性を持っています。しかし、研究者らは、実行中のアプリケーション内の操作を含む特定の条件下では、PHP-FPMでも一方の欠陥がコード実行に至り得ることを実証しました。

開示プロセスは、ある調査企業が概念検証(PoC)動画を誤って投稿し、ベンダーが公式リリースの数時間前にパッチ適用済みのコンテナイメージを公開したことで混乱しました。この早すぎる露呈により、PHPチームはスケジュールを前倒しせざるを得なくなりました。根本的な問題は、長年にわたりPHPの一部であった複雑なメモリ管理およびセッション処理メカニズムに起因しています。2024年の外部監査では、CVE-2026-109618背後にあるアウトオブメモリの兆候が当初指摘されていましたが、具体的な攻撃ベクトルは、最近のAI支援研究によってエクスプロイトパスが明確になるまで確立されませんでした。

重要な詳細

  • 影響を受けるバージョン: PHP 5.4から8.5.11、8.4.26、8.3.35、および8.2.34までのすべてのPHPバージョンが脆弱です。
  • 修正済みバージョン: 直ちにPHP 8.5.12、8.4.27、8.3.36、または8.2.35へ更新してください。
  • 最高リスク: Apache mod_phpを使用するサーバーは、未認証のリモートコード実行に対して最も脆弱です。
  • 部分的緩和策: CVE-2026-109619の場合、session.upload_progress.enabled=0を設定することでリスクを低減できますが、問題の完全な解決にはなりません。
  • レガシーサポート: PHP 8.1以前はサポート終了(EOL)です。ソースからビルドする場合、PHP 7.4、8.0、および8.1向けのソースバックポートが利用可能です。
  • 検出サイン: 異常なマルチパートリクエスト、メモリ制限エラー、繰り返されるHTTP 500応答、予期しないPHPワーカーの再起動を探してください。

なぜ重要なのか

ソフトウェアエンジニアやITリーダーにとって、この事件はアプリケーションレベルのセキュリティとランタイムレベルの脆弱性の間の決定的な違いを浮き彫りにします。LaravelやWordPressなどのフレームワークを更新しても、欠陥が基盤となるインタープリターに存在するため、PHP2Shellからは保護されません。これは、サーバー環境がパッチ適用されていない場合、十分に監査されたアプリケーションであっても危険にさらされることを意味します。AI支援研究が長年の理論上のバグを動作するエクスプロイトに変えるスピードもまた、迅速なパッチサイクルの必要性を強調しています。深刻なランタイムの欠陥に対して、定期メンテナンスウィンドウを待つことはもはや実行可能な戦略ではありません。

早すぎる漏洩と活発な悪用試行による混乱は、現代の脅威ランドスケープにおける協調開示の脆さを示しています。組織は、インフラストラクチャコンポーネントを迅速に更新する能力を含む堅牢なインシデント対応計画を持つ必要があります。PHPコア開発者が明示的に述べているように、更新のみが完全な保護を提供するため、緩和策として設定調整だけに頼るのは危険です。この事件は、インフラストラクチャ依存関係がアプリケーションコードと同じレベルの警戒を必要とするという再認識となります。

実施できること

  • PHPを実行しているすべてのサーバーを特定し、現在のバージョン番号を上記の修正済みリリースと比較して確認してください。
  • システムパッケージマネージャーを通じてPHPランタイムパッケージを更新するか、パッチ適用済みバージョンでコンテナイメージを再ビルドしてください。
  • 新しいバイナリがロードされていることを確認するために、すべてのWebサーバー、PHP-FPMプール、および長時間実行されるPHPワーカーを再起動してください。
  • 即時の更新が不可能な場合は、セッションアップロード進捗の無効化や厳格なメモリ制限の強制などの部分的緩和策を適用しますが、できるだけ早くパッチを当てる計画を立ててください。
  • 奇妙なマルチパートフォーム送信や500エラーの急増など、侵害の指標についてログを監視してください。
  • LTSディストリビューションではバージョン文字列が必ずしもパッチステータスを反映しない可能性があるため、Linuxディストリビューションのパッケージ変更履歴に関連するCVE修正が含まれていることを確認してください。
  • #php
  • #security
  • #vulnerability
  • #web-server
  • #patching

Bytechapストアのツール

続きを読む

すべての記事