nginx 脆弱性の修正版が、2026年10月14日にまた上がりました。F5 は帯域外のセキュリティ通知(K000163408)で、CVSS v4.0 が 9.2 の3件(CVE-2026-15176・CVE-2026-93479・CVE-2026-97205)を公表し、NGINX Open Source は nginx 1.30.6(stable)と nginx 1.31.7(mainline) で直りました。7月の CVE-2026-42533(map と正規表現のヒープバッファオーバーフロー)で 1.30.4/1.31.3 に上げた環境も、10月の影響範囲に入ります。7月に公開したこの記事を、10月の修正にあわせて書き直しました。

THE SAFE LINE MOVED修正版の移り変わり

7月に上げた1.30.4/1.31.3は、10月の修正の対象に入る

  1. 07/15

    1.30.4 / 1.31.3

    map と正規表現の42533ほか2件

  2. 09/15

    1.30.5 / 1.31.6

    HTTP/3 と OpenSSL 3.5.0 以前の90439

  3. 10/14

    1.30.6 / 1.31.7

    15176・93479・97205ほか2件。F5 が帯域外で通知

出典: nginx CHANGES と nginx.org security advisories、F5 K000163408(2026-10-20確認)

30秒でわかる

・10月14日の3件:alias と rewrite(15176)、正規表現の map と文字列式(93479)、AIO と SSI(97205)。どれも既定ではない設定で成立し、確実な影響はワーカーの異常終了。コード実行は ASLR が無効か回避された場合
・今の更新先:1.30.6 か 1.31.7。7月の 1.30.4/1.31.3 は 93479 の範囲(1.30.0〜1.30.5、1.31.2〜1.31.6)に入る
・7月との関係:93479 も 42533 と同じ文字列式の評価の不具合。nginx の修正コミットは、7月に入った長さの検査の後にはみ出しが残っていたと説明している
・悪用:2026-10-20 時点で報告なし。CISA の KEV(10月16日版)にも載っていない

まずやること

・自分で nginx を動かす人:確認コマンドで版と設定を見て、1.30.6/1.31.7 に上げ、reload ではなく再起動する
・Ubuntu の nginx パッケージの人:10月の3件は配布元が未評価。待つか、nginx.org の公式パッケージに切り替える
・NGINX Plus・Ingress Controller の人:F5 の K000163408 で製品ごとの修正版を確かめる

CVE の読み解き方と対策の全体像は、ピラー記事サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説にまとめています。

nginx 脆弱性 2026年10月:F5 の帯域外パッチで直った3件

F5 の通知は NGINX 製品群の11件で、うち critical が3件、残り8件は high か medium です(H-ISAC の集計)。nginx 本体に入った修正は5件で、critical の3件は次のとおりです。

CVE F5 の対象 成立する設定(F5) 影響する版(nginx.org) 更新までのつなぎ(F5)
CVE-2026-15176 ngx_http_core_module alias の location で rewrite が URI を変え、set/return か log_format が $request_filename を使う 0.1.29〜1.31.6 location での alias と $request_filename を避ける
CVE-2026-93479 map と正規表現 正規表現の map のキャプチャを、root かアクセスログの書式が map の出力変数より先に読む 1.30.0〜1.30.5、1.31.2〜1.31.6 名前付きキャプチャだけにし、参照をマッチした場所に限る
CVE-2026-97205 ngx_http_core_module AIO を有効にした構成で、include virtual を含む SSI のページを処理する 0.8.11〜1.31.6 AIO か SSI を無効にする

3件とも修正版は 1.30.6/1.31.7 です。15176 と 93479 はヒープバッファオーバーフロー、97205 は use-after-free です。F5 の評価は3件とも CVSS v4.0 で 9.2、v3.1 で 8.1。認証なしで細工したリクエストを送られるとワーカーが落ち、ASLR が無効か回避された場合はコード実行に届くおそれがあります。一方、nginx.org の深刻度は5件とも medium です。数値は同じでも、前提の設定に当たるかで優先度は変わります。

