2026 年 10 月 21 日、PHP 開発チームは、PHP コアランタイムに存在する 2 件の重大なリモートコード実行 (RCE) 脆弱性に対して緊急の修正パッチをリリースしました。これらの脆弱性は CVE-2026-109618 および CVE-2026-109619 として追跡されており、総称して PHP2Shell と呼ばれています。いずれも CVSS v4.0 で 9.2 (Critical: 緊急) と評価されており、認証されていない攻撃者が脆弱なサーバー上でコードを実行できます。修正済みのリリースバージョンは PHP 8.5.12、8.4.27、8.3.36、8.2.35 です。
当該脆弱性群は、mod_php / php-fpm、WordPress / Laravel / Symfony 等様々な構成で攻撃が再現するとされています。これらは影響範囲の一部と考えられ、他の一般的な構成においても脆弱性が成立します。
概要
PHP2Shell の 2 つの脆弱性はいずれも外部からの任意コード実行脆弱性(認証不要の RCE) であり、アプリケーションコードが実行される前に PHP が multipart/form-data リクエスト (ブラウザがファイルアップロードに使用するリクエスト形式) を処理する方法に起因しています。
大まかに言えば、CVE-2026-109618 は、リクエストの処理中に PHP がメモリ不足 (out-of-memory) に陥った際にメモリ破壊を引き起こします。CVE-2026-109619 は、あるリクエストが残した古いデータを、同じワーカープロセス上の後続のリクエストが再利用してしまう脆弱性です。
影響緩和策
本脆弱性の根本的な解決策は修正パッチ適用以外になく、これらの設定変更による脆弱性の完全な回避はできません。PHP の修正パッチの適用を最優先で進める必要があります。
PHP の Session Upload Progress 機能・メモリ上限・バックトレース機能の無効化
session.upload_progress.enabled=0
memory_limit=-1
fatal_error_backtraces=0
post_max_sizeを設定し、巨大なリクエストボディを拒否する- multipart body を遮断する
max_requests=1を設定する- max_input_nesting_level を下げ、リクエストの複雑さを制限する
- 攻撃者が到達できる処理の致命的エラーや実行時間超過を解消する