Node2Shell: Node.js Brotli vulnerability allows remote code execution (CVE-2026-111497)
【なぜ重要か】 Node.jsに搭載されているBrotliデコーダーに「境界外書き込み(out-of-bounds write)」の脆弱性が発見され、攻撃者が悪意あるBrotli圧縮データをアプリケーションに送り込むことで、プロセスのクラッシュ・メモリリーク・リモートコード実行が起こり得る。2026年10月22日時点で公開済みの概念実証(PoC)が存在し、研究者によってLinux arm64上の未...
【なぜ重要か】 Node.jsに搭載されているBrotliデコーダーに「境界外書き込み(out-of-bounds write)」の脆弱性が発見され、攻撃者が悪意あるBrotli圧縮データをアプリケーションに送り込むことで、プロセスのクラッシュ・メモリリーク・リモートコード実行が起こり得る。2026年10月22日時点で公開済みの概念実証(PoC)が存在し、研究者によってLinux arm64上の未修正Node.js 24.22.0でコード実行が確認されている(ただし毎回成功するわけではない)。野外での実際の悪用報告はないものの、Brotli圧縮データを扱うすべてのNode.jsアプリケーションが対象となるため、早急な対応が求められる。
【ポイント】
Content-Encoding: brリクエストを受け付ける場合、fetch()が外部サーバーからBrotliレスポンスを受け取る場合、node:zlibのBrotli関数に非信頼入力を渡す場合に脆弱性が発動する。node:24.22.0など旧タグにピン留めされたDockerfileは再ビルドしても脆弱なまま。タグ自体を修正済みバージョンに変更してから再ビルド・再デプロイが必要。Linuxディストリビューションのパッケージ(Debian・Ubuntu・Fedora・RHEL・Alpineなど)からNode.jsを導入している場合、システム側のBrotliパッケージを更新することで修正が適用される場合があるため、各ディストリビューションのセキュリティアドバイザリも確認すること。Content-Encoding: brのリクエストを拒否する、またはVercelのファイアウォールルールを活用するといった暫定対策は、受信リクエスト経由の露出を減らすに過ぎず、アプリが外部サーバーからフェッチするBrotliレスポンスには効果がない。根本的な解決はランタイムのアップグレードのみ。【まとめ】
Brotli圧縮データを扱うNode.js(またはBun)アプリケーションはすべて影響を受ける可能性があり、公開PoCも存在することから早急な対応が必要。まずはnode --versionで現行バージョンを確認し、22.23.4・24.22.1・26.12.1(またはそれ以降のパッチリリース)へのアップグレードとコンテナイメージの再ビルド・再デプロイを速やかに実施すること。
原文を読む
Aikido Security Blog
英語で詳細な技術情報を確認