PHP重大脆弱性への対応と緩和策の注意点 〜CVE-2026-109618 および CVE-2026-109619〜 (2026年10月22日13:00時点) PHP重大脆弱性への対応と緩和策の注意点 〜CVE-2026-109618 および CVE-2026-109619〜 (2026年10月22日13:00時点)
サイバーセキュリティ
2026.10.22
サイバーセキュリティ

PHP重大脆弱性への対応と緩和策の注意点 〜CVE-2026-109618 および CVE-2026-109619〜 (2026年10月22日13:00時点)

2026年10月21日23時ごろ(日本時間)、PHPに存在する2件の重大な脆弱性に対する修正版が公開されました。いずれも深刻度はCVSS v4.0で9.2であり、認証されていない外部の攻撃者がPHPを実行しているサーバー上で任意のコードを実行できる可能性があります。

結論 修正されたバージョンのPHPまたはベンダーが提供する対応済みパッケージへの更新が、唯一の完全な対策です。緩和策は攻撃経路の一部を減らすものであり、安全になったことを意味しません。

 

1.脆弱性の概要

対象となるのは、CVE-2026-109618とCVE-2026-109619の2件です。PHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeedなど、Webリクエストを処理するPHP環境が影響を受けます。PHP公式は、アプリケーションコードが動作する前に攻撃を成立させられることが実証されているmod_phpを、特に危険性が高い構成としています。

  • CVE-2026-109618 メモリ不足時の処理に起因するメモリ破壊
  • CVE-2026-109619 前のHTTPリクエストの内部状態が残ることによる解放済みメモリの使用

攻撃によって、PHPプロセスの権限でのコード実行、サービス停止、プロセスメモリ内の認証情報やAPIキーなどの漏えいにつながるおそれがあります。

2. 影響範囲と修正版

影響はPHP 5.4以降の広い範囲に及びます。PHPプロジェクトが正式にサポートしている各系列の修正版は次のとおりです。

系列 修正バージョン 補足
PHP 8.5 PHP 8.5.12 更新後に全ワーカーを再起動
PHP 8.4 PHP 8.4.27 SimpleXMLの回帰不具合に注意
PHP 8.3 PHP 8.3.36 更新後に全ワーカーを再起動
PHP 8.2 PHP 8.2.35 2026年12月31日にサポート終了予定

PHP 8.1以前には通常の公式修正リリースはありません。ただし、PHP 7.4、8.0、8.1には例外的に最小限のソースパッチが公開されています。また、LinuxディストリビューションやLTSベンダーが旧版へ修正をバックポートしている場合があります。バージョン番号だけで判断せず、利用しているOSや製品ベンダーのセキュリティ情報を確認してください。
コンテナ、アプライアンス、管理画面、ネットワーク機器などに内蔵されたPHPは、ホストOSのPHPを更新しても修正されない場合があります。製品ベンダーが提供する更新も個別に確認する必要があります。

3.公開前後の攻撃状況

脆弱性に関する情報は、予定されていた公開より前の10月20日に外部へ漏れました。Cloudflareは修正版公開前から攻撃トラフィックを観測し、攻撃者がWAFを回避するためにリクエストを変化させていたと報告しています。公開後はパッチ差分や技術解説を利用した攻撃コードの開発が急速に進む可能性があります。
W3Techsによると、2026年10月22日時点で、サーバー側の使用言語を判別できるWebサイトの69.3%がPHPを使用しています。WordPress、Drupal、Joomlaなどでも攻撃が実証されていますが、これは特定のCMSに限った問題ではありません。WordPress本体やプラグインだけを更新しても、この脆弱性は解消しません。

 

