· adswds-team · セキュリティ · 4 min read
dns.resolve は NUL で名前を切る:Node.js CVE-2026-105482
Node.js 2026-10-21:CVE-2026-105482(high)。dns.resolve は NUL を含む名前を切り詰める。26.x、24.x、22.x が対象。空バイトの検証が 26.12.1、24.22.1、22.23.4 に入る。

Node.js の 2026-10-21 セキュリティリリースは CVE-2026-105482 を high としている。題は dns.resolve が NUL 文字を含む名前を切り詰める。影響は 26.x、24.x、22.x。修正版は 26.12.1、24.22.1、22.23.4。リリースノートの修正は James M Snell の dns: validate resolve inputs for null bytes(報告は hasanfleyah)。
一言で:リゾルバが見る名前は、最初のヌルバイトで終わり得る。
告知に CVSS ベクタはなく、題にある dns.resolve 以外の入口も列挙されていない。呼び出しスタックはここでは推測しない。
公開されている範囲
| 項目 | 内容 |
|---|---|
| 番号 | CVE-2026-105482 |
| 挙動 | dns.resolve が NUL を含む名前を切り詰める |
| 修正 | resolve 入力の空バイトを検証する |
| 深刻度 | high |
| 影響 | 26.x、24.x、22.x |
| 修正版 | 26.12.1、24.22.1、22.23.4 |
| EOL | セキュリティリリース時、保守終了版は影響ありとされる |
同じビルドは c-ares 1.34.9 も 26/24/22 に入れる。告知は依存更新を CVE 一覧と並べているが、105482 が c-ares だけに存在するとまでは書いていない。システムの c-ares 包を替えただけでは、Node の dns.resolve が直ったことにはならない。
先に見るプロセス
NUL で切れるということは、プログラムが問い合わせたかった文字列と、実際に問い合わせた文字列が一致しないことがある、という意味である。公式は「したがって指定したホストへ解決できる」条件を公開していない。出来合いの汚染手順として読まない。確認するのは、リクエスト、設定、環境変数のホスト名がそのまま DNS API に入るかである。
- ポストバック、短縮 URL の展開、素材取得が Node で DNS を引くなら、対応するセキュリティ版へ上げて再起動する;
- 解決後に IP を許可リストと比べる場合、
dns.resolveに渡す文字列が切れていないかを先に見る。切れた後の比較は別の名前に対するものになる; - 内部名を引く CI ジョブも、本番と同じ修正版を使う;
- 「
dns.resolveは使わずfetchだけ」は除外にならない。告知は入口を全部挙げていない。除外できないなら上げる。
静的なランディングページ自体は dns.resolve を呼ばない。隣の Node サービスとビルドスクリプトが呼ぶ。
まとめ
CVE-2026-105482 は high の DNS 名切り詰めであり、2026-10-21 の 26.12.1、24.22.1、22.23.4 で直る。セキュリティリリース全体を入れて再起動する。同日の証明書ホスト名は CVE-2026-106069、Brotli は CVE-2026-111497。



