重大なセキュリティ情報: PHP2Shell · CVSS 4.0 9.2情報確認:2026年10月22日
Web 実行環境を比較し、配備に合う対応と確認手順を選択。無料・認証情報は不要です。
1. PHP バージョン
アプリ確認(任意): WordPress / WooCommerce · PHP 8.3.x
上流修正版: 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12
ブランチの設定例です。パッチ判定には正確なバージョンが必要です。
配備を選択2. 配備に合う対応
設定生成前に権限と配備方式を選択してください。
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 を含め、必ず公式公告に照らして判断してください。
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、アプリケーション、拡張機能を評価してください。
完全な PHP2Shell 修正には修正済み PHP と全旧 worker の置き換えが必要です。エッジルールは PHP を再起動せず適用できる場合がありますが、両 CVE を完全に覆う汎用設定はありません。session.upload_progress の無効化は一時的なリスク低減です。十分な正常キャパシティーを確保したローリング置き換えを行い、実際のアプリで可用性を検証してください。restart や reload だけで無停止が保証されるわけではありません。
標準 $_FILES によるアップロードそのものを無効にする設定ではありません。WordPress、Laravel、Drupal、Magento の通常アップロードとセッション進捗は別の機能です。ただし独自コードや進捗をポーリングするプラグインは依存している場合があります。メディア投稿、進捗表示、大容量ファイル、業務フローを自分の環境でテストしてください。互換性の確認と PHP2Shell 完全修正の確認は別々に行います。
上流の修正済み系列は PHP 8.2.35+、8.3.36+、8.4.27+、8.5.12+ です。それより前のビルドは PHP2Shell 更新が必要です。PHP 8.1 以前は上流サポート終了のため、移行か確認済みのベンダー修正が必要です。配布パッケージは古い上流番号のまま修正を含む場合があるので、両 CVE と正確なパッケージ改訂を照合してください。バージョン比較で過去の侵害は判定できません。
Web、PHP、OS、エンドポイントの記録から、不審なクラッシュ、ファイル、プロセス、外向き接続を調べてください。PHP_SESSION_UPLOAD_PROGRESS の検索は正当な通信にも一致するヒューリスティックです。通常のアクセスログには本文や Cookie が含まれないため、すべての PHP2Shell 試行は検出できません。ローテーション済みログや監視情報も調べて証拠を保全してください。grep の結果が空でも侵害がなかった証明にはなりません。
PHP-FPM、Apache mod_php、CGI、LiteSpeed、FrankenPHP を含め、Web リクエストを処理する全 PHP を確認します。悪用可能性と再現性は SAPI、アプリケーション、拡張機能、設定で異なります。すべての SAPI に同一の確認済み攻撃があるとも、フォームがない環境は安全とも決めつけないでください。対応するベンダーまたは上流 PHP2Shell 修正を全インスタンスへ適用し、すべての worker が更新済みビルドを使用することを確認します。