4.推奨する対応

  1. インターネットに公開しているPHP環境を洗い出し、PHPの系列、パッケージ、SAPI、コンテナや内蔵ランタイムを確認します。
  2. 修正版PHPまたはベンダーの対応済みパッケージを適用します。
  3. PHP-FPM、Apacheなどの全ワーカーを再起動し、Webリクエストを処理しているPHPが修正版になったことを確認します。CLI版のphp -vだけでは不十分です。
  4. 直ちに更新できない環境は、インターネットからの隔離、VPNやIPアドレス制限、または一時停止を検討します。
  5. 修正版公開前から攻撃トラフィックが観測されているため、アクセスログとエラーログを保存し、不審な子プロセス、新規ファイル、設定変更などを確認します。更新しても、すでに設置されたバックドアは削除されません。[参考:https://www.jpcert.or.jp/at/2026/at260033.html「V. 侵害調査」]

5.緩和策と注意点

迅速な更新ができない場合の緩和策を以下にまとめます。どの対策も一時的かつ部分的で、更新の代わりにはなりません。

対策 期待できる効果 主な限界と副作用
session.upload_progressを無効化 確認済みのセッション経路を遮断 他の経路は残る。全ワーカーの再起動が必要
memory_limitを無制限化 特定のメモリ枯渇要因を減らす メモリ枯渇によるDoSの危険。cgroupなど外側の制限が必要
POSTとアップロードを制限 メモリ圧迫につながる入力を減らす 正規のアップロードに影響。PHP側だけでは不足
WAFを利用 既知の攻撃パターンを遮断 ペイロード変化やオリジン直アクセスで回避され得る
disable_functions 一般的なWebシェルの一部を制限 今回のメモリ破壊によるRCEの緩和策にはならない

 

5−1.セッションアップロード進捗(session.upload_progress)の無効化

session.upload_progress.enabled = 0

この設定は確認されたセッション経由の攻撃経路を遮断しますが、別の経路までは防ぎません。php.ini、PHP-FPMのプール設定、またはApache設定で適用し、設定後に全ワーカーを再起動してください。ini_set()やPHP-FPMの.user.iniには依存できません。アップロード進捗表示を使用する機能が動かなくなる可能性もあります。

5−2. PHPメモリ上限(memory_limit)の無制限化

memory_limit = -1

PHP公式は、CVE-2026-109618の特定経路に対する緩和策として、アプリケーションから上書きできない方法でこの設定を適用することを挙げています。PHP内部のメモリ上限到達は避けられますが、攻撃や不具合によってプロセスが大量のメモリを消費し、サービスやサーバー全体を停止させる危険があります。

コンテナやcgroupによる外側のメモリ制限と組み合わせ、可能であれば問題のあるワーカーだけを停止できる構成にしてください。RLIMIT_ASやRLIMIT_DATAは、今回問題となるメモリ確保失敗を発生させ得るため、代替策として使用しないようPHP公式が注意しています。

 5−3.POSTデータとアップロードの制限

PHP公式は、ファイルアップロードが不要な環境ではpost_max_sizeを8M、必要な環境では32M程度とし、upload_max_filesizeをそれより小さくする例を示しています。ただし、適切なContent-Lengthがないリクエストが初期検査を通過する経路があるため、PHP側の設定だけでは十分ではありません。

    • Webサーバーやリバースプロキシで、実際に受信してデコードしたリクエストサイズを制限する
    • フォーム項目数、multipartのパート数、ヘッダー数、パラメーターのネスト階層を制限する
    • 正規の大容量アップロードや複雑なフォームへの影響を事前に検証する

multipart/form-dataをWebサーバーで全面的に拒否すれば既知の攻撃経路の多くを減らせますが、ファイルアップロードや一部のフォームが利用不能になります。また、アプリケーション固有の別経路まで防げる保証はありません。

5−4. PHP 8.5のエラーバックトレース(fatal_error_backtraces)無効化

fatal_error_backtraces = 0

PHP 8.5では、確認済みのエラーバックトレース経路に対する緩和になります。設定後は全ワーカーを再起動してください。この設定も該当経路だけを防ぐもので、完全な対策ではありません。

5−5.WAFの利用

WAFは多層防御として有効ですが、更新の代替にはなりません。Cloudflareは攻撃ペイロードが変化していると報告しています。WAFを利用する場合も、攻撃者がオリジンサーバーへ直接接続できないよう、接続元をWAF事業者のIPアドレスに限定するなどの対策が必要です。

5−6. disable_functionsが対策にならない理由

disable_functions = exec,shell_exec,system,passthru

この設定は一般的なWebシェルの動作を制限する補助策ですが、今回の脆弱性に対する緩和策としては扱えません。メモリ破壊によってネイティブコード実行に至る場合、これらのPHP関数を経由する必要がないためです。また、対象関数を使用する正規のスクリプトが動作しなくなる副作用もあります。

6. SimpleXMLの既知の回帰不具合

PHP 8.4.27と8.5.12では、特定のSimpleXML処理とガベージコレクションが組み合わさった場合に二重解放が発生し、PHPプロセスが異常終了する回帰不具合が確認されています。これは2件のRCE修正そのものではなく、同じリリースに含まれた別のガベージコレクション修正に由来します。主な発生条件は次の組み合わせです。

  • get_object_vars()、配列へのキャスト、json_encode()などでSimpleXMLElementのプロパティテーブルを生成する
  • そのSimpleXMLElementが循環参照に含まれる
  • PHPのガベージコレクションがその循環参照を回収する

発生時にはzend_mm_heap corrupted、SIGABRT、終了コード134などが確認されています。Laravel、Pest、PHPUnit、Mockeryを組み合わせたテスト環境での実例も報告されています。2026年10月22日時点では、確認済みの報告対象はPHP 8.4.27と8.5.12です。修正案はレビュー承認済みですが、確認時点では未マージです。

更新前にSimpleXMLを利用する処理やテストを確認し、更新後はPHP-FPMのクラッシュやzend_mm_heap corruptedを監視してください。ただし、この不具合を理由にインターネット公開環境を脆弱な8.4.26や8.5.11へ安易に戻すべきではありません。問題が発生する場合は該当処理を一時停止し、PHPまたはOSベンダーが提供する修正版へ進めるのが安全です。

7. VLCセキュリティによる支援サービス

PHPがどこで動いているかわからない。パッチの適用は終わったがすでに攻撃を受け、侵入されているのではないかという懸念がある。社内に判断できる担当者がいない。など、様々なご相談に対応可能です。お気軽にお問い合わせください。
https://form.vlcsecurity.com/form/contact_service?k3ad=php_column

8. 最後に

国家サイバー統括室やIPAをはじめ、国内外の機関から注意喚起が出ています。修正版への更新が唯一の完全な対策です。緩和策を適用した場合も安全になったとは判断せず、更新、全ワーカーの再起動、動作確認、侵害調査まで実施することを推奨します。

参考情報

関連記事