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 | |
24.x | 24.22.1 | |
26.x | 26.12.1 |
後続版が出ている場合は、その系統の公式リリース情報も確認します。表にないサポート終了版を「対象外だから安全」と判断せず、サポート中の系統へ移行してください。
2026年10月に修正されたCVE一覧
重要度はNode.js公式発表の分類です。「対象系統」は修正前の該当系統を指し、すべてのアプリで攻撃が成立するという意味ではありません。各CVEの登録情報は末尾に掲載しています。
CVE | 重要度 | 対象系統 | 内容 | 影響する使い方 |
|---|---|---|---|---|
CVE-2026-105482 | High | 22・24・26 | DNS名がNUL文字で切られる | ホスト名を検証後、 |
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データを |
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で別のバイト列を返す |
|
CVE-2026-106071 | Low | 26 | ワイルドカードのファイル権限を過剰付与 | 特定のワイルドカード設定を持つPermission Model |
CVE-2026-106073 | Low | 22・24・26 |
| 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イメージの保存を、その起動スナップショットと混同しないでください。
自分のアプリが影響を受けるか確かめる
実行環境ごとにバージョンを確認します。 開発PCだけでなく、サーバー、CIのセットアップ直後、ビルド用コンテナで調べます。
設定ファイルを確認します。
.nvmrc、.node-version、package.jsonのenginesやVolta設定、CIのNode指定、DockerfileのFROMを確認します。本番ランタイムを確認します。 サーバーレスやPaaSでは、ビルド用と実行用のNode設定、提供元の更新案内を別々に確認します。
入出力の経路を確認します。 Brotli展開、外向きHTTPS、HTTP Agent、DNS解決、起動スナップショット、Permission Modelの利用を調べます。
node -vnode -p 'JSON.stringify({node: process.version, executable: process.execPath, dependencies: process.versions}, null, 2)'コンテナでは、自分のコンテナ名へ置き換えて確認します。
docker exec YOUR_CONTAINER node -vpackage-lock.jsonなどのロックファイルは、Node.js本体の実行バージョンを固定しません。enginesもインストール済みのNodeを自動で置き換えるものではありません。常駐プロセスが起動したNodeと、別途起動したシェルのNodeが違う場合もあるため、デプロイしたプロセスの起動ログでもprocess.versionを確認します。Node.jsのプロセス情報
Node.jsを更新する方法
nvm・Volta・fnmを使っている場合
次は24系の例です。すでに導入している管理ツールの手順だけを選び、22系・26系なら対象の修正版へ読み替えます。
nvm install 24.22.1nvm use 24.22.1node -vVoltaでは、プロジェクトの指定も更新します。
volta install [email protected]volta pin [email protected]node -vfnmでは次のように切り替えます。
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系の例です。公式タグ一覧
FROM node:24.22.1-bookworm-slim固定した古いパッチタグやdigestを使う場合は、その指定を更新します。node:24のような追従タグでも、すでにあるアプリイメージや稼働中コンテナは自動では変わりません。ベースイメージを再取得してアプリを再ビルドし、再デプロイします。
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本体の更新にはなりません。ランタイムを更新し、依存関係とアプリの検証も行ってください。
