Nginx Buffer Overflow Vulnerability Allows Attackers to Execute Arbitrary Code – PoC Released
2026/07/28 CyberSecurityNews — NGINX Plus および NGINX Open Source に、深刻なヒープバッファ・オーバーフローの脆弱性 CVE-2026-42533 が発見された。この脆弱性を悪用する未認証の攻撃者は、worker プロセスをクラッシュさせ、特定の条件下では任意のコードを実行できる。この脆弱性は、正規表現 (regex) ベースの map directive、または、文字列式内で非キャッシュ可能変数を使用するコンフィグに影響を及ぼす。特に、Stream module の ssl_preread 機能が、認証前に細工された TLS トラフィックを処理する場合に危険性が高まる。

Nginx バッファ・オーバーフロー脆弱性
Zhenpeng (Leo) が共有した分析によると、map ディレクティブで正規表現マッチングを使用し、かつ、文字列式が map の出力変数を参照する前に、対象となる正規表現キャプチャ変数を参照している場合に、この脆弱性が生じる。特定の設定下において、非キャッシュ可能変数が文字列式内で使用されている場合にも、同様の状況が発生する可能性がある。
細工された HTTP/TLS リクエストを送信できる攻撃者であれば、NGINX worker プロセス内でヒープバッファ・オーバーフローを引き起こし、再起動を強制する可能性がある。Address Space Layout Randomization (ASLR) が無効化されているシステム、または、攻撃者が ASLR をバイパスできるシステムでは、このオーバーフローがリモート・コード実行へと発展する可能性がある。
根本的な原因は、complex values を 2 段階の処理で評価する、NGINX の内部スクリプト・エンジンにある。第 1 段階では結果の合計長が計算され、第2段階では計算されたサイズに応じてヒープバッファにデータがコピーされる。
map により生成されるような正規表現ベースの変数が、それらの段階の間で評価されると、グローバル・キャプチャ状態が更新される可能性がある。その結果として、第 2 段階で割り当て済みのサイズを超えるデータがコピーされ、バッファ末尾を越えた書き込みが生じる。
Stream module では、ssl_preread が Server Name Indication (SNI) などの TLS ハンドシェイク・フィールドを変数へ抽出し、それらの変数は complex values 内で頻繁に使用される。この処理は TLS 終端前に発生するため、未認証クライアントに攻撃対象領域が露出する。典型的なエクスプロイト経路は、complex value 内で正規表現によるキャプチャを評価する、ssl_preread が有効化された stream listener に対して、巧妙に細工された SNI を取り込んだ TLS ClientHello が、攻撃者により送信されるというものだ。
長さ計算では最終的なサイズが過小評価され、その後にキャプチャ状態が変化すると、コピー処理の段階でヒープ・オーバーフローが発生し得る。つまり、このバグにより、情報漏洩と範囲外書き込みにつながるプリミティブが生じる可能性がある。これらを組み合わせることで、脆弱なビルドにおける ASLR バイパスと信頼性の高いエクスプロイトが可能になると、セキュリティ研究者たちは指摘している。
F5 は 2026年7月15日にセキュリティ・アドバイザリを公開し、研究者である Zhenpeng (Leo) Lin および Depth First Labs のチームは、発見された問題と PoC を報告した。それに加えて、NGINX の HTTP/3 QPACK 処理における別の脆弱性 CVE-2026-42530 についても報告した。
なお、脆弱性 CVE-2026-42533 については、複数のグループがほぼ同時期に発見したとみられており、影響を受けるコードパスが広範に使用されている状況が浮き彫りになった。
NGINX Plus/NGINX Open Source を運用し、stream blocks/ssl_preread/正規表現ベースの map を使用している組織は、このパッチを最優先で適用する必要がある。なお、更新が適用されるまでは、信頼されていないネットワークへの stream listener の露出を低減し、map の出力より前の complex values 内で正規表現キャプチャ参照の使用を避け、ASLR を有効な状態に維持することで、リスクを低減できる。
管理者にとって必要なことは、F5 および NGINX の公式チャネルで修正版リリースを監視して、速やかに適用することである。その上で、不正な形式の ClientHello/HTTP トラフィックにより、worker プロセスがクラッシュが発生しないことを検証すべきである。
CVE-2026-42533 は、スクリプト・エンジンにおける微妙なバグが、未認証のプロトコル解析パス上に存在する場合には、リモート攻撃につながり得ることが示された。NGINX の stream および map コンフィグをインベントリし、迅速にパッチを適用するとともに、ASLR などのメモリ保護機能を確実に維持する必要がある。
訳者後書:今回の NGINX の脆弱性 CVE-2026-42533 は、内部スクリプト・エンジンが文字列を評価する際の、2 段階の処理手順の不備に原因があります。第 1 段階でデータ全体の長さを計算し、第 2 段階でその長さ分のメモリへデータをコピーします。しかし、この処理の途中で正規表現ベースの変数が評価されると、状態が更新されてデータの長さが変わってしまいます。その結果、最初に計算したサイズを超えてデータが書き込まれてしまい、バッファオーバーフローが発生します。特に ssl_preread 機能などで正規表現のキャプチャ変数を参照する設定の場合に、この現象が引き起こされます。ご利用のチームは、ご注意ください。よろしければ、NGINX での検索結果も、ご参照ください。

You must be logged in to post a comment.