Node.js 脆弱性(2026年11月)とClaude Code|どこがNode.jsで動くか、更新しても古い版が残る落とし穴
Node.js 脆弱性(2026年11月・CVE16件)とClaude Codeの関係を実測。CLI本体はNode非依存でも、npxで動くMCPサーバーやBashツールはシステムのNodeで動き、更新しても起動中のセッションは旧版のままでした。

この記事の結論
- Node.jsは2026年11月11日、発表ページ掲載のCVE16件(HIGH7・MEDIUM6・LOW3)を修正したv26.13.1・v24.22.3・v22.23.5を公開しました。HIGHはすべてHTTP/2とTLSのサーバー側です。
- Claude Codeのネイティブ版CLIバイナリは、公式ドキュメントのとおりシステムのNode.jsを呼び出しません。一方、npxで起動するMCPサーバー、Bashツールのスクリプト、npm版の導入はシステムのNode.jsで動きます。
- 当研究所の作業セッションのMCPサーバー(Playwright MCPなど2つ)は、実プロセス上でv24.22.1(旧・未修正)で動いていました。どこがNodeで動くかは実際のプロセスで確かめられます。
- node本体を入れてnvmの既定も修正版に移した後も、更新前から起動したままのセッションは古いNode.jsを使い続けました(macOS・nvm・Claude Code v2.1.322での実測)。新しいターミナル/セッションで初めて修正版になります。更新後の再起動が肝心です。
- Node.js 20(2026-04-30)と25(2026-06-01)はサポート終了済みで、今回の修正対象外です。公式は「サポート終了版は常に影響を受ける」と述べています。
Node.jsは2026年11月11日、公式発表ページ掲載で16件の脆弱性(HIGH7件を含む)を修正したv26.13.1・v24.22.3・v22.23.5を公開しました。気になるのは「Claude Codeを使っている自分に関係あるのか」です。当研究所は発表翌日に、Claude Code環境のどこが実際にシステムのNode.jsで動いているかをプロセス単位で確かめ、更新の効き方まで実測しました。結論から言うと、ネイティブ版のCLIバイナリはシステムのNode.jsを使いません。一方で、npxで起動するMCPサーバーやBashツールで動かすスクリプトはシステムのNode.jsで動き、当研究所の作業セッションでは当時の旧版v24.22.1で動いていました。さらに、node本体を更新しても、起動したままのセッションは古いNode.jsを使い続けました(実測環境はmacOS・nvm・zsh・Claude Code v2.1.322)。更新手順そのものは10月の記事にまとめているので、本記事は「どこが対象で、何をすれば本当に切り替わるのか」に絞ります。
目次
2026年11月のNode.jsセキュリティ更新は何が修正された?
Node.jsは2026年11月11日、計16件の脆弱性を修正したセキュリティリリースを3系列で公開しました。重大度の内訳はHIGH7件・MEDIUM6件・LOW3件で、公式は「このリリースで修正した最高重大度はHIGH」と述べています。HIGH7件はいずれもHTTP/2とTLSのサーバー側の問題で、リモートの未認証クライアントからサーバーをクラッシュさせたり、サーバーのメモリがレスポンス本文に混入したり、TLS1.2の再ネゴシエーションでクライアント証明書認証を回避できたりするものです。
| 系列 | 修正版 | コードネーム | 状態(EOL) |
|---|---|---|---|
| 26.x | v26.13.1 | Lithium | LTS(2029-04-30) |
| 24.x | v24.22.3 | Krypton | LTS(2028-04-30) |
| 22.x | v22.23.5 | Jod | LTS(2027-04-30) |
| 20.x | なし | Iron | EOL 2026-04-30・対象外 |
| 25.x | なし | — | EOL 2026-06-01・対象外 |
重大度ごとの中身は次のとおりです。依存ライブラリも更新されており、llhttp(9.4.4・全系列)、undici(24.xは7.30.2、26.xは8.12.4)、sqlite(3.54.1)、brotli(1.2.1・24/26)が上がっています。OpenSSLやnpmのバージョン更新は含まれていません。
| 重大度 | 件数 | 主な内容 |
|---|---|---|
| HIGH | 7 | HTTP/2・TLSのサーバー側。リモートからのクラッシュ、メモリのレスポンス混入、クライアント証明書認証の回避など |
| MEDIUM | 6 | HTTP/2のヒープオーバーフロー、mTLSの回避、プロキシ資格情報のエラーメッセージ露出(CVE-2026-123871)など |
| LOW | 3 | Permission Model 2件(再帰fs.watch・ワイルドカード過剰許可)+zlibのクラッシュ |
公式の発表ページは、サポート終了(End-of-Life)版について「サポート終了版は、セキュリティリリースがあるとき常に影響を受ける」と明記しています。前述のとおりNode.js 20と25はすでにEOLで、同じ問題があっても修正版は出ません。古い系列を使っている場合はLTS(v22/v24/v26)へ移行が必要です。
Claude Code本体はNode.jsの脆弱性の影響を受ける?
Claude Codeのネイティブ版CLIバイナリは、システムのNode.jsを使いません。公式ドキュメントも「インストールされたclaudeバイナリは、自身ではNodeを呼び出さない」と明記しています。当研究所の環境でも、CLIの実体はBunベースでした(これはローカルでの観測で、公式仕様ではありません)。公式ドキュメントのこの一文のとおり、CLIバイナリ自体はシステムのNode.jsを実行しません。
ただし注意が2つあります。1つは、npm版でClaude Codeを入れている場合、導入・更新にはNode.js 22以降が必要で、npmやnpxを使う以上そのNode.jsは最新に保つべきだという点です(公式は「npmパッケージはNode.js 22以降が必要」としています)。もう1つは、Claude Codeが呼び出す周辺のプログラムはシステムのNode.jsで動くという点です。次の節で、どこがNode.jsで動くのかを棚卸しします。入門から読みたい方はClaude Codeとは?もあわせてご覧ください。
Claude CodeのどこがシステムのNode.jsで動く?
Claude Codeを使うとき、Node.jsが動く場所は大きく5つに分けられます。CLI本体以外は、ほぼすべてシステムのNode.jsで動きます。下の表は当研究所の見解として、どこがNode.jsで動き、今回のどのCVEが関係しうるか、何をすればよいかを整理したものです(公式は影響範囲を系列単位でしか示していないため、対応付けは当研究所の整理です)。
| 動く場所 | システムのNodeで動くか | 関係しうる今回のCVE | 対応 |
|---|---|---|---|
| ネイティブ版CLIバイナリ | 動かない(docs明記) | — | 本体の自動更新を切らない |
| npm版の導入・npxコマンド | システムのNode | 導入にNode 22+が必要 | Nodeを修正版へ |
| stdio型MCPサーバー(npx起動) | システムのNode | 外部HTTP取得・プロキシ・TLSを使うものは123871/123877など | Node更新+セッション再起動 |
| Bashツールで動かすスクリプト | システムのNode | そのコード次第(HTTP/2・TLSサーバーならHIGH群) | 同上 |
| --permission を使うコード | システムのNode | 123829・106071(サンドボックス回避) | Node更新 |
| デプロイ先(Docker・CI・ホスティング) | そのランタイムのNode | HTTP/2・TLSサーバーのHIGH7件 | ベースイメージ・CIのnodeを上げる(手元とは別) |
最後の行が見落とされがちです。Claude Codeで作ってサーバーやCIで動かすアプリは、あなたのノートPCのNode.jsではなく、Dockerのベースイメージ・CIのnodeバージョン・ホスティングのランタイムで動きます。今回のHIGHはサーバー側のHTTP/2・TLSなので、外部公開するアプリではこちらの更新のほうが重要になることがあります。手元のnodeを上げただけで安心しないでください。
更新したのに古いNode.jsが使われるのはなぜ?
起動中のプロセスは、起動した時点で解決したNode.jsを使い続けるからです。node本体を入れ替えても、すでに動いているClaude Codeセッションやその配下のMCPサーバーには反映されません。これは実際に確かめられます。当研究所の作業セッション(2026年11月11日に起動)配下のMCPサーバーを調べると、2つのMCPサーバーがどちらもv24.22.1(当時の旧版)で動いていました。修正版v24.22.3をインストールしたのは、その翌朝(セッション起動より後)です。
| 起動のしかた | Bashツール/MCPが使うnode |
|---|---|
| 更新前から起動したままのセッション | v24.22.1(旧) |
| 更新後に開いた新しいターミナル/セッション | v24.22.3(修正版) |
当研究所では、同じ環境でClaude Codeを「既存のPATHを引き継いで起動した場合」と「新しいログインシェルから起動した場合」で、Bashツールが報告するnodeのバージョンが前者はv24.22.1、後者はv24.22.3に分かれることを確認しました。つまり更新の最後の一手は「開き直すこと」です。node本体を入れてnvmの既定(default)を修正版に移したら、ターミナルとClaude Codeを閉じて開き直し、動いているMCPのnodeプロセスまで確認してください。なお、環境によって事情は変わります。nvmは新しい版を入れるだけでなくdefaultエイリアスも移す必要があり、プロジェクトに.nvmrcがある場合やVoltaでピン留めしている場合は、新しいターミナルでも古い版が選ばれることがあります。Homebrewのような固定パス運用では、新規に起動するプロセスの挙動がまた異なります。
Permission Modelの脆弱性は何が危ない?
LOW3件のうち2件は、Node.jsのPermission Model(--permissionによるファイル/ネットワークのサンドボックス)の回避です。サンドボックスを信頼してコードやエージェントを動かしている場合に関係します。1つは再帰モードのfs.watchが「読めないはずの配下ファイルの名前」を漏らすもの(CVE-2026-123829、macOSとWindowsのみ)、もう1つはワイルドカード指定のファイル許可が意図より広く一致してしまうもの(CVE-2026-106071)です。
後者は当研究所の環境で再現しました。--allow-fs-read=<ディレクトリ>/passwd.* という許可を与えた状態で、ワイルドカードが付かない <ディレクトリ>/passwd 本体を読もうとすると、旧版では読めてしまいました。修正版では拒否されます。
| Node.jsバージョン | ワイルドカード許可で許可外のファイル本体を読む |
|---|---|
| v24.22.1・v22.23.4(旧) | 読めた(過剰許可) |
| v24.22.3・v22.23.5(修正版) | ERR_ACCESS_DENIED(拒否) |
| v26.12.1(10月21日版) | 当環境では既に拒否 |
公式はこの問題を26.xでも影響ありと記載していますが、当研究所がたまたま入れていた10月21日版のv26.12.1では再現しませんでした(その直前のv26.13.0は未検証です)。26.xでの挙動については当環境の結果だけでは結論を出せないため、断定しません。なお、今回の発表ページに載った16件とは別に、各系列のリリースノートにはもう1件のPermission Model関連の修正(CVE-2026-123873)が含まれています。いずれにせよ、Permission Modelを使っているなら修正版への更新をおすすめします。Claude Codeそのもののサンドボックス設計についてはClaude Codeセキュリティチェックリストも参考にしてください。
Claudeと協力して報告された脆弱性もある
今回のCVE16件のうち5件は、公式発表ページで「Chris Rohlf氏がClaudeおよびAnthropic Researchと協力して報告」と帰属されています(CVE-2026-123863・123864・123874・123875・123862)。このうち3件はHIGHで、HTTP/2のリモートクラッシュやメモリ安全性の問題です。AIを併用した脆弱性調査の成果が、実際のオープンソースの公式セキュリティ修正として取り込まれています。
これは利用者側にも示唆があります。Claude Codeで書いたコードやスクリプトを、セキュリティの観点で自分でも点検させる使い方が現実的になっているということです。脆弱性調査の一端をAIが担い始めている点は、ニュースとして押さえておく価値があります。
Claude Codeユーザーの対応策
やることは4つです。手元のNode.jsを修正版にして、開き直して確認し、公開するアプリは土台のNodeを別に上げる、という流れになります。更新方法の網羅的な解説(公式インストーラー・nvm-windows・Windows手順)は10月の記事に譲り、ここでは今回(11月)のバージョンでの要点を挙げます。
1. Claude Code本体は自動更新を切らない
ネイティブ版CLIはNode非依存ですが、本体の既知の不具合対策として自動更新は有効のままにしておきます。npm版を使っているなら、導入・更新に使うシステムのNode.jsを最新のLTSに保ってください。
2. システムのNode.jsを11月の修正版へ
使っている系列の最新パッチ(v22.23.5/v24.22.3/v26.13.1)へ更新します。nvmの例(v24系)は、新しい版を入れたうえで既定(default)も移します:nvm install 24.22.3 && nvm alias default 24.22.3 && node -v。v20・v25などサポート終了版を使っている場合はLTSへ移行します。
3. 開き直して、動いているプロセスまで確認する
これが肝心です。ターミナルとClaude Codeを閉じて開き直し、MCPサーバーのnodeプロセスが修正版になっているかを確かめます。macOSなら、動いているMCPのnodeのプロセスID(PID)を調べ、lsof -p <PID> の先頭に出る実行ファイルのパスで版を確認できます(当研究所が実測に使った方法)。更新前から動いているセッションは、閉じるまで古いNode.jsのままです。
4. 公開するアプリは土台のNodeを別に上げる
今回のHIGHはサーバー側のHTTP/2・TLSです。Claude Codeで作ってサーバーやCIで動かすアプリは、Dockerのベースイメージ・CIのnodeバージョン・ホスティングのランタイムを修正版に上げます。手元のnodeとは別物です。
まとめ
この記事のまとめ
- Node.jsは2026年11月11日、CVE16件(HIGH7・MEDIUM6・LOW3、最高HIGH)を修正したv26.13.1・v24.22.3・v22.23.5を公開した。HIGHはすべてHTTP/2・TLSのサーバー側
- Claude Codeのネイティブ版CLIはシステムのNode.jsを使わない(docs明記)。一方、npxで動くMCPサーバー・Bashツールのスクリプト・npm版の導入はシステムのNode.jsで動く
- 当研究所の作業セッションのMCP(Playwright MCPなど2つ)は実プロセス上でv24.22.1(旧)で動いていた。どこがNodeで動くかは実際のプロセスで確認できる
- node本体を更新しても、起動中のセッションは古いNode.jsを使い続けた(実測)。新しいターミナル/セッションで初めて修正版になる。更新後の再起動が肝心
- Permission Modelの過剰許可(CVE-2026-106071)は旧版で再現、修正版で拒否。Node 20・25はEOLで対象外。公開アプリは土台のNode(Docker・CI・ホスティング)を別に上げる
- CVE16件のうち5件(HIGH3件を含む)は、Chris Rohlf氏がClaude・Anthropic Researchと協力して報告したもの
※ Node.js と Node.js のロゴは OpenJS Foundation の商標です。本記事では参照のために名称を用いています。
安全な設定まで含めて、Claude Codeを社内に入れる。
防衛省主催のサイバーセキュリティコンテストで入賞した専門家が教材を設計。機密情報を扱う士業事務所でも使える運用設計を、一社ごとの対面研修で身につけます。
- 一社ごとに業務をヒアリングして設計
- 実際の業務データでハンズオン
- スパルタ以上は全額返金保証
- 受講法人数100社超
オンライン30分・無料。フォームは入力1分で、2営業日以内にご連絡します。
よくある質問
2026年11月のNode.jsセキュリティ更新は何が修正されましたか?
Node.jsは2026年11月11日、発表ページ掲載で計16件の脆弱性(HIGH7件・MEDIUM6件・LOW3件)を修正したv26.13.1(Lithium LTS)・v24.22.3(Krypton LTS)・v22.23.5(Jod LTS)を公開しました。HIGH7件はすべてHTTP/2とTLSのサーバー側で、リモートからのクラッシュ、サーバーのメモリがレスポンスに混入する問題、クライアント証明書認証の回避などです。依存ライブラリ(llhttp・undici・sqlite・brotli)も更新されました。サポート終了済みのNode.js 20・25には修正版がありません。
Claude Code本体はNode.jsの脆弱性の影響を受けますか?
Claude Codeのネイティブ版CLIバイナリは、システムのNode.jsを使いません。公式ドキュメントも「インストールされたclaudeバイナリは自身ではNodeを呼び出さない」と明記しており、当研究所の環境でも実体はBunベースでした(ローカルでの観測で、公式仕様ではありません)。ただしnpm版の導入にはNode.js 22以降が必要で、npxで起動するMCPサーバーやBashツールで動かすスクリプトはシステムのNode.jsで動きます。CLIが安全でも、その周辺は別と考えるのが安全です。
Node.jsを更新したのに古いバージョンが使われるのはなぜですか?
起動中のプロセスは、起動した時点で解決したNode.jsのパスを使い続けるためです。当研究所の実測では、nvmで修正版(v24.22.3)を入れて既定(default)も移した後も、更新前から起動したままのClaude Codeセッションでは、BashツールもMCPサーバーもv24.22.1(旧)のままでした。新しいターミナルで起動し直すと、はじめてv24.22.3になりました。更新後はターミナルとClaude Codeを開き直し、動いているプロセスまで確認してください。.nvmrcやVoltaでバージョンを固定している場合は別の版が使われることがあります。
Node.js 20や25はもう更新されませんか?
はい。公式のリリーススケジュールでは、Node.js 20(Iron)は2026年4月30日、Node.js 25は2026年6月1日にサポートが終了しており、今回の2026年11月のセキュリティ修正の対象外です。公式も「サポート終了(End-of-Life)版は、セキュリティリリースがあるとき常に影響を受ける」と述べています。現行のLTSはv22(Jod・2027-04-30まで)、v24(Krypton・2028-04-30まで)、v26(Lithium・2029-04-30まで)です。これらの最新パッチ(v22.23.5/v24.22.3/v26.13.1)へ更新してください。
Claude CodeのMCPサーバーはどのNode.jsで動いていますか?
stdio型のMCPサーバーをnpxで起動している場合、そのときPATH上で解決されたシステムのNode.jsで動きます。当研究所の作業セッションでは、npxで動く2つのMCPサーバーのプロセスを調べたところ、どちらもv24.22.1(当時の旧版)で動いていました。確認はターミナルのps(またはタスクマネージャー)でMCPのnodeプロセスを探し、実行ファイルのパスを見れば分かります。外部からHTTP取得やプロキシ通信を行うMCPサーバーは、プロキシ資格情報の露出(CVE-2026-123871)が関係しうるため、更新とセッション再起動をおすすめします。
参考資料・出典
- 公式ブログ・記事Wednesday, November 11, 2026 Security Releases
CVE16件の一覧・重大度・影響する系列・修正版、サポート終了版の扱い、Chris Rohlf氏がClaude・Anthropic Researchと協力して報告した5件の帰属
- GitHubNode.js v24.22.3 (LTS) リリースノート
依存更新(llhttp 9.4.4・undici 7.30.2・sqlite 3.54.1・brotli 1.2.1)の確認元。v26.13.1・v22.23.5のノートもあわせて参照
- 公式ドキュメントNode.js Release Schedule(nodejs/Release)
schedule.json の end で、Node 20=2026-04-30・25=2026-06-01 のEOL、v22/24/26のLTS期限を確認
- 公式ドキュメントAdvanced setup — Claude Code Docs(System requirements / Install with npm)
npm版は「Node.js 22 or later」が必要、ネイティブ版は「does not itself invoke Node」、ネイティブ版推奨・自動更新
- 公式ドキュメントConnect Claude Code to tools via MCP
stdio型MCPをnpxで起動する例(npx -y ...)、サードパーティのMCPサーバーは信頼を確認する旨の警告
- 公式ブログ・記事Node.js 脆弱性(2026年10月)対応|Claude Code・MCP用のNode.jsを5分で更新する手順
nvm・公式インストーラー・nvm-windowsでの更新手順の詳細(本記事からの内部リンク)
Claude Codeを実務で活用したい方へ
一社ごとにカスタマイズする対面のClaude Code研修は「スパルタClaude Code塾」。経営者・士業・エンジニア・マーケター・営業職まで、業務をヒアリングしてカリキュラムを設計します。まずは30分の無料相談で、自動化プランと費用対効果をご確認ください。