対象モジュールは出典で食い違う

BleepingComputer は 15176 と 97205 を ngx_http_v3_module、93479 を map ディレクティブの不具合と報じました。F5 のアドバイザリの題名は 15176 と 97205 が ngx_http_core_module、93479 が「map directive and regex matching」で、nginx の変更履歴の記述(alias と rewrite、文字列式の評価、AIO と SSI)とも合います。本記事は F5 の記述に従っています。

7月以降の公表日と修正版のタイムラインです。

公表日 修正版 直った CVE
2026-07-15 1.30.4/1.31.3 42533(map と正規表現)、60005(slice)、56434(SSI)
2026-09-15 1.30.5/1.31.6 90439(HTTP/3 と OpenSSL 3.5.0 以前)
2026-10-14 1.30.6/1.31.7 上の3件、95101(HTTP/3 のフレームの扱い。1.25.0〜1.31.6)、97629(TLS セッションチケット鍵。1.23.2〜1.31.6)

97629 は ssl_session_cache を shared にして鍵ファイルを指定せず自動で鍵を回す構成で、鍵の1つが初期化されずセッションを偽造されるおそれがあるものです。

NGINX Plus は 37.0.5.1/37.1.0.1、NGINX Ingress Controller は 5.7.0、NGINX Gateway Fabric は 2.8.0、NGINX Instance Manager は 2.24.0 より前が対象です(カナダ Cyber Centre の AV26-1049)。Kubernetes コミュニティの ingress-nginx は F5 の Ingress Controller とは別物で、2026年3月に保守を終えており修正は届きません。

7月の CVE-2026-42533 と10月の CVE-2026-93479 の関係

7月15日に 1.30.4/1.31.3 で直った CVE-2026-42533 は、正規表現を使う map の出力変数を、同じ文字列式の中でキャプチャ($1 など)より後に参照すると起きます。nginx は文字列式を2回に分けて評価し、1回目で長さを測ってバッファを確保し、2回目で書き込みます。その間に map の評価がキャプチャを書き換えると、測った長さと書く中身がずれます。

TWO PASSES文字列式の評価

測った長さと書く量がずれると、確保した領域を越える

  1. 長さを測る

    1回目の評価でバッファを確保

  2. map が書き換える

    キャプチャ($1 など)を上書き

  3. 書き込む

    2回目は別の文字列を見る(42533)

  4. 長さの検査

    7月に追加。10月に予約領域へのはみ出しを修正(93479)

出典: nginx CHANGES 1.31.3・1.31.7、nginx/nginx のコミット b767540・a8289aa・6aa4b3f

7月の修正は、書き込みのたびに残りの長さを確かめる検査(コミット b767540)と、結果の長さを実際に書いた量で切り直す処理(a8289aa)でした。10月の 93479 の修正コミット(6aa4b3f)は、この2つの後も ngx_http_script_run() で予約領域へのはみ出しが残り、確保した大きさを超えて書く余地があったと説明しています。影響は変数を使う root の計算と、HTTP と stream のアクセスログです(ログ側は終端のヌル1バイト)。

ただし nginx.org の 93479 の影響範囲は 1.30.0 から始まり、7月の修正より前の版も含みます。7月の修正だけが原因とまでは言えません。運用上の結論は同じで、7月に上げた環境も 1.30.6/1.31.7 へもう一度上げます。

