WORK.SIGNALALL SIGNALS
/ 仕事 / DEEP DIVE

エラーを処理してもNode.jsが停止?HTTPライブラリundiciに重大脆弱性

93 / 100SIGNAL DEEP DIVE仕事約2分で読める

Node.jsのHTTP通信ライブラリundiciに、悪意あるHTTP応答によってプロセスが停止し得る脆弱性CVE-2026-109869。影響バージョン、修正版、対処を公式情報から解説する。

30秒でわかる / THE SIGNAL

undici 6.23.0以上6.29.1未満、7.18.0以上7.30.1未満、8.0.0以上8.12.2未満にHIGH(CVSS 7.5)の脆弱性。細工したHTTP応答を受信すると、fetch()のエラーを処理していてもNode.jsプロセスが停止する可能性がある。修正版への更新が必要。

外部サーバーの応答が、アプリ全体を止める

Node.jsのHTTPクライアントライブラリundiciで、悪意ある外部サーバーからの応答によってサービス停止(DoS)につながる脆弱性CVE-2026-109869が公表された。深刻度はHIGH、CVSS 7.5。問題は、HTTP応答に5つを超えるContent-Encoding指定があり、本文を送信する前に接続が閉じられるケースで発生し得る。

公式勧告:https://github.com/nodejs/undici/security/advisories/GHSA-xjj6-f33q-929c

fetch()の例外を捕まえても防げない理由

undiciはContent-Encodingの数が上限を超えると応答を拒否するが、問題のあるバージョンではその検査前に内部ストリームを作成していた。接続が途中で閉じられると、その内部ストリームに未処理のerrorイベントが発生し、Node.jsプロセスが終了する可能性がある。アプリケーション側でfetch()の失敗をcatchしていても防げない場合がある。

外部HTTP通信を行うすべてのNode.jsアプリが直ちに攻撃されるという意味ではない。悪意ある応答を返すサーバーと通信する経路が成立条件になる。

影響バージョンと修正版

影響範囲はundici 6.23.0以上6.29.1未満、7.18.0以上7.30.1未満、8.0.0以上8.12.2未満。修正版は6.29.1、7.30.1、8.12.2。公式は更新を推奨し、回避策はないとしている。

公式リリース:https://github.com/nodejs/undici/releases

管理者が確認すべきこと

依存ライブラリの一覧とロックファイルを調べ、実際に利用しているundiciのバージョンを確認する。影響範囲なら修正版へ更新し、外部HTTP通信と異常系の動作確認を実施する。Node.js本体の組み込みfetchを利用している場合は、アプリに直接導入したundiciと同一の更新経路とは限らないため、Node.js本体のセキュリティ更新状況も別途確認する。

公式勧告では、実際の攻撃で悪用された事実は確認できない。攻撃が可能な条件と観測された攻撃を混同しないことが重要だ。

WORK SIGNALの視点|例外処理だけでは守れない

エラー処理を正しく書いていても、内部ライブラリの欠陥でプロセスが停止する場合がある。重要なのは、個々の開発者の注意力だけに依存せず、依存関係の把握、公式勧告の監視、更新テストを継続できる仕組みを持つことだ。Node.js本体と周辺ライブラリを分けて管理する必要がある。

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

気になった変化を共有して、次のシグナルへ。

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS