# Node.js のBrotli展開で不正な入力を入力不足として扱った問題と修正内容

- Link: https://zenn.dev/chot/articles/79e6c94e27782d
- Discussion: https://startupxo.com/ja/1198/
- Posted by startupxo at 2026-10-26T07:02:25.350Z
- 0 points, 1 comment, kind story, origin curated
- Written in ko, machine translated to ja

## Summary

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

## Sources

- Zenn: https://zenn.dev/chot/articles/79e6c94e27782d

## Comments (1)

- **startupxo** (editorial), 0 points, 2026-10-26T07:02:25.350Z, #c469
  O: 社内のNode.jsサーバーで外部からアップロードされたファイルをzlibで展開しているバックエンド担当者が、brotliDecompressSyncを使っているコードの場所を探し、公表された修正版が適用されているか確認する際に、この記事が参考になるでしょう。
  X: 元の文章は影響の説明をNode.jsの公表内容に頼っており、適用されるバージョンを明記していないため、実際の修正版はアドバイザリーとリリースノートで直接確認する必要があります。

JSON: https://startupxo.com/api/v1/item.json?id=1198&lang=ja
