JavaScriptの脆弱性は、Node.js本体と、npmで入れるパッケージで確かめ方が違います。npm auditはパッケージだけを調べるので、本体は番号で判断します。ここでは今確かめたい脆弱性、Node.jsのサポート期限、自分の環境が対象かを確かめる手順をまとめます。
- Node.jsのBrotliの件(KEV掲載)は本体の更新でしか直りません。22.23.4/24.22.1/26.12.1以上に上げます。
- Node.js 20は2026年4月30日にサポートが終わりました。本番は24か26のLTSに上げます。
- npm auditの結果に加え、本番で動いている版、Next.jsのnextの版、開発サーバーの公開も確かめます。
01JavaScript・Node.jsで今確かめたい脆弱性
2026年11月1日時点で、米CISAの悪用が確認された脆弱性の一覧(KEV)に載っているもの、深刻度が緊急のもののうち、Node.jsと利用者の多いパッケージに関わるものです。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 | 詳細 |
|---|---|---|---|
| Brotliの展開処理(Node.js本体) CVE-2026-111497・KEV 10月27日 | node:zlibで外部から受け取ったBrotliのデータを展開する場合。Node.js 22・24・26系とサポート終了版。 | 22.23.4/24.22.1/26.12.1以上。npmのパッケージ更新では直りません。[2] | 確認方法と修正版 |
| Next.jsのリモートコード実行2件 GHSA-2464-fhr4-w9xw/GHSA-673q-mjm6-r5xr | 画像最適化(glibcのLinuxで動かす場合)と、Cache Componentsのuse cache関数が型付き配列を返す場合。CVSS 4.0 9.5(Vercelの評価)。KEVには未掲載。 | 15系は15.5.28、16系は16.4.1以上(10月15日公表)。画像最適化はsharp 0.35.5以上でも回避できると案内されています。[3][4] | Vercelのアドバイザリ |
| React Server Componentsのリモートコード実行 CVE-2025-55182・KEV 2025年12月5日 | react-server-dom-webpackなどの19.0.0・19.1.0・19.1.1・19.2.0。サーバーを使わないReactは対象外。 | 19.0.1/19.1.2/19.2.1以上。その後もサービス停止の修正が続いたため、各系列の最新版に上げます。[5] | GitHub Advisory |
| TanStackの不正な版の公開 CVE-2026-45321・KEV 5月27日 | @tanstack/react-routerなど42パッケージで、2026年5月12日(日本時間)に不正な版が84件公開されました。インストールすると資格情報を盗むコードが実行されます。 | 各パッケージの修正版に上げ、該当の版を入れた端末・CIの資格情報をすべて取り替えます。[6] | TanStackのアドバイザリ |
| Viteの開発サーバーのファイル読み取り CVE-2025-31125・KEV 2026年1月22日 | --hostやserver.hostで開発サーバーをネットワークへ公開している場合。 | 6.2.4/6.1.3/6.0.13/5.4.16/4.5.11以上。[7] | GitHub Advisory |
| React Native CLIのコマンド実行 CVE-2025-11953・KEV 2026年2月5日 | CLIが起動するMetroの開発サーバー。初期設定で外部のネットワークに待ち受けます。 | @react-native-community/cliとcli-server-apiを20.0.0/19.1.2/18.0.1以上。[8] | GitHub Advisory |
このほか、Magic LinkとOAuthを併用する構成のbetter-authの認証回避と、Vite 6.4.4のファイル読み取りの記事があります。
02Node.jsのサポート期限と更新先
Node.js公式は、本番では長期サポート版(LTS)だけを使うよう案内しています。[9]
| 系列 | 状態(2026年11月1日) | サポート終了 | 上げる先 |
|---|---|---|---|
| 26(Lithium) | LTS(10月28日から) | 2029年4月30日 | 26.12.1以上(最新は26.13.0) |
| 24(Krypton) | 保守のLTS(10月20日から) | 2028年4月30日 | 24.22.1以上(最新は24.22.2) |
| 22(Jod) | 保守のLTS | 2027年4月30日 | 22.23.4以上。期限が近いので24か26へ |
| 20(Iron) | サポート終了 | 2026年4月30日 | 最終版は20.20.2。24か26へ |
| 25・23以前の奇数版 | サポート終了 | 25は2026年6月1日 | 24か26へ |
日付はNode.jsのリリース計画の値です。[10]サポート終了版はセキュリティ修正の告知でも「常に影響を受ける」と扱われ、修正版は出ません。[2]Node.js 27からは年1回の公開になり、すべての版がLTSになります。[9]
03npm audit・pnpm auditで依存関係の脆弱性を確かめる
npmの監査は、lockファイルにあるパッケージを既知の脆弱性と照らし合わせるもので、Node.js本体は見ません。本体はnode -vの番号を上の表と比べます。npmの監査は、初期設定ではpackage-lock.jsonかnpm-shrinkwrap.jsonが必要です。[11]
node -v
npm audit
npm audit --omit=dev # 本番で入る依存だけ
npm audit --audit-level=high # high以上で終了コードを1にする(CI向け)
npm audit signatures # 署名と出所の証明を確かめるpnpmとYarn(2以降)は次のとおりです。pnpmの結果はCVEではなくGHSAの番号で出ます。[12]
pnpm audit
pnpm audit --prod
yarn npm audit --all --recursive見つかったパッケージがどこから入っているかは、次のコマンドで確かめます。
npm ls next --all
npm explain react-server-dom-webpack
pnpm why vite
yarn why sharpnpm audit fix --forceはメジャーバージョンを上げることがあるので、変更の内容を見てから使います。直接入れていないパッケージは、package.jsonのoverrides(pnpmはpnpm.overridesなど、Yarnはresolutions)で版を固定できます。[13]
04自分の環境が対象かを確かめる手順
- 本番で動いている版を見る:手元の
node -vではなく、本番のコンテナやサーバーで確かめます。node:24のようなタグは、イメージを作り直すまで古い版のままです。docker run --rm <イメージ> node -vで実際の番号を見ます。 - Node.jsの組み込み部品は本体の番号で判断する:Brotliの修正版でも
process.versions.brotliの表示は変わりません。[2]BunやDenoなど別の実行環境は、それぞれの告知を確かめます。 - lockファイルで正確な版を見る:package.jsonの
^付きの範囲では、入っている版が分かりません。lockファイルとnpm lsで確かめ、CIではnpm ciを使ってlockファイルどおりに入れます。 - Next.jsは
nextの版で判断する:App Routerはnextに組み込まれたReactを使うため、package.jsonのreactを上げても直りません。React Server Componentsの件でも、React公式はNext.jsの利用者にnextの更新を案内しています。[5] - 開発用の依存も見る:ViteやMetroの件は開発サーバーの問題です。
--omit=devの結果だけで判断せず、開発サーバーをネットワークへ公開していないかも確かめます。[7][8] - 不正な版を入れていたら、更新では終わらない:TanStackの件では、該当の版をインストールした環境は侵害されたものとして扱い、資格情報を取り替え、クラウドの監査ログを確かめるよう案内されています。lockファイルに該当の版が残っていないかも見ます。[6]
05JavaScript / TypeScriptの解説記事
Vite 6.4.4の脆弱性の確認方法、開発サーバーから.envを読み取られるおそれと6.4.5への更新(CVE-2026-118662)
Vite 6.4.4の脆弱性CVE-2026-118662は、ネットワークに公開した開発サーバーで、拒否したはずの.envなどを返すおそれがあります。10月6日の更新で6.4.4にした環境が対象になった理由、初期設定で条件がそろう点、Astro 5など間接の依存の確かめ方、6.4.5への上げ方を説明します。
better-authの脆弱性、OAuthのstateをMagic Linkとして使われ他人としてサインインされるおそれ(CVE-2026-114607、修正は1.7.7)
認証ライブラリbetter-authの脆弱性CVE-2026-114607は、Magic LinkとOAuthを併用する構成で、OAuthのstateをMagic Linkのトークンに流用され、他人としてサインインされるおそれがあります。対象かを設定で見分ける方法、1.7.7への更新と段取りを説明します。
よくある質問
npm auditが0件なら、Node.js本体も大丈夫ですか?
npm auditはパッケージだけを調べ、Node.js本体は対象にしません。Brotliの件のように本体の中の部品が原因のときは、本番で動いているNode.jsの番号を、修正版(22.23.4/24.22.1/26.12.1)と比べてください。
Next.jsを使っています。reactとnextのどちらを上げればよいですか?
nextを上げます。App Routerはnextに組み込まれたReactを使うので、reactの番号だけ上げても直りません。15系は15.5.28以上、16系は16.4.1以上に上げると、この表の件はまとめて直ります。
devDependenciesにある脆弱性は、後回しにしてよいですか?
本番に入らないものでも、開発サーバーをネットワークに公開していると対象になります。ViteとReact Native CLIの開発サーバーの件はKEVに載っています。社内のネットワークや共有の開発環境で開いていないかを確かめてから判断してください。
出典・参考資料
- 米CISA:Known Exploited Vulnerabilities Catalog(2026.10.30版)2026-10-30 / KEVへの追加日(CVE-2026-111497・CVE-2026-45321・CVE-2025-31125・CVE-2025-11953・CVE-2025-55182)
- Node.js:Wednesday, October 21, 2026 Security Releases2026-10-21 / Brotliの件の対象・修正版、サポート終了版の扱い
- Vercel:GHSA-2464-fhr4-w9xw(Image Optimization APIのRCE)2026-10-15 / 対象範囲、修正版15.5.28・16.4.1、sharp 0.35.5による回避、CVSS
- Vercel:GHSA-673q-mjm6-r5xr(use cache関数のRCE)2026-10-15 / 対象の条件、修正版16.4.1、回避策なし、CVSS
- React:Critical Security Vulnerability in React Server Components2025-12-03 / 対象パッケージと修正版、Next.jsの利用者の更新先(GHSA-fv66-9v8q-g76rと照合)
- TanStack:GHSA-g7cv-rxg3-hmpx2026-05-12 / 不正な版の範囲、インストール時の動作、資格情報の取り替えと監査ログの確認
- Vite:GHSA-4r4m-qw57-chr82025-04-01 / 開発サーバーを公開している場合の条件と修正版
- React Native Community:GHSA-399j-vxmf-hjvr2025-11-04 / Metroの開発サーバーの待ち受けと修正版
- Node.js:Node.js Releases2026-11-01確認 / 各系列の状態、本番はLTSを使う案内、Node.js 27からの公開の周期
- Node.js Release:schedule.json2026-11-01確認 / 各系列のLTS・保守・サポート終了の日付
- npm Docs:npm audit2026-11-01確認 / 監査の仕組み、lockファイルの要件、--omit・--audit-level・signatures
- pnpm:pnpm audit2026-11-01確認 / --prodなどのオプションとGHSAの番号での表示
- npm Docs:package.json(overrides)2026-11-01確認 / 間接的な依存の版の固定
