アクセス解析は同意後だけ使います。詳細

安全と会社での利用

Node.jsの脆弱性(2026年10月21日のセキュリティリリース)⁠|バージョンの確認と更新

要点この記事の答え
  1. Node.jsは2026年10月21日に、v26.12.1、v24.22.1、v22.23.4を公開しました。
  2. 脆弱性は10件で、最高の深刻度はHighです。
  3. 公式の説明では、Claude Codeのバイナリは実行時にNodeを使いません。
Node.js は 2026年10月21日公開の v26.12.1、v24.22.1、v22.23.4 に上げ(脆弱性 10 件、最高は High)、公式の説明では Claude Code は npm で入れた版も実行時に Node を使わない。

Node.jsのプロジェクトは、2026年10月21日付で、26.x、24.x、22.xの3つの系列にセキュリティリリースを出しました。 修正版は、v26.12.1、v24.22.1、v22.23.4です。直した脆弱性は10件で、公式の記事では、最も高い深刻度はHighとされています(内訳はHighが4件、Mediumが3件、Lowが3件です)。

自分のNode.jsの版は、ターミナルでnode -vを実行すると分かります。上の修正版より前なら更新の対象です。公式の記事には、サポートが終わった版は、セキュリティリリースのたびに必ず影響を受けると書かれています。

Claude Codeを使っている人への影響は、公式のセットアップの説明に書かれている範囲では、次の通りです。npmで入れた場合も、実際に動くのはネイティブの実行ファイルで、動くときにNode.jsは使いません。Node.jsを更新する必要があるのは、自分の別のプロジェクトやツールがNode.jsで動いている場合です。

この記事は、2026年10月23日の時点で読んだ公式の情報にもとづきます。 内容は、Node.js公式のセキュリティリリースの記事、リリースの一覧、ダウンロードのページ、CLIの説明、Claude Codeのセットアップの説明と照らし合わせました。

直った版

系列修正版公式の一覧での状態
系列26.x修正版v26.12.1公式の一覧での状態Current
系列24.x修正版v24.22.1公式の一覧での状態LTS
系列22.x修正版v22.23.4公式の一覧での状態LTS
系列25.x修正版修正版なし公式の一覧での状態EOL(サポート終了)
系列20.x修正版修正版なし公式の一覧での状態EOL(サポート終了)

25.xと20.xは、リリースの一覧でEOLとされている系列です。公式の記事の通り、EOLの版は影響を受けるので、修正を受けるには上の3つの系列のどれかへ移る必要があります。リリースの一覧には、本番で使うのはActive LTSかMaintenance LTSにする、とも書かれているので、本番のプログラムなら、LTSの24.xか22.xが候補です。

直した脆弱性(10件)

公式の記事の題の要約と、影響を受ける系列は次の通りです(深刻度は公式の記載です)。

系列ごとに数えると、次の通りです。

図 1系列ごとに当てはまる脆弱性の数(深刻度別)10件すべてが当てはまるのは26.xです。いちばん少ない22.xでも7件あり、Highは3件です。
HighMediumLow
02.557.5104件3件10件26.x4件1件8件24.x3件1件7件22.x05104件3件10件26.x4件8件24.x3件7件22.x05104件3件10件26.x4件8件24.x3件7件22.x
出典 Node.jsの公式ブログWednesday, October 21, 2026 Security Releases。2026年10月24日に読みました。記事の10件のCVEごとに書かれた深刻度と「This vulnerability affects」の系列を、系列ごとに数えました。
数値を表で見る
系列修正版HighMediumLow合計
系列26.x修正版v26.12.1High4件Medium3件Low3件合計10件
系列24.x修正版v24.22.1High4件Medium3件Low1件合計8件
系列22.x修正版v22.23.4High3件Medium3件Low1件合計7件

個々の脆弱性は次の通りです。

High(4件)

  • CVE-2026-111497 Brotliの展開処理で範囲外への書き込みが起き、リモートからコードを実行できる(26.x、24.x、22.x)
  • CVE-2026-105482 dns.resolveが、NUL文字を含む名前を途中で切ってしまう(26.x、24.x、22.x)
  • CVE-2026-105483 IPアドレスが全角の数字で書かれているとき、TLS証明書のホスト名の確認を回避できる(26.x、24.x)
  • CVE-2026-106069 ホスト名が緩くIPアドレスに解決されるとき、TLS証明書のホスト名の確認を回避できる(26.x、24.x、22.x)

