重大なセキュリティ情報: PHP2Shell · CVSS 4.0 9.2情報確認:2026年10月22日

PHP2Shell バージョン確認

Web 実行環境を比較し、配備に合う対応と確認手順を選択。無料・認証情報は不要です。

1. PHP バージョン

PHP2Shell 公告とのローカル比較のみを行います。ネットワークスキャンは実行しません。CLI と Web SAPI ではバイナリや INI が異なる場合があるため、Web 側のバージョンを確認してください。

PHP バージョンが不明

WordPress → ツール → サイトヘルス → 情報 → サーバーを開き、完全な PHP バージョンを取得。必要に応じてホストにパッケージ版を確認してください。

WordPress · Docs

認証付き診断のみを使用し、公開 phpinfo ページを残さないでください。完全なバージョンを上に入力します。

アプリ確認(任意): WordPress / WooCommerce · PHP 8.3.x

上流修正版: 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12

ブランチの設定例です。パッチ判定には正確なバージョンが必要です。

配備を選択

2. 配備に合う対応

管理権限 / Web 配備方式

設定生成前に権限と配備方式を選択してください。

3. 対応結果の確認

変更後の観察を記録します。処理は自動実行されず、記録は現在のページ内だけに保持されます。

適用可能な配備とテンプレートを選択すると確認手順が表示されます。

  1. 1. 変更前の記録

    パッケージ・イメージ版と設定を記録し、検証済みバックアップと復旧計画を準備。脆弱な版への復元は修復完了ではありません。

  2. 2. 適用とワーカー置換

    両方のパッチを導入。構文確認、全ワーカー・レプリカの置換と正常な通信を確認。TCP プローブだけでは不足です。

  3. 3. Web 実行環境の確認

    既存の認証付き Web 診断のみを使用。修正版一覧またはベンダー情報と Web 版を比較し、全オリジン・レプリカを確認後、一時診断を削除してください。

  4. 4. アプリの確認

    ログイン、アップロード、進捗表示を試し、新規エラーと通常通信を変更前後で比較してください。

    WordPress:メディア、ログイン、利用中なら WooCommerce 決済。

公開 HTTP ヘッダー・PHP バージョンのライブ確認

ホームページの匿名アクセス時の応答を確認します。この機能は当サービスから通信し、下のバージョン評価は引き続きブラウザー内で処理します。ログイン情報は不要です。

HTTP/HTTPS の標準ポートのみ。パス、クエリ、IP アドレス、認証情報は入力できません。リダイレクトは追跡しません。確認全体の制限時間は5秒です。

PHP2Shell(CVE-2026-109618 / CVE-2026-109619)は、PHP のリクエスト処理ライフサイクルに関わる重大なリモートコード実行(RCE)脆弱性です。メモリ不足時の後処理やリクエスト間の状態残存により Web worker が危険にさらされます。multipart/form-data と session.upload_progress が関与する経路もありますが、それだけが原因ではありません。アップロードフォームが存在しなくても評価が必要です。悪用条件は SAPI、アプリケーション、拡張機能、設定に左右されます。この PHP2Shell 対策ハブでは、実際の PHP バージョンを評価し、php.ini、Nginx、Apache、Docker、Cloudflare WAF の多層防御を準備できます。認証ミドルウェアを導入していることだけを理由に、ランタイム更新を省略しないでください。

PHP2Shell 対策の要点と確認済みの事実

脆弱性
PHP2Shell は CVE-2026-109618 と CVE-2026-109619 を指します。PHP プロジェクトによる評価は CVSS 4.0 9.2(緊急)です。
原因
メモリ不足時のクリーンアップ破損と、リクエスト間で残るグローバル状態が問題です。session.upload_progress は関連経路の一つであり、PHP_SESSION_UPLOAD_PROGRESS の検出だけでは両 CVE を網羅できません。
修正版
上流の修正版は 8.2.35、8.3.36、8.4.27、8.5.12 以降です。PHP 8.1 以前は上流サポート終了のため、移行または確認済みのベンダーバックポートが必要です。
一時的な緩和
session.upload_progress.enabled = Off や FastCGI 設定は一部の経路を制限します。PHP2Shell の完全修正には両方の修正を含む PHP と、全旧 worker の置き換えが必要です。
互換性
WordPress、Laravel、Drupal、Symfony、Magento の標準 $_FILES アップロードは別の仕組みです。ただし、独自の進捗ポーリングやプラグインは影響を受けるため、実際の業務フローでテストしてください。

PHP2Shell CLI 監査とログ・フォレンジック

読み取り用のローカルコマンドで PHP の設定と不審な痕跡を調査します。必要な権限を確認し、稼働中サーバーの証拠を保全してください。

