掲載記事 165本きょう +22026年11月9日(月)運営:株式会社Rabbitly

  1. 新着npm部品bee-jsに不正な版、入れると遠隔操作のおそれ
  2. 新着PyPIに悪性パッケージ39件、入れるだけで動く手口も
  3. 新着NASをインターネットに出さない 確かめる3つの設定
  4. 新着パスキーの始め方 まず管理者のアカウントから
  5. 新着今週のセキュリティまとめ 11月1日〜7日
  6. 新着政府がサイバー緊急対策パッケージ決定 お助け隊に復旧支援を追加
  7. 新着退職者のアカウント、片づけ漏れを防ぐ5つの手順
  8. 新着OpenSSHの欠陥に攻撃、囮サーバーでroot取得と報道
  1. トップ
  2. 脆弱性情報
  3. Node.jsの通信部品undiciに6件の修正、他人の応答が返るおそれ
脆弱性情報

Node.jsの通信部品undiciに6件の修正、他人の応答が返るおそれ

サイバーセキュリティ情報センター 編集部

画像はイメージです。記事に出てくる組織や現場とは関係ありません。

Node.js の fetch を支える通信部品 undici で、転送とキャッシュを組み合わせると別の利用者の応答が返るおそれがある欠陥など6件が直りました。最大の CVSS は 7.4 で、7.30.2 と 8.12.4 が修正版です。

脆弱性の概要

重要CVSS7.4
対象
Node.js部品
悪用
確認されていない
影響
別の利用者の応答や認証情報が漏れる
修正版
修正版あり
公表元
Node.js(undici)
影響を受ける製品
製品対象のバージョン修正版
undici 8系8.0.0〜8.12.3(欠陥ごとに始まりが違う)8.12.4
undici 7系7.0.0〜7.30.1(欠陥ごとに始まりが違う)7.30.2

製品の履歴:Node.jsの脆弱性一覧公表されたらすぐ通知を受け取る

やること

undici は Node.js から Web サーバーへ通信するための部品です。Node.js 18 以降に組み込まれている fetch() も、この部品で動いています。自社のアプリが undici を使っている場合は、次の順で進めてください。

  • 7系は 7.30.2、8系は 8.12.4 に上げてください
  • 7.30.1、8.12.2、8.12.3 を使っている場合は、深刻度が High の欠陥が当てはまるので、先に上げてください
  • 直接入れていなくても、ほかの部品を通じて入っていることがあります。npm ls undici で依存の中のバージョンを確かめてください

Node.js に組み込まれた undici のバージョンは process.versions.undici で確かめられます。

何が危ないのか

undici の開発チームは11月5日に 7.30.2 と 8.12.4 を公開し、6件の欠陥を直しました。npm の集計では11月2日から8日までの1週間に約3億2,670万回ダウンロードされています。

6件のうち5件は undici に後から足す処理(インターセプター)に関わります。転送先を自動でたどる redirect() と、応答を保存して使い回す cache() を、compose(redirect(), cache()) の順で組み合わせた場合が中心です。複数の利用者で共有するキャッシュを使っていると、ある利用者向けの応答が別の利用者に返るおそれがあります。

  • CVE-2026-116592(CVSS 7.4、High):転送の途中で信頼できない別のサイトを経由しても、最初の URL の応答として保存されます。攻撃者は保存された内容を差し替えたり、利用者ごとの応答をほかの人に返させたりできます。10月に直した CVE-2026-109829 の修正をすり抜けるもので、対象は 7.30.1、8.12.2、8.12.3 です。SqliteCacheStore に保存した場合は、再起動しても差し替えた内容が残ります
  • CVE-2026-120474(CVSS 6.5):同じサイトの中で転送されたとき、ログイン情報付きの要求への応答が元の URL のまま保存され、別の利用者やログインしていない人に返るおそれがあります
  • CVE-2026-116630(CVSS 5.9):保存した応答を使ってよいかを確かめる要求が別のサイトへ転送されたとき、そのサイトの 304 Not Modified を受け入れてしまいます。認証が要る応答が、後から来た利用者に返るおそれがあります
  • CVE-2026-120415(CVSS 5.9):要求のヘッダーを [名前, 値] の組の配列で渡すと、別のサイトへ転送するときに Authorization や Cookie が取り除かれず、転送先に渡るおそれがあります
  • CVE-2026-120222(CVSS 5.9):保存した応答を返す途中のエラーを受け止められず、Node.js のプロセスが止まるおそれがあります。悪意のある Web サーバーが狙えます

残りの1件の CVE-2026-120423(CVSS 5.9)は fetch() の欠陥です。受け取った中身が改ざんされていないかをハッシュ値で確かめる仕組み(Subresource Integrity)で、ハッシュ値の前にタブなどの空白があると確認を飛ばし、中身を受け入れます。7.15.0 で入った不具合で、7.14.0 以前は当てはまりません。

どの欠陥も攻撃にログインは要りませんが、CVSS の評価では攻撃の条件が厳しいとされています。告知とリリースノートに、悪用の記載はありません。

対象

GitHub の告知では、7系は 7.0.0 から 7.30.1、8系は 8.0.0 から 8.12.3 が対象です。影響が始まるバージョンは欠陥ごとに違います。6系は今回の告知の対象に入っていません。

インターセプターに関わる5件は、アプリが自分でその組み合わせを設定したときだけ当てはまると、告知に書かれています。送り先が1つに決まった Client や Pool を使う場合と、compose(cache(), redirect()) の順で組み合わせた場合は、当てはまらないものがあります。

README によると、Node.js 24系には undici の7系、26系には8系が組み込まれています。組み込みのバージョンが 7.15.0 以降なら、SRI の欠陥が当てはまります。Node.js の開発チームは11月11日以降に修正版を出すと予告していますが、内容は明かしていません(Node.js、11月11日に高深刻度の修正を予告、3系統が対象)。

回避策

すぐに上げられない場合について、告知には次の回避策が書かれています。

  • インターセプターを compose(cache(), redirect()) の順で組み合わせる。送り先ごとに別のキャッシュを使う。転送が起きる要求では共有のキャッシュを使わない
  • ヘッダーは普通のオブジェクトか、[名前, 値, 名前, 値] の平らな配列で渡す
  • SRI のハッシュ値の前後に空白を入れない
  • dump のようにエラーを投げる処理と cache() を組み合わせない

利用者ごとに違う応答にはサーバーの側で Vary、private、no-store を付けることも勧められています。

中小企業が確かめること

委託して作った Web システムや社内ツールが Node.js で動いている場合は、undici のバージョンと、キャッシュの機能を使っているかを委託先に聞いてください。

修正版に上げると、それより前のバージョンが SqliteCacheStore に保存した内容は使われなくなります。差し替えられた内容が残っていても、更新したあとは使われません。

自社で確かめること

  1. undici のバージョンを調べる`npm ls undici` で依存しているバージョンを調べ、7系は 7.30.2、8系は 8.12.4 より前でないかを確かめてください。
  2. キャッシュの使い方を聞く転送とキャッシュの機能を組み合わせ、複数の利用者でキャッシュを共有していないかを開発の担当者に確かめてください。
  3. 委託先に聞く委託して作ったシステムが Node.js で動いている場合は、undici のバージョンと更新の予定を委託先に聞いてください。
自社で確かめるのが難しい場合はCyberScope のセキュリティ診断(3万円から)

出典

コメント 0

まだコメントはありません。

関連記事