Medium(3件)

  • CVE-2026-105481 keep-aliveのソケットが、リクエストを送る前に書かれた応答を処理する(26.x、24.x、22.x)
  • CVE-2026-106072 正規の形でないIPv4のホスト名で、証明書の検証が不適切になり、DNSのSANでIPアドレスの接続先を認証できてしまう(26.x、24.x、22.x)
  • CVE-2026-106074 crypto.randomUUID()とrandomInt()の乱数のキャッシュが、起動のスナップショットとSEAに保存され、すべてのプロセスが同じ値を繰り返す(26.x、24.x、22.x)

Low(3件)

  • CVE-2026-106070 ZipFileが、ZIPヘッダーの検証に失敗したあと、攻撃者が決めた先頭のバイトを返す(26.xのみ)
  • CVE-2026-106071 Permission Modelのファイルシステムの許可が、ワイルドカードの検索で広がりすぎる(26.xのみ)
  • CVE-2026-106073 fs.realpathSyncでPermission Modelを回避できる(26.x、24.x、22.x)

あわせて、公開されている脆弱性に対応する依存パッケージの更新も入っています。c-ares(26.x、24.x、22.x)、eMudhraの中間CAの侵害に伴うCA証明書のバンドル(26.x、24.x、22.x)、OpenSSL(24.x、22.x)、SQLite(22.x)、Undici(26.x、24.x、22.x)です。

公式の記事に、設定などで被害を減らす回避策の記載は見当たりませんでした。自分のプログラムが、どの機能をどう使っているかで影響は変わりますが、この記事ではそこまでは確かめていません。版を上げるのが基本です。

いまの版の確かめ方

ターミナルで次を実行します(CLIの説明に-vと--versionがあります)。

コマンド
node -v

v24.22.1のように出ます。出た版を、上の「直った版」の表と比べます。同じ系列で、修正版より数字が小さければ、更新します。

Node.jsの版を切り替える道具を使っているなら、実際にプログラムを動かすフォルダの中で実行して、そこで使われる版を確かめます。Dockerで動かしているなら、動いているコンテナの中で実行します。

入れ方ごとの更新

ダウンロードのページには、入れ方ごとにコマンドの形が出ます。ページに出ていたのは次の形です(24の部分は系列の番号です)。実行したあとは、必ずnode -vで、修正版以上になったかを確かめます。

入れ方ページに出るコマンドの形
入れ方公式のインストーラーページに出るコマンドの形ダウンロードのページから最新の版を入れ直す
入れ方nvmページに出るコマンドの形nvm install 24
入れ方fnmページに出るコマンドの形fnm install 24
入れ方Homebrewページに出るコマンドの形brew install node@24
入れ方Chocolateyページに出るコマンドの形choco install nodejs --version= のあとに版を指定
入れ方Dockerページに出るコマンドの形docker pull node:24-slim

同じページには、こうした入れ方のうち、コミュニティのソフトを使うものは、そのソフトを管理しているチームが支えている、とあります。うまくいかないときは、その道具の公式の説明を見ます。

Linuxのパッケージでの更新は、OSの提供元が出している案内に従います。この記事では、各ディストリビューションの対応は確かめていません。

Claude Codeを使っている人は

セットアップの説明(2026年10月23日に読みました)に書かれている内容は次の通りです。

  • 動作環境の一覧に、Node.jsは載っていません
  • npmで入れる場合は、Node.js 22以降が必要です。古いNode.jsでも、入れるときに警告が出るだけで、入れたclaudeは動きます。入るのはネイティブの実行ファイルで、動くときにNode.jsは使わないからです
  • npmのパッケージは、公式のコマンド1行で入れるものと同じネイティブの実行ファイルを入れます。入ったclaudeの実行ファイルは、Node.jsを呼び出しません