CLI の値が Web 側と同じとは限りません。通常のアクセスログには本文や Cookie が含まれず、下記の grep は未圧縮ログのみを検索します。マーカーの一致は侵害の証明ではなく、不一致も安全の証明にはなりません。ローテーション済みログや監視データも調べてください。

PHP2Shell ランタイム設定の CLI 確認

現在の PHP CLI と INI を読み取り、session.upload_progress.enabled の有効状態を表示します。Web SAPI の実効値とは別に確認してください。無効という結果だけでは PHP2Shell が修正済みとは判断できません。

php -r 'echo "PHP Version: ".PHP_VERSION."
Upload Progress: ".(ini_get("session.upload_progress.enabled") ? "ENABLED (review web SAPI)" : "DISABLED (not a safety verdict)")."
";'

PHP2Shell 調査用のアクセス・エラーログ検索

未圧縮の Nginx、Apache、PHP ログから PHP_SESSION_UPLOAD_PROGRESS と PHP-FPM の SIGSEGV を探します。ログ収集範囲を把握し、ローテーション済みファイル、プロセス、外向き接続も調査してください。

sudo grep -rnE "PHP_SESSION_UPLOAD_PROGRESS|SIGSEGV.*php-fpm" /var/log/nginx/ /var/log/apache2/ /var/log/php* 2>/dev/null

PHP2Shell WordPress 監査・IDS ルール集

WP-CLI と Suricata/YARA のローカルなヒューリスティックを、ベンダー公告と併用します。PHP2Shell の確定した攻撃シグネチャでも、遠隔サーバーの安全性認証でもありません。

PHP2Shell WordPress 整合性確認(WP-CLI)

WordPress のルートでサイト所有者として実行します。公開チェックサムがあるコアとプラグインを確認します。有料・独自コードは別途レビューが必要です。この処理では PHP 本体の修正状況は判定できません。

wp core version
wp core verify-checksums
wp plugin verify-checksums --all --strict
wp eval 'echo PHP_VERSION, PHP_EOL, PHP_SAPI, PHP_EOL;'
PHP2Shell 調査用 Suricata HTTP ルール

確定済みの攻撃シグネチャではなく、ローカルなマーカー検出です。平文 HTTP または TLS 終端後の可視性と、十分な本文検査範囲が必要です。自動遮断の前にアラート内容を確認してください。

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"LOCAL upload progress marker observed - investigate"; flow:established,to_server; http.request_body; content:"PHP_SESSION_UPLOAD_PROGRESS"; nocase; classtype:misc-activity; sid:9900618; rev:1;)

# Validate with your installed Suricata version before loading:
# suricata -T -c /etc/suricata/suricata.yaml -S local.rules
PHP2Shell 対応用 YARA ファイル一次調査

不審な PHP ファイルを絞り込む広い条件です。正当なコードも一致するため、検出は侵害の証明ではありません。このメモリ破損エクスプロイト自体を識別したり、暗号化トラフィックを検査したりするルールではありません。

