Node.jsは2026年10月21日、Brotliの展開処理、TLSの証明書検証など計10件の脆弱性を修正しました。22系は22.23.4、24系は24.22.1、26系は26.12.1へ更新してください。Next.js・Astro・Nuxt・SvelteKitも、ビルドやサーバーをNode.jsで実行していれば確認対象です。公式発表

Node.jsの対象バージョンと修正版は?

今回の修正を含むバージョンは次のとおりです。まず現在使っている系統の修正版へ上げ、メジャー更新が必要かは別に判断します。

使用中の系統

今回の修正版

個別のリリース情報

22.x

22.23.4

22.23.4

24.x

24.22.1

24.22.1

26.x

26.12.1

26.12.1

後続版が出ている場合は、その系統の公式リリース情報も確認します。表にないサポート終了版を「対象外だから安全」と判断せず、サポート中の系統へ移行してください。

2026年10月に修正されたCVE一覧

重要度はNode.js公式発表の分類です。「対象系統」は修正前の該当系統を指し、すべてのアプリで攻撃が成立するという意味ではありません。各CVEの登録情報は末尾に掲載しています。

CVE

重要度

対象系統

内容

影響する使い方

CVE-2026-105482

High

22・24・26

DNS名がNUL文字で切られる

ホスト名を検証後、dns.resolve*()などで解決する処理

CVE-2026-105483

High

24・26

全角数字などのIPで証明書照合を迂回

非ASCIIのIP表記で接続するTLSクライアント

CVE-2026-106069

High

22・24・26

接続先と証明書照合先のIPが食い違う

先頭ゼロ付きIPv4を扱うTLSクライアント。OSにも依存

CVE-2026-111497

High

22・24・26

Brotli展開時の境界外書き込み

攻撃者由来のBrotliデータをnode:zlibで展開する処理

CVE-2026-105481

Medium

22・24・26

リクエスト送信前の応答を受理

HTTP Agentでkeep-alive接続を再利用するクライアント

CVE-2026-106072

Medium

22・24・26

数字のDNS SANでIP宛て証明書を認証

非標準IPv4表記を受け付ける環境のTLSクライアント

CVE-2026-106074

Medium

22・24・26

乱数キャッシュが起動後のプロセス間で重複

乱数生成を実行して作った起動スナップショットやSEA

CVE-2026-106070

Low

26

不正ZIPで別のバイト列を返す

zlib.ZipFileで該当ZIPを検査・読み出す処理

CVE-2026-106071

Low

26

ワイルドカードのファイル権限を過剰付与

特定のワイルドカード設定を持つPermission Model

CVE-2026-106073

Low

22・24・26

fs.realpathSync()の権限確認が不足

Permission Modelで読み取り範囲を制限する処理

Brotliの脆弱性はどのアプリに影響する?

CVE-2026-111497では、細工されたBrotliデータの展開によるメモリ破壊から、クラッシュ、情報漏えい、リモートコード実行に至る可能性があります。確認するのは、受信した圧縮リクエスト、アップロード、外部HTTP応答などが、直接または依存ライブラリ経由でBrotliデコーダーへ届く経路です。

Brotli形式のレスポンスを圧縮して配信するだけの経路と、信頼できないデータを展開する経路は分けて調べます。フレームワーク名だけで攻撃成立を判断せず、ミドルウェアやHTTPクライアントの動作を確認してください。BrotliのCVE登録情報

HTTPS通信や特殊な起動設定も確認する

TLS関連の3件は、接続先IPの表記と証明書の照合に関わる問題です。公開HTTPSサーバーとして待ち受けるだけでなく、外部APIや利用者指定URLへ接続するクライアント側を確認します。CVE-2026-106072は、信頼するCAが発行した数字のDNS SANを持つ証明書と、そのIP表記を受け付けるリゾルバーが必要です。

HTTP Agentの問題もクライアント側の接続再利用です。乱数の問題は、乱数キャッシュを含むユーザー作成の起動スナップショットや、useSnapshotを使う単一実行ファイルが条件です。通常のビルド成果物やDockerイメージの保存を、その起動スナップショットと混同しないでください。

自分のアプリが影響を受けるか確かめる

  1. 実行環境ごとにバージョンを確認します。 開発PCだけでなく、サーバー、CIのセットアップ直後、ビルド用コンテナで調べます。

  2. 設定ファイルを確認します。 .nvmrc、.node-version、package.jsonのenginesやVolta設定、CIのNode指定、DockerfileのFROMを確認します。

  3. 本番ランタイムを確認します。 サーバーレスやPaaSでは、ビルド用と実行用のNode設定、提供元の更新案内を別々に確認します。

  4. 入出力の経路を確認します。 Brotli展開、外向きHTTPS、HTTP Agent、DNS解決、起動スナップショット、Permission Modelの利用を調べます。