つまり、Claude Code本体の動作のために、Node.jsの修正版が必要になるとは、この説明からは読み取れません。npmで入れたClaude Codeを更新するコマンドは、npm install -g @anthropic-ai/claude-code@latestです。説明には、npm update -gは最新に上がらないことがあるので避ける、とあります。

Claude Codeの更新の方法は、次の記事で入れ方ごとに説明しています。

関連記事入れる・困ったときClaude Codeのアップデート方法|バージョンの確かめ方と、入れ方ごとの更新・戻し方Claude Codeのバージョンの確かめ方と、入れ方ごとのアップデート方法を解説。自動更新のしくみ、latestとstableの選び方、前の版に戻す方法、リリースノートの読み方まで。

Claude Codeに自分のプロジェクトの版の棚卸しをさせるなら、読むだけの使い方から始めるのが安全です。設定の考え方は次の記事で説明しています。

関連記事安全と会社での利用Claude Codeのセキュリティ設定|権限・sandbox・法人運用【2026年版】Claude Codeを安全に使うためのpermissions、sandbox、機密ファイル拒否、ネットワーク制御、managed settings、データ保持、監査を公式仕様で解説。 関連記事安全と会社での利用Claude Codeを安全に始める初期設定|初心者の30分スターターClaude Codeを安全に始める初心者向け手順。専用フォルダ、ダミーデータ、権限設定、確認、復旧を30分で試せます。

同じ週に公開された、PHPの重大な脆弱性についての記事もあります。

関連記事安全と会社での利用PHPの脆弱性(CVE-2026-109618・109619)|自分のPHPのバージョン確認と、いまやること2026年10月21日にPHPの重大な脆弱性2件(CVE-2026-109618、109619)の修正版が公開されました。直った版、8.1以前の扱い、レンタルサーバーとVPSで違う対応、バージョンの調べ方、いまやる順番を公式の情報で整理します。

この記事で確かめたことと、確かめていないこと

確かめたこと

  • 修正版、CVE番号、深刻度、影響を受ける系列は、Node.js公式の記事の記載と照らし合わせました
  • 系列の状態(Current、LTS、EOL)は、公式のリリースの一覧で読みました
  • Claude Codeの動作環境とnpmでの入れ方は、公式のセットアップの説明で読みました

確かめていないこと

  • 各CVEの詳しい攻撃の条件や、CVSSの数値は、この記事では読んでいません
  • 各ディストリビューションやパッケージ管理ツールが、いつ修正版を出すかは確かめていません
  • Claude Codeの公式の説明が、MCPサーバーなど、Node.jsで動く周辺のツールについてどう書いているかは、今回は確かめていません
  • npmで入れたClaude Codeを、Node.jsの更新の前後で実際に動かす検証はしていません

公式資料

よくある質問

Node.jsのバージョンはどう確認しますか?

ターミナルでnode -vを実行します。v24.22.1のように出ます。今回の修正版は、26.xがv26.12.1、24.xがv24.22.1、22.xがv22.23.4です。

今回のセキュリティリリースで、深刻度はどれくらいですか?

公式の記事では、直した10件のうち、High(高)が4件、Medium(中)が3件、Low(低)が3件で、最も高い深刻度はHighとされています。

Node.js 20や25を使っています。修正されますか?

公式のリリースの一覧では、20.xと25.xはEOL(サポート終了)です。今回の修正版は26.x、24.x、22.xにだけ出ていて、公式の記事には、EOLの版は常に影響を受けると書かれています。修正版が出ている系列のどれかに移ります。リリースの一覧は、本番ではActive LTSかMaintenance LTSを使うよう書いているので、本番なら24.xか22.xが候補です。

Claude Codeを使っていますが、Node.jsの更新は必要ですか?

公式のセットアップの説明では、npmで入れたClaude Codeも、動くときにNode.jsを使いません。そのため、Claude Code本体のために更新する必要があるとは書かれていません。自分のほかのプロジェクトやツールがNode.jsで動いているなら、そちらは更新の対象です。

更新したあと、何を確かめればよいですか?

node -vで修正版以上になっているかを確かめます。版を切り替える道具を使っているなら、プログラムを動かすフォルダの中でも実行します。Dockerなら、動いているコンテナの中で実行します。