要点
原因は PHP 本体
WordPress、Laravel、プラグインの更新だけでは修正されません。PHP ランタイムの更新が必要です。
更新後の再起動が必須
PHP-FPM、Apache、IIS、コンテナ内の古い worker は残る可能性があります。
修復前にスナップショット
スクリプトのバックアップは PHP のみです。仮想マシン全体のスナップショットが第一の復旧手段です。
何が起きたか
PHP は、未認証のリモートコード実行につながる 2 件の重大な脆弱性をコアで修正しました。アプリケーションフレームワークとは無関係で、PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed など Web リクエストを処理するすべての SAPI が対象です。
CVE-2026-109618 はメモリ不足時の異常終了を利用します。リクエストメモリが未初期化の段階で終了すると、後続の shutdown が破損状態を有効なデータとして扱う可能性があります。CVE-2026-109619 はリクエストをまたぐ use-after-free で、前のリクエストのグローバル状態が解放後も同じ worker の次のリクエストに利用されます。
影響するバージョン
PHP 8.2~8.5 には公式修正版があります。PHP 8.1 以前は上流で EOL です。PHP は 7.4、8.0、8.1 向けの最小ソースバックポートを提供しましたが、新しい公式バイナリ版はありません。
| 系列 | 影響 | 公式修正 |
|---|---|---|
| PHP 8.5 | < 8.5.12 | 8.5.12 |
| PHP 8.4 | < 8.4.27 | 8.4.27 |
| PHP 8.3 | < 8.3.36 | 8.3.36 |
| PHP 8.2 | < 8.2.35 | 8.2.35 |
| PHP 8.1 以前 | 上流 EOL | アップグレードまたはベンダーバックポート |
アプリ更新だけでは足りない理由
攻撃はアプリケーションコードが動く前の PHP リクエスト初期化、解析、終了処理で発生します。WordPress、Drupal、Joomla、Laravel、セキュリティプラグインの更新では PHP 本体の修正になりません。
- mod_php は最もリスクが高いとされています。未認証リクエストがアプリコード前に攻撃を起動できる例が確認されています。
- PHP-FPM も安全ではありません。ソース解析上も影響可能性があり、関連する CVE は mod_php と FPM の双方で検証されています。
- パッケージ導入だけでは不十分です。古い FPM、Apache、IIS、CLI worker が旧バイナリを実行し続ける可能性があります。
- Docker は修正済みイメージを取得しコンテナを再作成する必要があります。docker restart では旧イメージのままです。
調査手順
読み取り専用スキャナーで CLI、FPM、CGI、Apache モジュール、Docker、Windows サービス、拡張、INI 設定を棚卸しし、実際の Web エントリでランタイムを確認しました。php -v の 1 出力だけでは判断しません。
- PATH、/www/server/php、/usr/local、/opt、FPM pool、Apache、IIS FastCGI、レジストリ、コンテナを確認します。
- パッケージ導入時刻と worker 起動時刻を比べ、更新済みだが旧プロセスが残る状態を探します。
- PHP バージョン非表示、CDN、WAF は露出を下げるだけで、オリジンの修正を証明しません。
- アプライアンス、NAS、コントロールパネル、製品内蔵 PHP は別途ベンダー公告を確認します。
安全な修復順序
公式な完全修復はアップグレードです。以下は Linux、Windows Server、BT パネル、IIS、コンテナに共通する順序です。
- クラウドまたは仮想化基盤でマシン全体のスナップショットを作成し、PHP、SAPI、拡張、サービス、pool 設定を記録します。
- PHP ディレクトリ、php.ini、FPM/Apache/IIS 設定、バイナリをバックアップし、rollback スクリプトを確認します。
- 同一系列の公式修正版、または CVE 修正を明記したディストリビューションパッケージを導入します。
- Docker は新イメージ取得後にコンテナを再作成します。パッケージ更新後は FPM/Apache/IIS/常駐 worker を完全再起動します。
- ログイン、アップロード、決済、キュー、キャッシュ、主要 API を確認し、実際の Web SAPI バージョンを再確認します。
- 修復前にインターネット公開していた場合は、webshell、不審な子プロセス、新規タスク、外部通信、認証情報アクセスを調査します。
直ちに更新できない場合
設定変更は既知の攻撃経路の一部を遮断するだけで、安全にはなりません。パッチと全 worker の再起動が唯一の完全修復です。
- CVE-2026-109618:アプリが上書きできない FPM/Apache 設定で memory_limit=-1 を強制し、post_max_size とプロキシ側の body/part/header/ネスト数を制限します。RLIMIT_AS/RLIMIT_DATA は代替になりません。
- CVE-2026-109619:リクエスト初期化前に session.upload_progress.enabled=0 を設定して全 worker を再起動し、PHP 8.5 では fatal_error_backtraces=0 も設定します。
- .user.ini や ini_set() は一部経路で適用が遅いため、主要な緩和策にしないでください。
- Cloudflare WAF などは多層防御であり、そのプロキシを通る通信だけを保護します。
ロールバックとツールの範囲
ロールバックの第一選択はマシン全体のスナップショットです。サーバースクリプトは Linux の /root/php2shell-fullfix/<timestamp>/ または Windows の C:\ProgramData\PHP2ShellFullFix\<timestamp>\ にレポート、バックアップ一覧、rollback スクリプトを生成します。
自動変更は確認済みの BT パネル PHP、限定した Debian 公式イメージ PHP コンテナ、Windows 公式 PHP ZIP のみです。不明なソースビルド、ディストリビューションパッケージ、製品内蔵 PHP は無検証で変更しません。
今回の対応ツール
スキャナーは無害なバージョン・設定調査のみを行います。サーバー修復スクリプトは既定で検査のみ、変更前に 3 回の確認とロールバック生成を行います。
一次情報
製品情報は PHP 公式と GitHub Security Advisory を優先し、CISA、CERT-EU、NCSC-NL、クラウド事業者の情報で照合します。
- PHP official security advisory · 2026-10-21
- CVE-2026-109618 · GHSA-w8hw-w9fx-j79w
- CVE-2026-109619 · GHSA-6wmf-4rv5-p3rp
- PHP 8.2.35 official release record
- NCSC-NL · php2shell operational information
- CISA CSAF/VEX · VA-26-295-01
- Canadian Centre for Cyber Security · AL26-026
- CERT-EU Security Advisory 2026-018
- Cloudflare · php2shell WAF protection
HTTP スキャンでは隠れたバージョンを確認できません。「不明」を「安全」と扱わないでください。
無料見積もりを取得