要約 / 元記事を読む ↗
- Node.jsはBrotli圧縮データを展開する際に内蔵デコーダを使用します。このデコーダが不正に作られた入力を受け取ると、内部バッファの外に書き込む問題がありました。この問題は2026年10月 21日のNode.jsセキュリティリリースで、CVE-2026-111497として修正されました。影響の説明(クラッシュ、メモリ露出、リモートコード実行の可能性)はNode.jsの脆弱性アドバイザリからの引用です。
- 原因は、ブロック切り替え(次の区間に使う圧縮テーブルを変更する指示)のエラーを「さらに入力が必要」のような戻り値として扱ったことにあります。引用されたアドバイザリによると、そのため不正なデータが一時的な状態として扱われ、内部バッファに入力が蓄積され続けました。
- 入力が十分にある unsafe の実行経路では、同じエラーが呼び出し元に伝えられず無視されていました。修正では戻り値の型をエラーコード列挙型に変更し、新たにBROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCHエラーコードを追加したため、両方の経路でエラー発生時に直ちに処理を中断するようになりました。
- 修正の中核は、google/brotliの上流コミットをNode.jsに取り込んだことです。この記事は修正コミットを読んで整理した解説です。攻撃経路と実際の被害範囲は原文では扱われていません。
掲載元Zenn ↗ / 掲載記事