bash
node -vnode -p 'JSON.stringify({node: process.version, executable: process.execPath, dependencies: process.versions}, null, 2)'

コンテナでは、自分のコンテナ名へ置き換えて確認します。

bash
docker exec YOUR_CONTAINER node -v

package-lock.jsonなどのロックファイルは、Node.js本体の実行バージョンを固定しません。enginesもインストール済みのNodeを自動で置き換えるものではありません。常駐プロセスが起動したNodeと、別途起動したシェルのNodeが違う場合もあるため、デプロイしたプロセスの起動ログでもprocess.versionを確認します。Node.jsのプロセス情報

Node.jsを更新する方法

nvm・Volta・fnmを使っている場合

次は24系の例です。すでに導入している管理ツールの手順だけを選び、22系・26系なら対象の修正版へ読み替えます。

bash
nvm install 24.22.1nvm use 24.22.1node -v

Voltaでは、プロジェクトの指定も更新します。

bash
volta install [email protected]volta pin [email protected]node -v

fnmでは次のように切り替えます。

bash
fnm install 24.22.1fnm use 24.22.1node -v

.nvmrcや.node-versionも、チームの運用に合わせて更新します。開発シェルの切り替えだけで作業を終えず、CIやサービスの起動設定まで揃えてください。

Dockerのnodeイメージを更新する場合

公式イメージにはnode:22.23.4、node:24.22.1、node:26.12.1が掲載されています。次は24系の例です。公式タグ一覧

dockerfile
FROM node:24.22.1-bookworm-slim

固定した古いパッチタグやdigestを使う場合は、その指定を更新します。node:24のような追従タグでも、すでにあるアプリイメージや稼働中コンテナは自動では変わりません。ベースイメージを再取得してアプリを再ビルドし、再デプロイします。

bash
docker build --pull -t your-app:node24-security .

マルチステージビルドでは、ビルド用・実行用の両方のFROMを確認します。再デプロイ後は各レプリカでバージョンを確認してください。

OSパッケージ・PaaSを使っている場合

OSのパッケージは配布元が修正をバックポートする場合があるため、番号の比較だけで判断せず、配布元のセキュリティ情報とパッケージの修正履歴を確認します。実際に使うバイナリの経路も調べます。

PaaSではランタイムの選択と提供元の修正適用状況を確認し、必要な再デプロイを行います。ビルド・テスト後、公開ページ、API、外部HTTPS接続、圧縮データを扱う機能を確認し、再起動したプロセスのバージョンを記録します。

今回の更新には、c-ares・Undici・CA証明書(22・24・26系)、OpenSSL(22・24系)、SQLite(22系)の更新も含まれます。個別リリース情報も確認してください。

静的サイトならNode.jsの更新は不要?

HTML・CSS・JavaScriptを静的ファイルとして配信し、その配信経路でNode.jsを動かさなければ、公開ページへのリクエストがNodeの処理へ届く経路を減らせます。ただし、CI、ビルド、プレビュー、API、SSRには別の実行環境が残ります。

genko.meのようなCMSからビルド時に記事を取得する構成でも、ビルドを実行する環境のNode.jsは更新が必要です。構成例はAstroの導入ガイドとAstroでCMSブログを作る記事、配信層を分ける考え方はPHP2Shellと静的サイト構成を参照してください。

よくある質問

Node.jsの2026年10月の脆弱性はどのバージョンが対象ですか?

公式発表は22.x・24.x・26.xを対象とし、修正版は22.23.4・24.22.1・26.12.1です。全角数字IPのTLS問題は24・26系、ZIPとワイルドカード権限の問題は26系が対象です。

Dockerのnodeイメージは更新が必要ですか?

修正前のNodeを含むイメージなら更新が必要です。固定タグやdigestを見直し、追従タグでもベースの再取得、アプリの再ビルド、再デプロイを行います。

Next.jsのアプリも影響を受けますか?

Node.jsで実行するビルドやサーバーは確認対象です。どのCVEが実際に成立するかは、Brotli展開や外部通信などの処理経路で変わります。

npm updateだけでNode.jsの脆弱性は直りますか?

Node.js本体の更新にはなりません。ランタイムを更新し、依存関係とアプリの検証も行ってください。

出典