· adswds-team · セキュリティ  · 5 min read

PHP のメモリ枯渇が未認証 RCE になる:CVE-2026-109618

PHP 公式(2026-10-21):CVE-2026-109618(CVSS 4.0 9.2)。OOM が初期化途中のリクエストを中断し、mod_php では未認証 RCE が実証済み。修正は 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35。

PHP 公式(2026-10-21):CVE-2026-109618(CVSS 4.0 9.2)。OOM が初期化途中のリクエストを中断し、mod_php では未認証 RCE が実証済み。修正は 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35。

PHP 公式のセキュリティ告知(2026-10-21)と GHSA-w8hw-w9fx-j79w は CVE-2026-109618 を重大なリモートコード実行としている。メモリ枯渇時の longjmp() が、リクエストメモリの初期化途中で抜け、その後のシャットダウンが不正な状態を有効なデータとして扱う。対象は Web リクエストを出すインストール全般で、PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed を含む。リスクが最も高いのは mod_php で、未認証リクエストがアプリケーションコードの前に攻撃を起こせる実証がある。

一言で:ランディングの PHP は、自前のスクリプトより先に届き得る。

同日の別件が CVE-2026-109619。設定の緩和は互いに代替しない。


告知で確認できること

項目内容
番号CVE-2026-109618 / GHSA-w8hw-w9fx-j79w
深刻度Critical、CVSS 4.0 は 9.2
影響8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 より前
修正8.2.35、8.3.36、8.4.27、8.5.12
確認された影響Web ワーカー権限での未認証 RCE
検証済み既定の入力・メモリ上限、一般的な prefork、複数 worker の mod_php
FPMソース解析では影響し得る。完全な FPM エクスプロイトは未実証。起動失敗時は子プロセスが終了する
FrankenPHPmod_php と同様にシャットダウンを無条件で呼ぶため、アプリ非依存の攻撃があり得るとされる
LSAPIFPM に近い。アプリ依存の悪用は「可能性はあるが未検証」

oss-security と英国 NCSC も両 CVE への対応を求めている。AWS 2026-143 の範囲は 8.5.0–8.5.11、8.4.0–8.4.26、8.3.0–8.3.35、8.2.0–8.2.34。

Advisory は、見た目は post_max_size 以内でもメモリを埋められる multipart 経路に触れている。構築手順はここでは繰り返さない。プロキシのボディ上限だけでは、PHP のメモリ上限が守られた証明にならない。


バージョン

  • 各ブランチを上記の修正版へ上げる。
  • PHP 8.1 以前は PHP プロジェクトの通常更新対象外。告知は、ソースから組む人向けに 7.4 / 8.0 / 8.1 の最小 backport を用意したと述べている。ディストリビューションの包はベンダーに確認する。
  • 8.2 は 2026-12-31 に EOL(8.2.35 の告知)。
  • ボランティアの rpms.remirepo.net は告知当日にパッケージがない。ディストリビューション包かソースビルドに切り替える。

パッチは OOM の longjmp() をやめ、次の VM 安全点での遅延ソフト OOM と、より高い閾値での _exit() に変える。


すぐ上げられないとき

完全な対策は更新だけと告知は書いている。

  • memory_limit=-1 を php_admin_value で固定し、プールやアプリが有限値を戻していないか確認する。下層の mmap() 失敗は古い経路に残る。
  • アップロード不要なら post_max_size = 8M。必要なら 32M とし、upload_max_filesize はそれ未満。
  • デコード後サイズ、フィールド数、multipart 部品数、ヘッダ数、ネストをフロントで制限する。Content-Length が使えないリクエストも含む。
  • cgroup の memory.max は、問題の worker だけを落とす境界にする。RLIMIT_AS / RLIMIT_DATA は使わない。
  • CVE-2026-109619 も同時に見る。

ランディングホスト

自前の PHP ホストでページを出すなら、露出面はその PHP である。よくある実行環境は PHP 8.3 なので、修正版は 8.3.36。mod_php ではアプリコードの前に起きるため、「危険な関数を呼んでいない」は対策にならない。

訪問者ルールは、リクエストボディ解析中のランタイム障害を見ない。インタプリタを先に上げ、その後でルールを調整する。


まとめ

CVE-2026-109618 は 2026-10-21 の PHP RCE のうち、mod_php で未認証の実証がある側である。修正版は 8.5.12、8.4.27、8.3.36、8.2.35。サイト単位ではなくホスト単位で上げる。

出典:PHP ニュース、GHSA-w8hw-w9fx-j79w、oss-security、NCSC。

関連記事

すべて見る »

同じタグの記事