7月の 42533 には、9月7日時点で PoC を名乗るリポジトリが GitHub に12件ありました(本記事は実行していません)。Ubuntu 24.04 は7月16日に修正パッケージ(1.24.0-2ubuntu7.14)を出したあと、ABI の問題とリグレッション(LP: #2164558)で修正を2度外し、9月5日の 7.18 で入れ直しています。

自システムの確認コマンド(版・設定・動いているバイナリ)

読み取りだけの操作です。設定の行番号は成立条件に関わる行を探す目印で、nginx -T は include 先まで展開して出します。

nginx -v
sudo ls -l /proc/$(pgrep -o -x nginx)/exe   # 末尾が (deleted) なら古いバイナリのまま動いている
sudo nginx -T 2>/dev/null > /tmp/nginx-T.txt
grep -c '^# configuration file' /tmp/nginx-T.txt   # 読み込めた設定ファイルの数。0 なら読めていない
hit() { printf '%-6s %s\n' "$1" "$(grep -nE "$2" /tmp/nginx-T.txt | cut -d: -f1 | paste -sd, -)"; }
hit 15176 '^[[:space:]]*alias[[:space:]]|\$request_filename'
hit 97205 '^[[:space:]]*(aio[[:space:]]+(on|threads)|ssi[[:space:]]+on)'
hit 93479 '^[[:space:]]*map[[:space:]]|^[[:space:]]*(root|log_format)[[:space:]][^;]*\$'
hit 97629 '^[[:space:]]*ssl_session_(cache[[:space:]][^;]*shared|ticket_key)'

Ubuntu 24.04 の nginx 1.24.0 で、陽性対照と陰性対照を取りました。

実行した対象 読めたファイル数 15176 97205 93479 97629
既定の設定 3 なし なし なし なし
条件を並べた設定を1つ足したもの 4 203,204 207,208 190,191,199 195
nginx -T が失敗した状態 0 なし なし なし なし

3行目は、IPv6 の使えない環境で既定の listen [::]:80 が通らず、nginx -T が何も出さなかった例です。すべて「なし」でも、ファイル数が0なら何も見ていません。コメント行(# alias …)は拾わないことも確かめました。

動いているバイナリは、パッケージを入れ替えたあと nginx -s reload では替わらず、(deleted) のままでした。再起動して初めて新しい版になります(nginx -v はディスク上の版しか見ません)。

行番号が出ても、それだけでは判断できません。成立するのは、15176 は alias と rewrite と $request_filename が同じ location に揃うとき、97205 は AIO と SSI が同じ場所で有効なとき、93479 はキャプチャを使う正規表現の map の値が root かログの書式に入るときです。逆に何も出なくても、-c で別の設定ファイルを読ませている、ingress のように設定が生成される、といった構成は見えていません。最終的な判断は、版が 1.30.6/1.31.7 以上か、配布元の修正パッケージかで行います。

nginx 脆弱性への対策:1.30.6/1.31.7 へ上げる経路ごとの注意

入れ方 2026-10-20 の状態 やること
nginx.org の公式パッケージ 1.30.6/1.31.7 が配布されている 上げて再起動し、上の ls -l /proc/…/exe で確かめる
公式 Docker イメージ 下の表 系列タグなら取り直す。1.29・1.28 は 1.30/1.31 へ移る
Ubuntu の nginx パッケージ 42533 は修正済み。10月の3件は全リリース needs-triage 下のコマンドで変更履歴を見る。急ぐなら公式パッケージへ
NGINX Plus・F5 の製品 製品ごとに修正版がある K000163408 で版を確かめる

Docker Hub の公式 nginx イメージは、タグの digest を突き合わせると次のとおりでした(2026-10-20 21:40 JST、Docker Hub の API)。

タグ 中身 状態
latest・mainline・1.31 1.31.7 今の更新先
stable・1.30 1.30.6 今の更新先
alpine・mainline-alpine / stable-alpine 1.31.7 / 1.30.6 今の更新先
1.29 1.29.8(2026-05-09 更新) 42533・15176・97205 の範囲。1.29.9 は無い
1.28 1.28.3(2026-04-07 更新) 同上

Ubuntu では、版の番号が 1.24.0 のまま修正だけが入ります。番号ではなく変更履歴を見ます。

apt-cache policy nginx | head -3
zcat /usr/share/doc/nginx/changelog.Debian.gz | grep -m8 -E '^nginx |SECURITY|- CVE-'

2026-10-20 に Ubuntu 24.04 で実行すると、先頭は 1.24.0-2ubuntu7.18 の CVE-2026-42533 で、その下に取り下げた 7.17 の SECURITY REGRESSION が並びました。10月の CVE の行はありません。変更履歴に CVE 番号があっても、取り下げた版の記録のこともあります。どの版の行かまで読んでください。

MISREADS読み違えやすい4点

「対応したつもり」を実測で置き換える

よくある読み方

実測と一次ソース(2026-10-20)

よくある読み方: 7月に1.30.4/1.31.3へ上げた

実測と一次ソース(2026-10-20): 93479・15176・97205の範囲。1.30.6/1.31.7へ

よくある読み方: nginx.org の深刻度は medium

実測と一次ソース(2026-10-20): F5 は CVSS v4.0 で9.2。該当する設定なら優先

よくある読み方: Ubuntu で apt upgrade した

実測と一次ソース(2026-10-20): 24.04 は 7.18 のまま。10月の3件は未評価

よくある読み方: nginx -s reload した

実測と一次ソース(2026-10-20): バイナリは替わらない。再起動まで古い版

出典: nginx.org、F5 の各アドバイザリ、Ubuntu Security、当サイトの実測(Ubuntu 24.04)

すぐ上げられないときは、F5 の案内に沿って該当する設定を外します(前の節の表の右端)。7月の 42533 では、名前付きキャプチャへの書き換えでは塞がらない経路が残ると報じられました。設定の変更は更新までのつなぎとして扱い、変更後は nginx -t で構文を確かめてから再読み込みします。

侵害の確認:ワーカーの異常終了を探す

10月の3件にも7月の 42533 にも、公表された固有の侵害指標(IoC)はありません。メモリ破壊はワーカーの異常終了として表に出やすいので、まずエラーログを見ます。

sudo zgrep -hE 'exited on signal (6|7|11)' /var/log/nginx/error.log* | tail -20
sudo journalctl -k --since '-30 days' 2>/dev/null | grep -E 'nginx.*segfault'
対照 結果
陽性(ワーカーに SIGSEGV を送った) worker process 7834 exited on signal 11 を拾った
陰性(起動しただけ) 何も出なかった

出たら、時刻の前後のアクセスログと突き合わせます。異常終了は設定の誤りや別の不具合でも起きるため、この行だけでは攻撃とは言い切れません。ログを回転で消した期間や、エラーログを別の場所に出している構成は見えていません。乗っ取りを疑うなら、nginx の実行ユーザーで書き換えられたファイル、想定外の子プロセスと外向きの接続へ調査を広げます。

5月のNGINX Rift CVE-2026-42945:18年潜伏のヒープバッファオーバーフローとアクティブ攻撃の全容、6月のnginx CVE-2026-42055/42530/48142 解説|Critical 2件は条件付き・判定手順と並べると、2026年の nginx は毎月のように修正版が動いています。版は都度測ってください。

参照ソース

・Out-of-band Security Notification (October 14, 2026)(F5 K000163408) — 10月の通知。製品ごとの修正版
・F5 K000162416(CVE-2026-15176)・K000162607(CVE-2026-93479)・K000162608(CVE-2026-97205) — 成立条件・CVSS・緩和策
・nginx security advisories — 影響する版と修正版、nginx の深刻度
・nginx CHANGES — 1.31.7/1.30.6(10月14日)、1.31.6/1.30.5(9月15日)、1.31.3/1.30.4(7月15日)の記述
・nginx/nginx コミット 6aa4b3f — CVE-2026-93479 の修正と、7月の修正との関係の説明
・F5 security advisory (AV26-1049)(カナダ Cyber Centre) — NGINX Plus・Ingress Controller・Gateway Fabric・Instance Manager の対象版
・BleepingComputer・H-ISAC — 11件の内訳と悪用状況の報道
・F5 K000162097・NVD — CVE-2026-42533・cyberstan の技術解説 — 7月の 42533 の公式評価と機序
・Ubuntu Security — CVE-2026-93479 — 10月の CVE の配布元の状況
・Ingress NGINX Retirement(Kubernetes 公式ブログ) — コミュニティ版 ingress-nginx の保守終了