nginx は 2026 年 9 月 15 日、安定版 1.30.5 とメインライン版 1.31.6 を公開し、セキュリティ問題 CVE-2026-90439 を修正しました。公式の変更履歴によれば、特定の設定で HTTP/3 を OpenSSL 3.5.0 以前と組み合わせて使うと、worker プロセスでヒープメモリのバッファオーバーフローが起きる可能性があります。公式アドバイザリはこれを ngx_http_v3_module の問題とし、深刻度は中、影響を受けるのは 1.29.2 から 1.31.5、修正済みは 1.30.5 および 1.31.6 以降としています。
まず自分が対象かどうかを確認する
次の 3 つがすべて当てはまる場合だけ影響を受けます。
- バージョンが 1.29.2〜1.31.5:
nginx -v。 - HTTP/3 が有効:
listen ... quicの行があること。メインの設定ファイルだけでなく、nginx -T | grep -n quicで有効な設定全体を確認します。 - OpenSSL 3.5.0 以前でビルドされている:
nginx -Vに「built with OpenSSL x.y.z」と表示されます。
HTTP/3 を使っていないサイトはこの脆弱性の影響を受けません。なお今回の版には挙動の変更が 1 つあり、通常の TLS 接続で受け取った QUIC transport parameters 拡張は常に無視されるようになりました。通常のクライアントはそれを送らないので、気付くことはないはずです。
njs と 7 月分も忘れずに
nginx の JavaScript モジュール njs を使っている場合、9 月 2 日の njs 1.0.1 で 3 件の脆弱性が修正されています。js_access のアクセス制御回避(CVE-2026-18329)、ngx.fetch() による worker のクラッシュ(CVE-2026-78222)、xml.exclusiveC14n() のヒープバッファオーバーフロー(CVE-2026-78689)です。
またまだ 1.30.4 より前なら、直すべきものはこれだけではありません。7 月 15 日の 1.30.4 では、map と正規表現によるバッファオーバーフロー(CVE-2026-42533、当時の記事で詳しく解説)、slice モジュールの未初期化メモリアクセス(CVE-2026-60005)、SSI モジュールの解放後使用(CVE-2026-56434)が修正されました。1.30.5 に上げればまとめて解決します。
アップグレードの際の注意
- ディストリビューションのパッケージは修正をバックポートすることが多く、バージョン表記は 1.30.5 になりません。ディストリビューションのセキュリティ勧告を基準にしてください。nginx 公式リポジトリを使っているなら 1.30.5 か 1.31.6 に上げます。
- リロード前に
nginx -tで設定が通ることを確認します。HTTP/3 は UDP 443 を使うので、アップグレード後に外部から動作を確かめてください。 - 初めてサイトを作るなら、Nginx で最初の Web サイトを構築すると Let's Encrypt の SSL 証明書の設定が基本です。アップグレードやリロードの後にサイトが開かなくなったら、502 / 504 のトラブルシューティングガイドに沿って確認してください。