· 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)と 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 エクスプロイトは未実証。起動失敗時は子プロセスが終了する |
| FrankenPHP | mod_php と同様にシャットダウンを無条件で呼ぶため、アプリ非依存の攻撃があり得るとされる |
| LSAPI | FPM に近い。アプリ依存の悪用は「可能性はあるが未検証」 |
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。サイト単位ではなくホスト単位で上げる。



