Node.js 脆弱性(2026年10月)対応|Claude Code・MCP用のNode.jsを5分で更新する手順
Node.js 脆弱性(2026年10月21日の10件。Brotliの不正コード実行・TLS証明書検証の回避)の対応手順。Claude Code・Playwright MCP用に入れたNode.jsをv24.22.1へ更新する手順を解説。

この記事の結論
- Node.jsは2026年10月21日に脆弱性10件(High 4件)を修正したv22.23.4・v24.22.1・v26.12.1を公開し、v18・v20・v23・v25などサポート終了版には修正版がありません。
- 最も深刻なCVE-2026-111497はBrotli圧縮データを展開する処理の境界外書き込みで、攻撃者が用意した圧縮データをNode.jsのプロセスが展開すると不正なコード実行につながる可能性があります。
- Claude Codeのネイティブ版はNode.jsを使いませんが、Playwright MCPなどnpxで起動するMCPサーバーは手元のNode.jsで動くため、node -vで版を確かめて更新が必要です。
- 更新はWindowsが公式インストーラーかnvm-windows、Mac/Linuxがnvm install 24.22.1とnvm alias default 24.22.1で行い、ターミナルを開き直してnode -vで修正版を確かめます。
- 当研究所のMac(nvm 0.39.5)ではnvm version-remote 22/24/26がv22.23.4・v24.22.1・v26.12.1を返し、公式告知の修正版と一致しました(2026年10月22日確認)。
Node.js は2026年10月21日、10件の脆弱性を修正したセキュリティリリース(v22.23.4・v24.22.1・v26.12.1)を公開しました。最も深刻なものは Brotli 形式の圧縮データを展開する処理の不具合で、細工されたデータを Node.js のプロセスが処理すると不正なコードを実行される可能性があります。Anthropic の Claude Code(クロードコード)本体は Node.js を使いませんが、Playwright MCP などのために入れた Node.js は対象です。この記事では、自分の Node.js が対象かを1分で確かめ、修正版へ更新し、更新できたことを確認するまでを、Windows・Mac 別に当研究所の実行ログつきでまとめます。
目次
2026年10月21日の Node.js の脆弱性とは?何が修正されたのか
2026年10月21日のセキュリティリリースは、Node.js のサポート中の3系列(v22・v24・v26)で合計10件の脆弱性を修正したものです。公式告知によると深刻度は High が4件、Medium が3件、Low が3件で、修正版は v22.23.4・v24.22.1・v26.12.1 です。v18・v20・v23・v25 などサポートが終了した系列には修正版がありません。
告知は、サポート終了版の扱いを次のように明記しています。
「サポート終了(End-of-Life)のバージョンは、セキュリティリリースが行われるたびに常に影響を受けることに注意してください。」
"It's important to note that End-of-Life versions are always affected when a security release occurs."
Node.js プロジェクト — Wednesday, October 21, 2026 Security Releases(2026年10月21日)
修正された10件は次のとおりです。内容は公式告知のタイトルを当研究所が日本語に要約したもので、2026年10月22日時点では各 CVE の詳細な技術説明(GitHub Advisory Database や CVE レコード)はまだ公開されていません。
| CVE | 内容(公式告知のタイトルを要約) | 深刻度 | 対象系列 |
|---|---|---|---|
| CVE-2026-111497 | Brotli デコーダの境界外書き込みにより、不正なコード実行(RCE)が可能 | High | 26 / 24 / 22 |
| CVE-2026-106069 | ホスト名がゆるく IP アドレスに解決される場合の、TLS 証明書ホスト名検証の回避 | High | 26 / 24 / 22 |
| CVE-2026-105483 | IP アドレスを全角数字で書いた場合の、TLS 証明書ホスト名検証の回避 | High | 26 / 24 |
| CVE-2026-105482 | dns.resolve が NUL 文字を含む名前を切り詰める | High | 26 / 24 / 22 |
| CVE-2026-105481 | Keep-Alive のソケットが、リクエスト送信前に書き込まれたレスポンスを処理する | Medium | 26 / 24 / 22 |
| CVE-2026-106072 | 非正規表記の IPv4 ホスト名に対する証明書検証の不備(DNS の SAN で IP を認証してしまう) | Medium | 26 / 24 / 22 |
| CVE-2026-106074 | crypto.randomUUID() と randomInt() の乱数キャッシュがスタートアップスナップショットと SEA に保存され、同じ値が繰り返される | Medium | 26 / 24 / 22 |
| CVE-2026-106070 | ZipFile が ZIP ヘッダの検証に失敗した後、攻撃者が制御するバイト列を返す | Low | 26 |
| CVE-2026-106071 | Permission Model のワイルドカード検索による、ファイルシステム権限の過剰付与 | Low | 26 |
| CVE-2026-106073 | fs.realpathSync による Permission Model の回避 | Low | 26 / 24 / 22 |
※出典:Node.js「Wednesday, October 21, 2026 Security Releases」(2026年10月22日取得)。最高深刻度は High。同時に c-ares・ルート証明書(eMudhra 中間 CA 侵害への対応)・OpenSSL(v24・v22)・SQLite(v22)・undici も更新されています
v24.22.1 のリリースノートには、各修正に対応するコミットの要旨が載っています。TLS は「reject non-canonical IP addresses」「fix ip normalization regression」、DNS は「validate resolve inputs for null bytes」、Brotli は同梱ライブラリへの修正の取り込み(cherry-pick)です。依存ライブラリは OpenSSL 3.5.9、undici 7.30.1、c-ares 1.34.9 に上がり、ルート証明書も NSS 3.131.1 に更新されました。
Claude Code や Playwright MCP を使っていると対象になる?
答えは「Node.js を入れているなら対象、入れていなければ対象外」です。Anthropic が推奨する Claude Code のネイティブ版は Node.js を使わずに動き、npm で入れた場合も実行されるのは同じネイティブのバイナリです。一方、Playwright MCP のように npx で起動する MCP サーバーは、手元の Node.js の上で動きます。
Claude Code 側の根拠は公式ドキュメント「Advanced setup」です。npm 版について、次のように書かれています。
「npm パッケージは、スタンドアロンのインストーラーと同じネイティブバイナリをインストールします。(中略)インストールされた claude バイナリ自体は Node を呼び出しません。」
"The npm package installs the same native binary as the standalone installer. ... The installed claude binary does not itself invoke Node."
Anthropic — Claude Code Docs「Advanced setup」(2026年10月22日確認)
つまり、ネイティブインストール(curl/irm のコマンド、Homebrew、WinGet)だけで使っている方の PC には、そもそも Node.js が無いことが多いです。逆に、Playwright MCP は要件に「Node.js 18 or newer」とあり、標準設定の npx @playwright/mcp@latest は手元の Node.js で動きます。Windows の環境構築ガイドで Node.js を入れた方は、この記事の対象です。
対象かどうかの早見表
- Claude Code をネイティブ版(curl/irm、Homebrew、WinGet)で入れただけ → Node.js は不要。node -v で「見つからない」と出れば対象外
- Claude Code を npm install -g で入れた → 本体は Node を呼ばないが、PC に Node.js が入っているので Node.js 自体を更新する
- Playwright MCP など、npx や node で起動する MCP サーバーを使っている → 対象。更新が必要
- 自作のスクリプトや他のツール(npm のパッケージ、Electron 以外のローカルサーバーなど)で Node.js を使っている → 対象
当研究所の Mac で確かめると、Claude Code 2.1.307 の実体は ~/.local/share/claude/versions/2.1.307 にある arm64 のネイティブバイナリで、Node.js への依存はありませんでした。一方、Playwright MCP は npx で起動する設定なので、nvm で入れた Node.js(v24.22.1)の上で動いています。
自分の Node.js のバージョンを確認する方法(Windows・Mac)
確認は node -v の1コマンドです。Windows は PowerShell かコマンドプロンプト、Mac/Linux はターミナルを開いて実行し、表示された版が v22.23.4・v24.22.1・v26.12.1 以上なら修正済みです。「node が見つからない」「認識されていません」と出た場合は、Node.js が入っていないか、PATH が通っていないかのどちらかです。
node -v
# 例: v24.22.1 と出れば修正版。v24.21.x 以下なら更新が必要
Node.js を複数入れている場合(公式インストーラーと nvm の両方など)は、どの Node.js が実際に使われているかも確認します。
# Windows(PowerShell / コマンドプロンプト)
where.exe node
# Mac / Linux
which node
which -a node # 複数ある場合はすべて表示
nvm を使っている方は、nvm ls(Windows の nvm-windows は nvm list)で入っている版と現在の版が一覧できます。当研究所の Mac(macOS 26.6.2、nvm 0.39.5)では次のとおりで、使われている node は nvm 配下の v24.22.1、npm は 11.19.1 でした。あわせて nvm version-remote で各系列の最新版を問い合わせると、v22 が v22.23.4、v24 が v24.22.1、v26 が v26.12.1 と返り、公式告知の修正版と一致しました(2026年10月22日)。
nvm version-remote 22 # → v22.23.4
nvm version-remote 24 # → v24.22.1
nvm version-remote 26 # → v26.12.1
nvm version-remote --lts # → v24.22.1(Latest LTS: Krypton)
Node.js を修正版に更新する手順(インストーラー・nvm-windows・nvm)
更新の方法は、Node.js をどう入れたかで3通りです。Windows で公式インストーラーを使った方は nodejs.org から LTS 版(v24.22.1 以降)を入れ直し、nvm-windows の方は nvm install 24.22.1 と nvm use 24.22.1、Mac/Linux で nvm の方は nvm install 24.22.1 → nvm use 24.22.1 → nvm alias default 24.22.1 です。
古い系列やサポート終了版を使っている方は、このタイミングで v24 LTS(2028年4月までサポート)へ移るのが安全です。どの方法でも、目安の所要時間は5分程度です。
Windows:公式インストーラーで入れた方
Node.js 公式サイトを開き、LTS 版(v24.22.1 以降)の Windows Installer(.msi)をダウンロードして実行します。通常は既存の Node.js の上に上書きで更新され、事前のアンインストールは不要です。WinGet で入れた方は、同じ方法のまま「winget upgrade OpenJS.NodeJS.LTS」でも更新できます。どちらの場合も、終わったら PowerShell を開き直して node -v で版を確認してください。
Windows:nvm-windows を使っている方
PowerShell かコマンドプロンプトで次を実行します。nvm-windows の公式ドキュメントでは「インストールと操作に特別な権限は不要」とされており、例外は Node.js の保存先をネットワークパス(UNC)にしている場合です。古い 1.x 系で権限の確認ダイアログが出たときは許可して進めてください。
nvm install 24.22.1
nvm use 24.22.1
node -v # → v24.22.1
Mac / Linux:nvm を使っている方
ターミナルで次を実行します。3行目の nvm alias default は、新しく開いたターミナルでも 24.22.1 が使われるようにする設定です。npm install -g で入れたグローバルパッケージは版ごとに別管理なので、引き継ぎたい場合は nvm の README にある --reinstall-packages-from を使います。Mac で公式インストーラー(.pkg)を使っている方は、公式サイトから LTS 版を入れ直してください。Homebrew の方は brew upgrade node です。
nvm install 24.22.1
nvm use 24.22.1
nvm alias default 24.22.1
# v24 系からの更新で、グローバルの npm パッケージも引き継ぐ場合
nvm install --reinstall-packages-from=24 24.22.1
なお、nvm 自体も古いまま使い続けないほうが安全です。nvm の README は「サポートされるのは最新版(v0.40.8)のみ」としています(2026年10月22日確認)。当研究所の Mac は 0.39.5 だったので、この機会に更新対象にしました。
更新できたか確認するには?古い版が残っていないかも見る
更新後は、ターミナル・PowerShell・Claude Code をいったん閉じて開き直し、node -v をもう一度実行します。v24.22.1(または v22.23.4・v26.12.1 以上)と表示され、where.exe node/which node が新しい版の場所を指していれば完了です。複数の Node.js が入っている場合は、古い版が先に見つかっていないかを確認し、他のツールへの影響がないことを確かめてから削除します。
更新後のチェックリスト
- ターミナル・PowerShell・Claude Code・Claude Desktop を閉じて開き直す(開いたままだと古い Node.js が使われ続ける)
- node -v が修正版(v22.23.4・v24.22.1・v26.12.1 以上)を表示する
- where.exe node(Windows)/which -a node(Mac・Linux)で、先頭に出る場所が新しい版である
- nvm を使っている場合は nvm ls(nvm list)で現在の版と default を確認する
- 古い版は、他のツール(他のプロジェクトのスクリプトなど)が使っていないことを確かめてから、nvm uninstall や「アプリと機能」から削除する
- Playwright MCP などの MCP サーバーは、Claude Code や Claude Desktop を再起動したときに新しい Node.js で起動し直される
当研究所の環境では更新前からすでに v24.22.1 だったため、更新作業そのものの再現ログはありません。手元で確かめたのは「確認コマンドの出力」と「nvm が返す各系列の最新版が公式の修正版と一致すること」までです。
更新しないとどうなる?Brotli・TLS・Playwright MCP のリスク
更新しない場合のリスクは3つです。①Brotli 圧縮データを展開する処理の不具合(CVE-2026-111497)による不正なコード実行、②TLS 証明書のホスト名検証の回避(CVE-2026-106069 ほか)による接続先のなりすましや通信の盗聴・改ざん、③Node.js の上で外部サイトを扱う Playwright MCP などのツールが、その入口になり得ることです。
ただし Web を閲覧するだけで直ちに攻撃が成立するわけではなく、「Node.js のプロセスが、攻撃者の用意したデータを処理するか」で露出が決まります。順に見ていきます。
① Brotli:攻撃者の圧縮データを展開すると、コード実行につながる
公式告知のタイトルは「Node.js Brotli decoder out-of-bounds write permits remote code execution」で、Brotli デコーダの境界外書き込みが不正なコード実行を許す、という内容です。露出する条件は、Vercel のセキュリティチームが次のように整理しています。
「Node.js は単体では Brotli データを展開しません。」
"Node.js does not decode Brotli data on its own."
Vercel Security Team — Node.js security advisory: Brotli decoder RCE (CVE-2026-111497)(2026年10月21日)
同告知によると、自分のコードか、使っているライブラリが、攻撃者の制御する Brotli データ(リクエストの本文や、別のサーバーから取得したレスポンス)を展開するときに露出します。研究者は未修正の 22.x・24.x・26.x でプロセスメモリの開示とコマンド実行を実証しており、コードは Node.js のプロセスと同じ権限で動きます。また、修正コミットのテスト入力で v24.22.0 と v24.22.1 を比べた lilting.ch の報告では、fetch() はサーバーが Content-Encoding: br で返すと、クライアントが Accept-Encoding: identity を送っていてもデコーダに到達するとされています。つまり「自分では Brotli を使っていないつもり」でも、HTTP で外部から何かを取得する Node.js のプログラムは、この条件に当てはまり得ます。
② TLS:特定の条件で、不正な証明書を受け入れてしまう
CVE-2026-106069 と CVE-2026-105483(いずれも High)は、ホスト名が IP アドレスとしてゆるく解釈される場合や、IP アドレスを全角数字で書いた場合に、証明書のホスト名検証をすり抜けるというものです。成立すると、接続先のなりすましや通信内容の盗聴・改ざんにつながります。lilting.ch の報告によると、修正コミットには「この不具合は悪用が容易ではない」("the bug is not easy to exploit")とあり、悪用には信頼された認証局が発行した、IP アドレスの形をしたホスト名を含む証明書が必要です。悪用のハードルは高い一方で、修正版に上げれば解消する問題なので、更新で対処するのが確実です。
③ Playwright MCP:Node.js の上で、外部サイトの内容を扱うツール
Playwright MCP は、AI の指示に従って Node.js のプロセスがブラウザを操作し、外部の Web サイトにアクセスする仕組みです。取得するページやダウンロードするデータは、アクセス先が自由に決められるものなので、Node.js 側の不具合が入口になり得ます。人が Chrome でページを見るだけなら Node.js は関係ありませんが、MCP サーバーは Node.js で動く点が違います。今回の脆弱性が Playwright MCP 経由で実際に悪用できるかは実証されていませんが、Node.js を使うツールの安全性を保つために修正版へ更新する、というのが当研究所の見解です。あわせて、非エンジニア向けのセキュリティチェックリストにある権限設定も見直しておくと、万一のときの影響範囲を小さくできます。
日本語圏でも、X で二本松哲也氏が「外部から受け取った圧縮データを Node.js で展開するシステムでは、Brotli の脆弱性も同等の緊急度で評価すべき」と投稿し、2026年10月22日時点で表示 3,949・いいね 98 の反応がありました(投稿はこちら)。
まとめ
この記事のまとめ
- 2026年10月21日、Node.js は脆弱性10件(High 4件)を修正した v22.23.4・v24.22.1・v26.12.1 を公開した。サポート終了版(v18・v20・v23・v25)には修正版がない
- Claude Code のネイティブ版は Node.js を使わないが、Playwright MCP など npx で動く MCP サーバーや npm 版の導入時に入れた Node.js は対象
- 確認は node -v。Windows は where.exe node、Mac/Linux は which -a node で、使われている版の場所も見る
- 更新は公式インストーラー(.msi/.pkg)、nvm-windows(nvm install 24.22.1 → nvm use 24.22.1)、nvm(nvm install 24.22.1 → nvm use → nvm alias default 24.22.1)のいずれか。古い系列は v24 LTS へ
- 更新後はターミナルと Claude Code を開き直して node -v を再確認し、古い版は他のツールへの影響を確かめてから削除する
- Brotli の不具合は「Node.js のプロセスが攻撃者のデータを展開するか」で露出が決まり、HTTP で外部から取得する処理や Playwright MCP は条件に当てはまり得る
※ Node.js と Node.js のロゴは OpenJS Foundation の商標です。本記事では参照のために名称と公式ロゴを用いています。
安全な設定まで含めて、Claude Codeを社内に入れる。
防衛省主催のサイバーセキュリティコンテストで入賞した専門家が教材を設計。機密情報を扱う士業事務所でも使える運用設計を、一社ごとの対面研修で身につけます。
- 一社ごとに業務をヒアリングして設計
- 実際の業務データでハンズオン
- スパルタ以上は全額返金保証
- 受講法人数100社超
オンライン30分・無料。フォームは入力1分で、2営業日以内にご連絡します。
よくある質問
Claude Codeを使っているだけでも、Node.jsの更新は必要ですか?
Node.jsを入れていなければ不要です。Anthropicの公式ドキュメント(Advanced setup)によると、推奨のネイティブインストールはNode.jsを使わず、npmで入れた場合も実行されるのは同じネイティブのバイナリでNode.jsを呼びません。ただし、Playwright MCPなどnpxで動くMCPサーバーを使う方や、npm版の導入でNode.jsを入れた方は更新が必要です。node -vで「見つからない」と出れば対象外、バージョンが出れば修正版(v22.23.4・v24.22.1・v26.12.1以上)かを確認してください。
node -vで古いバージョンが出た場合、どのバージョンに更新すればいいですか?
使っている系列の修正版以上にします。v24系はv24.22.1、v22系はv22.23.4、v26系はv26.12.1が2026年10月21日公開の修正版です。v18・v20・v23・v25はサポート終了(EOL)で修正版が出ないため、Node.js Release Working Groupの予定表で2028年4月までサポートされるv24 LTS(Active LTS、コードネームKrypton)へ移るのが安全です。特別な理由がなければ、公式サイトで「LTS」と表示される版を選べば問題ありません。
Node.jsを更新すると、Claude CodeやPlaywright MCPの設定をやり直す必要はありますか?
通常は不要です。Claude Code本体はNode.jsに依存せず、Playwright MCPの標準設定(npx @playwright/mcp@latest)は起動のたびに必要なパッケージを取得するため、Node.jsを新しくしても設定はそのまま使えます。注意点はnvmで系列を切り替えた場合で、npm install -gで入れたグローバルパッケージは版ごとに別管理です。nvmならnvm install --reinstall-packages-from=24 24.22.1で移行できます。更新後はClaude CodeやClaude Desktopを一度終了して開き直してください。
Brotliの脆弱性(CVE-2026-111497)は、Webサイトを見るだけで攻撃されますか?
Chromeなどのブラウザで閲覧するだけでは、この脆弱性の対象にはなりません。Node.jsの問題で、Vercelの告知によると「Node.jsは単体ではBrotliデータを展開しない」ため、自分のコードやライブラリが攻撃者の用意したBrotli圧縮データ(リクエスト本文や取得したレスポンス)を展開するときに露出します。Playwright MCPのようにNode.jsの上で外部サイトの内容を取得・処理するツールはこの条件に当てはまり得るので、修正版へ更新するのが確実です。2026年10月22日時点で、公式は詳細な技術情報を公表していません。
Windowsのnvm-windowsでnvm useを実行するとき、管理者権限は必要ですか?
nvm-windowsの公式ドキュメント(Permissions)では「インストールと操作に特別な権限は不要」とされています。例外はNode.jsの保存先をネットワークパス(UNC)にしている場合で、シンボリックリンクを作る権限が要ります。v2系は権限不足のときに自動で昇格せず通知で案内する方式です。古い1.x系で権限の確認ダイアログが出た場合は許可して進めてください。更新後はPowerShellを開き直し、node -vでv24.22.1が出ることを確認します。
参考資料・出典
- ニュースNode.js — Wednesday, October 21, 2026 Security Releases
修正版(v22.23.4・v24.22.1・v26.12.1)、CVE 10件のタイトル・深刻度・対象系列、サポート終了版は常に影響を受ける旨、依存ライブラリの更新
- 公式ブログ・記事Node v24.22.1 (LTS)
各CVEに対応するコミットの要旨(tls: reject non-canonical IP addresses ほか)と、OpenSSL 3.5.9・undici 7.30.1・c-ares 1.34.9・ルート証明書 NSS 3.131.1 の更新
- GitHubnodejs/release — Node.js Release Working Group(Release Schedule)
v18〜v26 の状態(Active LTS/Maintenance LTS/Current/End-of-Life)とサポート終了日(2026年10月22日確認)
- 公式ドキュメントAdvanced setup — Claude Code Docs
ネイティブインストールが推奨であること、npm版はNode.js 22以上を要するが、入るclaudeバイナリ自体はNodeを呼ばないこと(2026年10月22日確認)
- GitHubmicrosoft/playwright-mcp
Requirements「Node.js 18 or newer」と、npx @playwright/mcp@latest で起動する標準設定(2026年10月22日確認)
- 公式ブログ・記事Node.js security advisory: Brotli decoder RCE (CVE-2026-111497)
Node.jsは単体でBrotliを展開しないこと、露出する条件、研究者が未修正版でメモリ開示とコマンド実行を実証したこと、Node 20には修正がないこと
- 公式ブログ・記事Node.js v24.22.1 fixes four HIGH CVEs, tested against v24.22.0 and EOL v25.3.0
修正コミットのテスト入力で v24.22.0/v24.22.1/v25.3.0 を比べた結果。fetch() が Content-Encoding: br のレスポンスでデコーダに到達する点、TLSの修正コミットが「not easy to exploit」としている点
- スレッド2026年10月21日、PHPに続いてNode.jsも10件の脆弱性に対応するセキュリティリリースを発表しました。
日本語圏の反応。外部から受け取った圧縮データを展開するシステムではBrotliの脆弱性も同等の緊急度とする見方(2026年10月22日時点で表示3,949・いいね98)
- 公式ドキュメントPermissions — NVM for Windows Documentation
インストールと操作に特別な権限は不要、UNCパス利用時のみシンボリックリンク権限が必要、v2は失敗時に昇格しない(2026年10月22日確認)
- GitHubnvm-sh/nvm — Node Version Manager
nvm install/nvm use/nvm alias default/--reinstall-packages-from の使い方と、サポートされるのは最新版 v0.40.8 のみという注記(2026年10月22日確認)
Claude Codeを実務で活用したい方へ
一社ごとにカスタマイズする対面のClaude Code研修は「スパルタClaude Code塾」。経営者・士業・エンジニア・マーケター・営業職まで、業務をヒアリングしてカリキュラムを設計します。まずは30分の無料相談で、自動化プランと費用対効果をご確認ください。

