脆弱性・CVE速報深刻度: 中

Node.js の medium 3 件: keep-alive の先行応答受理(CVE-2026-105481)、数値 DNS SAN による IP 認証(CVE-2026-106072)、スナップショットの乱数キャッシュ再利用(CVE-2026-106074)— 22.23.4・24.22.1・26.12.1 で修正

目次(6)

CVE-2026-105481

CVE-2026-106072

CVE-2026-106074

Node.js プロジェクトは 2026-10-21 のセキュリティリリースで、重要度 medium の 3 件を修正しました。HTTP Agent の keep-alive 接続が、リクエスト送信前に届いた応答を受理する問題(CVE-2026-105481)、非標準表記の IPv4 アドレスに対して DNS 名だけの証明書が通ってしまう問題(CVE-2026-106072)、起動スナップショットに乱数キャッシュが保存され複数プロセスで同じ値が出る問題(CVE-2026-106074)です。修正版は 22.23.4・24.22.1・26.12.1 です。NVD は 3 件とも評価前(Awaiting Analysis)で、下の CVSS は CNA(HackerOne)の値です。

3 件の概要

CVE-2026-105481: keep-alive ソケットが、リクエスト前に届いた応答を処理する(CWE-367)

  • HTTP Agent で再利用する待機中の keep-alive ソケットには、想定外のデータが届くと接続を破棄する保護があります。この保護はイベントループが I/O をポーリングしたときにしか動きません。
  • 同期処理でイベントループが忙しいなどで、未読の先行応答がソケットに届いたまま新しいリクエストにソケットが渡されると、保護が先行応答を見ないまま外れ、その応答が新しいリクエストへの応答として解釈されます。
  • 以前の CVE-2026-48931 の修正が不完全だったものです。対象は 26.x・24.x・22.x です。
  • CVSS v3.0 は 6.5 MEDIUM(AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N)。

CVE-2026-106072: 非標準表記の IPv4 に DNS SAN だけの証明書が通る(CWE-295)

  • tls.checkServerIdentity() が、0177.0.0.1・0x7f.0.0.1・2130706433・127.1 のような表記を IP アドレスと判定せず、正規形にそろえたうえで証明書の DNS 名と照合していました。
  • そのため、DNS:127.0.0.1 だけを持ち IP Address:127.0.0.1 を持たない証明書が、この表記の接続では受理されます(同じ証明書は 127.0.0.1 では拒否されます)。
  • 悪用には、クライアントが信頼する CA が発行した数値の DNS SAN 入り証明書と、glibc のようにこれらの表記を受け付ける OS のリゾルバが必要です。対象は 26.x・24.x・22.x です。
  • CVSS v3.0 は 6.7 MEDIUM(AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L)。必要な権限が高いのは、発行元 CA の前提を反映したものと推定します。

CVE-2026-106074: 乱数キャッシュが起動スナップショットに保存される(CWE-330)

  • crypto.randomUUID()・crypto.randomUUIDv7()・crypto.randomInt() の内部キャッシュが、ユーザー側の起動スナップショット(--build-snapshot)と、useSnapshot で作った単一実行ファイル(SEA)に保存されます。
  • スナップショットの作成中にこれらの関数(または URL.createObjectURL() などそれを使う API)を呼ぶと、そのスナップショットから起動した全プロセスが、キャッシュが補充されるまで同じ値を返します。最大で UUID 127 個、randomInt() 約 1,000 個です。
  • 一意であるはずの識別子がプロセス間で衝突し、あるプロセスが発行した値を別のプロセスの観察から予測できる場合があります。対象は 26.x・24.x・22.x です。
  • CVSS v3.0 は 4.8 MEDIUM(AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N)。

修正の状況

  • 22.23.4・24.22.1・26.12.1(いずれも 2026-10-21 公開)で修正されています。影響を受けるのは、それぞれ 22.23.3・24.22.0・26.12.0 以前です(NVD の構成情報)。
  • 2026-11-02 時点の GitHub 上の最新は 26.13.0・24.22.2 です(前回確認分。22.x の最新版は未確認)。
  • 暫定的な回避策は、公式の記載では確認できていません。

数値と出典(2026-11-02 時点)

CVECVSS v3.0(CNA=HackerOne)NVD の状態EPSS(FIRST、2026-11-01 付)
CVE-2026-1054816.5 MEDIUMAwaiting Analysis(10/23 公開)0.00318(パーセンタイル 0.25)
CVE-2026-1060726.7 MEDIUMAwaiting Analysis(10/23 公開)0.00617(パーセンタイル 0.50)
CVE-2026-1060744.8 MEDIUMAwaiting Analysis(10/23 公開)0.00334(パーセンタイル 0.27)

KEV には 3 件とも掲載なし(CISA カタログ 2026.10.30 で確認)。NVD 自身の評価はまだ付いていません。

severity を medium とした理由

3 件とも Node.js 自身が medium とし、CVSS は 4.8〜6.7、EPSS は 0.3〜0.6% 程度で、KEV にも載っていません。いずれも成立に追加条件があります(先行応答を届けられる立場とタイミング、信頼された CA の数値 DNS SAN 証明書と特定のリゾルバ、スナップショットの作成中に乱数関数を呼ぶ構成)。

対応として考えられること

  1. 使っている Node.js の版を確認します。22.23.3・24.22.0・26.12.0 以前なら、修正版(22.23.4・24.22.1・26.12.1 以降)へ更新します。
  2. 同じリリースの high の 4 件(DNS の NUL 切り詰め・TLS の IP ホスト名検証・Brotli)が、同じ更新で直ります。更新の優先度はそちらで決まる可能性が高いです(推定)。
  3. --build-snapshot や SEA の useSnapshot を使っている場合は、スナップショット作成時に乱数関数を呼んでいないかを確認し、修正版で作り直します(推定)。
  4. 接続先を IP アドレスで直接指定している TLS クライアントでは、正規形の IP で指定し、証明書に IP の SAN があるかを確認します(推定)。

未確認の点

  • 実際の攻撃での悪用は確認していません。
  • 暫定的な回避策は確認できていません。
  • 22.x の最新版、修正コミットの範囲、NVD の独自評価は確認できていません。

この記事について

出典

この記事を共有