rule Local_Suspicious_PHP_Execution_Review
{
  meta:
    description = "PHP file triage only; manual review required"
  strings:
    $php = "<?php" nocase
    $decode = /base64_decode\s*\(/ nocase
    $exec = /(eval|shell_exec|system|passthru)\s*\(/ nocase
  condition:
    filesize < 2MB and $php and $decode and $exec
}

// Save as triage.yar; run: yara -r triage.yar /var/www/html

複数サーバー・旧式 WordPress 環境の PHP2Shell 対応

多数の VPS や共有 cPanel で php.ini を手作業で変更するだけでは、見落としが生じます。管理型 WAF でネットワーク端の露出を減らしながら、全オリジンサーバーで確認済み PHP2Shell 修正の適用状況を管理してください。

Cloudflare Managed WAF

不正な multipart POST と PHP2Shell に関する管理ルールの対応範囲を事業者に確認します。汎用エッジルールで両ランタイム修正を代替することはできません。オリジンのアクセス制御をプロキシ構成と整合させてください。

PHP2Shell WAF 設定を見る

Sucuri Website Security / WAF

PHP 7.4 などの EOL 環境や、システムの php.ini を変更できない共有ホスティングでは、検証済みバックポート、インシデント対応、管理型フィルターの制約を事業者に確認してください。

Apache の適用ガイドを見る

更新パッケージと段階的な置き換え

各ホスト、コンテナー、プールの正確なパッケージ改訂とイメージを追跡します。負荷分散下で新 worker の正常性を確認してから旧 worker を排出し、アプリのヘルスチェックで利用継続を検証します。

Docker / Kubernetes の例を見る

PHP2Shell 脆弱性の技術解説と防御設計

1. アップロードフォームがなくても PHP2Shell の確認が必要な理由

PHP2Shell は単一の CMS プラグインやアップロード画面のバグではありません。PHP 本体のリクエスト処理と状態管理に関わる問題です。PHP2Shell 脆弱性を評価する際は、公開される全 PHP エンドポイント、利用する SAPI、拡張機能、エラー処理、実際に読み込む設定を調べます。ログイン保護や CSRF 検証があっても、それらのアプリケーションコードより前にランタイムの処理が始まる場合があります。フォームの有無や特定マーカーが見つからないことを、安全と判断する根拠にしないでください。

multipart/form-data の処理と session.upload_progress は、一部の PHP2Shell 攻撃経路を理解するうえで重要です。ただし、公式公告はメモリ不足時のクリーンアップ破損と、リクエスト間に残存するグローバル状態という別々の問題を説明しています。一つの POST フィールドを拒否すれば両方を解決できる、という結論にはなりません。対象パッケージに完全な二つの修正が入っているかを、公告とベンダー情報から確認する必要があります。

2. session.upload_progress 無効化の意味と限界

PHP のセッション進捗機能は、アップロード中の進捗情報をセッションへ記録できます。session.upload_progress.enabled = Off はこの機能を停止し、関連するセッション経路の攻撃面を減らします。一方、標準の $_FILES 処理そのものは別であり、無効化したからといって通常のファイル送信がすべて停止するわけではありません。独自の進捗表示、ポーリング、プラグイン、長時間の大容量アップロードを実際にテストしてください。

設定は CLI だけではなく、本番の Web SAPI に反映する必要があります。FPM プールやコンテナーごとに異なる INI を使用している可能性があり、graceful reload 後も旧 worker が残ることがあります。PHP2Shell 対策では設定変更の確認とバイナリ修正の確認を分け、全 worker が新しいビルドで動くことを確認します。PHP 8.5 の追加設定については fatal_error_backtraces を含め、必ず公式公告に照らして判断してください。

PHP2Shell 対策の比較:完全修正と一時的な緩和

停止時間、サポート終了環境、制御できる攻撃経路を比較してください。行を選ぶと詳細と対応する設定を確認できます。アップロード進捗の無効化だけでは PHP2Shell の完全修正になりません。

PHP2Shell 対策の比較:完全修正と一時的な緩和
対策対応範囲運用上の影響EOL で利用主な制約
完全な上流修正全 worker の置き換え移行またはベンダー修正ベンダーの出所と両 CVE の修正を検証
セッション経路の一部PHP worker の再起動・置き換え可能進捗表示をテストし、完全パッチを継続
セッション経路の一部Nginx 再読み込み・PHP 確認可能起動時設定を優先し、既存パラメーターと統合
ヒューリスティック・提供元次第エッジルールは通常 PHP 再起動不要可能本文検査上限、誤検知、オリジン迂回に注意

PHP2Shell の完全修正は、修正済みサポート対象ビルドと全旧 worker の置き換えが必要です。古い番号の配布パッケージでは、正確なバックポート情報を確認してください。

公式修正公告を確認

3. 多層防御:エッジの緩和と PHP ランタイム修正を組み合わせる

PHP2Shell 対応では、公開範囲の縮小、完全なパッチ、インシデント調査を並行して進めます。すべてのオリジン、worker、コンテナー、ホスティング管理パネル、バックグラウンドサービスを棚卸ししてください。WAF の契約条件、本文解析サイズ、直接オリジンへ到達できる経路も確認します。制限を強める前に正常な通信を観察し、誤検知によって業務を停止しないように段階的に適用します。

可用性が必要な場合は、正常な余剰レプリカを確保し、起動確認と接続の排出を伴うローリング置き換えを計画してください。単なる restart や reload に無停止の保証はありません。ロールバック計画は必要ですが、脆弱な PHP ビルドへ戻すことは避けます。修正済みバージョンに更新しても、既存の Web シェルや盗まれた資格情報は除去されません。不審なファイル、子プロセス、外向き通信を調査し、ログと証拠を保全してください。

PHP2Shell の一次資料と検証

2026年10月22日確認。このサイトは独立した PHP2Shell 防御支援ツールです。本番変更の前に上流公告とベンダーパッケージを再確認してください。

PHP2Shell 脆弱性・対策のよくある質問

PHP2Shell 確認方法、session.upload_progress 無効化、運用中の修正に関する実務的な回答です。

PHP2Shell は CVSS 4.0 9.2 と評価された PHP ランタイムの二つの重大な問題です。公式報告はメモリ不足時のクリーンアップ破損と、リクエスト間に残るグローバル状態を説明しています。影響条件ではリモートコード実行が可能です。session.upload_progress は関連する経路の一つであり、原因全体ではありません。両公告を参照し、実際の SAPI、アプリケーション、拡張機能を評価してください。