2026年10月21日、PHPの重大な脆弱性に修正版が出たのと同じ日に、「Node.js」も脆弱性10件を直した修正版を公開しました。PHPの騒ぎで初めてサーバーの話に触れた人は、「Node.jsって何?」「PHPとどう違うの?」「こっちも急いで何かしないといけないの?」と思ったはずです。
この記事では、Node.jsとは何か、PHPとどう違い、どこで使われているのかを説明したうえで、2026年10月の脆弱性で何が直ったのか、PHP2Shellと比べてどれくらい危ないのかを整理します。最後に、使うだけの人、自分のPCにNode.jsを入れた人、サイトを制作会社に頼んでいる人、運用の担当者のそれぞれがすることをまとめます。内容は2026年10月時点で、Node.jsの公式発表を確認したものです。
Node.jsとは?ブラウザの外でJavaScriptを動かす「実行環境」
Node.jsとは、ブラウザの外、つまりサーバーやPCの上でJavaScriptを動かすための実行環境(ランタイム)です。 プログラミング言語そのものではなく、JavaScriptで書いたプログラムを動かす「土台」にあたります。
Node.jsの公式サイトは、Node.jsを「クロスプラットフォームに対応したフリーでオープンソースのJavaScript実行環境」と説明し、サーバー、Webアプリ、コマンドラインのツール、スクリプトを作る環境だとしています。

JavaScriptは、もともとブラウザの中だけで動く言語でした。ボタンを押すとメニューが開く、入力欄の文字数を数える、といったページの動きを担当します。Node.jsは、Google Chromeの中でJavaScriptを動かしている部品「V8」を取り出し、ファイルの読み書きや通信の機能を足して、ブラウザの外でもJavaScriptを動かせるようにしました。
Node.jsは2009年にライアン・ダールが作り、同じ年のJSConf(JavaScriptの国際会議)の欧州大会で発表しました。開発は、Linux Foundationのもとにある非営利団体のOpenJS財団が支えるオープンソースのプロジェクトとして続いています。
変わりやすい数値と、2026年10月の脆弱性の要点を1つの表にまとめます。
| 項目 | 内容 |
|---|---|
| Webサーバーが分かるサイトのうち、Node.jsを使う割合 | 7.4% |
| アクセスの多い上位1万サイトでの割合 | 21.8% |
| アクセスの多い上位1,000サイトでの割合 | 25.2% |
| 公式のサポートが続いている系列 | 22(2027年4月30日まで)、24(2028年4月30日まで)、26(2029年4月30日まで) |
| サポートが終わった主な系列 | 20(2026年4月30日に終了)、25(2026年6月1日に終了) |
| 2026年10月の脆弱性 | 10件(深刻度High 4件、Medium 3件、Low 3件) |
| 修正版 | 22.23.4、24.22.1、26.12.1 |
2026年10月24日時点で確認した数値です。
私がこの表で目を引かれるのは、サイト全体では1割に満たないのに、アクセスの多いサイトほど割合が上がり、上位1,000サイトでは4分の1に達する点です。小さなブログより、大きなサービスで選ばれている土台だと分かります。
Node.jsとPHPは何が違う?「言語」と「実行環境」
PHPは「言語」で、Node.jsはJavaScriptという言語を動かす「実行環境」です。 どちらもサーバーの上で動き、見る人のブラウザにページやデータを返す役目は同じですが、成り立ちと動き方が違います。

| 比べる点 | Node.js | PHP |
|---|---|---|
| 正体 | JavaScriptを動かす実行環境 | サーバーで動くプログラミング言語 |
| 書く言語 | JavaScript(ブラウザ側と同じ言語) | PHP |
| 動き方 | 1つのプロセスが、待ち時間に別の処理を進めて多くの接続をさばく(非同期) | Webサーバーと組み合わせ、アクセスごとに処理してページを組み立てる |
| 代表的な使い道 | Next.js・Express などで作るサイトやAPI、サイトを作る道具、PCアプリ、開発ツール | WordPress、EC-CUBE などのCMSやネットショップ |
| 置き場所の傾向 | 自社や制作会社が版を決めて動かすことが多い | レンタルサーバーの会社が版を用意することが多い |
| 普及の目安 | Webサーバーが分かるサイトの7.4% | サーバー側の言語が分かるサイトの約7割 |
2026年10月時点の内容です。普及の目安は数え方の分け方が違うため、そのまま比べることはできません。
Node.jsの公式サイトは、Node.jsを「非同期でイベント駆動のJavaScript実行環境」と説明しています。ファイルの読み込みや通信の返事を待つあいだ手を止めず、別の仕事を進めるので、チャットやオンラインゲームのように同時に多くの人がつながるサービスに向きます。もう1つの強みは、ブラウザ側とサーバー側を同じJavaScriptで書けることです。
PHPについては、PHPとは何か、2026年10月の脆弱性「PHP2Shell」で何が起きたのかを別の記事で詳しく説明しています。私は、2つの違いでいちばん大事なのは最後の「置き場所」だと見ています。PHPはレンタルサーバーの会社が直してくれることが多いのに対し、Node.jsは自社か制作会社が版を決めて動かしていることが多く、「誰も更新していない」が起きやすいからです。
Node.jsはどこで使われている?気づかない4つの場所
Node.jsは、サイトを配信するサーバーだけでなく、サイトを作る道具、PCアプリの中、開発ツールの中でも動いています。 どこで動いているかによって、脆弱性の影響の有無と、直すのが誰かが変わります。

- サイトやAPIを配信するサーバー: Next.js、Express、Nuxtといった仕組みで作ったサイトや、スマホアプリの裏側のAPIです。LinkedIn、Netflix、PayPalなどがNode.jsを採用した例として知られています。直すのは自社か制作会社、クラウドの会社です
- サイトを作る道具(ビルド): 公開用のHTMLを作るときだけNode.jsを使い、公開中のサイトはできあがったファイルを配るだけ、という使い方です。公開中のサイトはNode.jsの脆弱性の影響を受けませんが、作る側の環境は更新が要ります
- PCアプリの中: Electronという仕組みで作られたPCアプリは、中にChromiumとNode.jsを持っています。Slack、Discord、VS Code、Notion などがElectron製のアプリとして公式サイトに並んでいます。直すのはアプリの会社で、利用者はアプリを更新するだけです
- 開発ツール: プログラマーが自分のPCに入れて使うツールです。AIにプログラムを書かせるツールの拡張機能(MCPサーバー)にも、手元のNode.jsで動くものがあります。直すのは、入れた本人です
Node.jsとは何かを、動画で短く確かめたい人には、初心者向けの解説動画が分かりやすいです。「プログラミング言語やフレームワークと間違われやすいが、実行環境である」という点を、問い合わせフォームのたとえで説明しています。

動画では、実行環境を「プログラムを動かすのに必要な仕組みや道具」と説明しています。問い合わせフォームの送信ボタンを押すと、サーバー側のプログラムが内容を受け取り、データベースに保存したり結果を返したりします。この「サーバー側の処理」をJavaScriptで書けるようにするのがNode.jsです。強みとして、多くの仕事を切り替えながら効率よく進められること、表と裏を同じJavaScriptで書けること、部品(パッケージ)がとても多いことの3つを挙げています。
一方で、WordPressで作ったサイトはPHPで動いていて、表示そのものにNode.jsは使われていないことがほとんどです。 ただし、テーマの開発や画像の最適化などで、制作会社がNode.jsを使っている場合はあります。私は、4つの場所のうち2と3は「知らないうちに使っている」ことが多いので、まず自分がどこに当てはまるかを知るだけで、慌てる理由の半分は消えると考えています。
Node.jsについて知っておきたい、変わらない3つのこと
Node.jsの脆弱性のニュースを読み解くには、3つの原則を押さえておけば十分です。土台の穴はアプリでは防げないこと、動いている場所で誰が直すかが変わること、サポートの終わった版には修正が来ないことです。
原則1: 土台の穴は、上に載るアプリをいくら直しても防げない
Next.jsやExpress、自分で書いたプログラムは、Node.jsという土台の上で動いています。アプリを更新するとアプリの穴はふさがりますが、Node.jsそのものの穴はふさがりません。 2026年10月14日には、Node.jsの上で動くNext.jsにも、ログインなしで外からプログラムを動かされるおそれのある深刻度Criticalの脆弱性の修正版(16.4.1、15.5.28)が出ていました。Next.jsで作ったサイトは、Next.jsとNode.jsの両方の更新が必要です。
原則2: どこで動いているかで、影響と「直す人」が変わる
同じNode.jsでも、外からのアクセスを受けるサーバーで動いているのか、手元のファイルを変換するだけの道具なのかで、危なさが違います。さらに、直すのが自社なのか、制作会社なのか、クラウドの会社なのか、アプリの会社なのかも変わります。「Node.jsに穴」と聞いたら、まず自分のNode.jsがどこにあるかを確かめます。
原則3: サポートが終わった版には修正が来ない
Node.jsは、系列ごとに公式のサポート期限が決まっています。公式は、サポートが終わった版は「セキュリティリリースのたびに必ず影響を受ける」としています。2026年10月の修正も、22・24・26の系列にしか出ていません。Node.js 27からは、すべての系列が30か月の長期サポート(LTS)を受ける形に変わりますが、期限があることは変わりません。私は、版の更新を「何か起きたら考えること」ではなく、契約や運用の予定に最初から入れておくことが、Node.jsでもPHPでもいちばんの備えだと考えています。
2026年10月21日、Node.jsの脆弱性10件で何が直ったのか
Node.jsの開発チームは2026年10月21日、脆弱性10件を直した修正版 22.23.4、24.22.1、26.12.1 を公開しました。 いちばん重いものの深刻度は「High」で、4件がHighです。公式は回避策を示しておらず、直す方法は修正版への更新だけです。

10件をまとめると、次のとおりです。
| 番号 | 深刻度 | 何が起きるか | 対象の系列 |
|---|---|---|---|
| CVE-2026-111497 | High | 同梱の圧縮ライブラリ「Brotli」で、細工した圧縮データを展開するとメモリの範囲外に書き込み、遠隔からプログラムを動かされるおそれ | 26・24・22 |
| CVE-2026-105483 | High | IPアドレスを全角数字(127.0.0.1 など)で書くと、通信相手の証明書の確認をすり抜けられる | 26・24 |
| CVE-2026-106069 | High | 先頭に0を付けたIPアドレス(0127.0.0.1 など)で、別のIPアドレス向けの証明書が通ってしまう | 26・24・22 |
| CVE-2026-105482 | High | 名前解決(dns.resolve)で、NUL文字を含む名前が途中で切られ、確かめた名前と違う相手を調べてしまう | 26・24・22 |
| CVE-2026-105481 | Medium | 接続を使い回すときに、リクエストを送る前に届いていた応答を、正しい応答として扱ってしまう | 26・24・22 |
| CVE-2026-106072 | Medium | 標準的でない書き方のIPv4アドレスで、ドメイン名用の証明書がIPアドレスの相手の確認に通ってしまう | 26・24・22 |
| CVE-2026-106074 | Medium | 乱数の一部が、起動を速くするスナップショットや単一の実行ファイルに保存され、どのプロセスでも同じ値が出る | 26・24・22 |
| CVE-2026-106073 | Low | ファイルへのアクセスを制限する仕組み(Permission Model)を、fs.realpathSync ですり抜けられる | 26・24・22 |
| CVE-2026-106071 | Low | 同じ仕組みで、ワイルドカードの指定が意図より広くファイルを許可してしまう | 26 |
| CVE-2026-106070 | Low | ZIPの見出しの確認に失敗したあとも、攻撃者が用意したデータを返してしまう | 26 |
2026年10月時点の公式発表の内容です。あわせて、通信の部品(c-ares、Undici)や OpenSSL、SQLite も更新され、鍵が侵害されたeMudhraの中間認証局への信頼も外されました。
10件に共通するのは、「同じものを同じと判断できるか」のずれです。人間には同じに見えるIPアドレスの書き方を、確認する側と実際に通信する側が別のものとして扱う。DNSでは、確かめた名前と実際に調べる名前がずれる。いくつかは、以前の修正で直しきれていなかった部分の修正です。
この「境界のずれ」を、ずんだもんと四国めたんの掛け合いで説明している動画があります。TLS・DNS・HTTPの問題が、なぜ危ないのかがつかめます。

動画では、TLSの問題を「暗号が破られたのではなく、鍵を渡す相手を間違える問題」と説明しています。表記の揺れがある住所を、文字を比べる側とネットワークで解釈する側で別々に判断すると、本来認めるべきでない相手を正しい相手として扱ってしまう、という整理です。また、npm update ではNode.js本体は更新されないので、手元・Dockerのイメージ・本番の環境のそれぞれで版を確かめるよう呼びかけています。私も、この点がいちばん誤解されやすいと感じます。
いちばん重い「Brotli」の穴で何が起こる?
Brotliの穴(CVE-2026-111497)は、攻撃者が用意した圧縮データをNode.jsのアプリが展開すると、プロセスのメモリを壊され、停止、メモリの中身の漏えい、遠隔からのプログラムの実行につながるおそれがあるものです。 10件の中で、公式の題名に「遠隔からのコード実行」と書かれているのはこの1件です。

Brotliは、Googleが開発した圧縮の形式で、Webのページやデータを小さくして送るのに広く使われています。Node.jsはBrotliの展開の仕組みを中に持っています。不正なデータを受け取ったとき、本来は「壊れたデータ」として止めるべきところを「まだ続きが足りない」と扱ってしまい、小さな入れ物にデータを書き足し続けて、入れ物の外まで書き込んでしまいました。原因はNode.jsではなくBrotli本体にあり、Brotli側も同じ日に修正を出しています。
ただし、どのNode.jsでも同じように危ないわけではありません。当たるかどうかは、「信頼できない相手から届いた圧縮データを展開するか」で決まります。
| 使い方 | 危なさの目安 |
|---|---|
| Webサーバーが、送られてきたBrotli圧縮のリクエストを展開する | 高い(ログインなしで外から届きうる) |
| サーバーが、利用者の指定したURLや外部のAPIからデータを取りに行く | 高い(fetch() は相手が圧縮して返せば自動で展開する) |
| インターネットからファイルをダウンロードするツール | 中くらい(接続先がなりすまされた場合) |
| ページやAPIの応答を圧縮して送るだけのサーバー | 低い(圧縮して送る側は対象外) |
| 手元のファイルだけを扱うビルドや変換の道具 | 低い(外のBrotliデータを読まない限り) |
2026年10月時点の内容です。
深刻度の受け止め方は、情報によって分かれています。公式は題名で遠隔からのコード実行を挙げていますが、脆弱性の情報をまとめるサービスの中には、点数は高いものの「悪用されにくい」と見るところもあります。悪用の状況については、公式の発表に悪用の記載はなく、2026年10月22日時点で攻撃コードの公開や実際の悪用の報告は見当たりません。
私は、「条件付きだから大丈夫」とは考えません。条件に当てはまるかどうかは、外から見ても分からず、使っているライブラリの奥で展開している場合もあるからです。判断に迷ったら、修正版に上げてしまうのがいちばん手間が少ない対策です。
PHP2Shellと比べてどれくらい危ない?両方使うならPHPが先
結論から言うと、PHP2Shellのほうが緊急度は高く、両方を使っているならPHPから先に直します。 ただし、Node.jsを「来週でいい」と後回しにしてよいわけではありません。

| 比べる点 | PHP2Shell(PHP) | 2026年10月のNode.jsの脆弱性 |
|---|---|---|
| 件数 | 2件 | 10件 |
| いちばん重い深刻度 | 緊急(CVSS 9.2) | High |
| ログインなしで外から狙えるか | 狙える。アプリのコードが動く前に攻撃が成立する構成もある | Brotliは、信頼できない圧縮データを展開する場合に限られる |
| 対象の広さ | Webのアクセスを受けるPHPのほぼすべて | 使い方によって大きく違う |
| 公式の回避策 | 一部の攻撃経路をふさぐ設定はある(完全な対策は更新だけ) | なし(更新だけ) |
| 社会の動き | 総理がXで対応を呼びかけ、多くのサービスが一時停止 | 個別の呼びかけやサービスの停止は起きていない |
2026年10月時点の内容です。
PHPとNode.jsの両方を取り上げ、企業がその日に何を確かめればいいかを、セキュリティ企業の社長が話している動画があります。専門用語を避けた説明なので、サイトを外に頼んでいる人に向いています。

動画では、PHPやNode.jsを車の部品にたとえています。メーカーや車種が違っても同じ部品を使うことがあり、その部品に欠陥が見つかれば、どの車もリコールの対象になる、という説明です。緊急度については「ざっくりPHPのほうが高い」としつつ、「PHPは今日、Node.jsは来週と分けられるものではなく、圧縮データを展開するサービスを使っている企業はかなり緊急の対応が要る」と話しています。私もこの順番の付け方に賛成です。
同じ日に2つの土台へ修正が出たことで、私は「Webの土台は1つではない」ことがはっきり見えたと感じています。PHPだけを確かめて安心していた会社が、Node.jsで動く別のサイトを見落とすことは十分ありえます。
自分は何をすればいい?立場ごとの確認
サイトやアプリを使うだけの人がNode.jsのためにすることは、アプリの更新を溜めないことくらいです。 自分のPCにNode.jsを入れた人、サイトを頼んでいる人、運用の担当者は、版の確認と更新が必要です。

サイトやアプリを使うだけの人
- スマホやPCで特別な操作をする必要はありません。 サイトを見るだけなら、手元にNode.jsは要りません
- PCアプリの更新は溜めずに当てます。 Electronで作られたアプリは中にNode.jsを持っているので、アプリの会社が直したら、アプリの更新で中身が入れ替わります
- 「Node.jsの更新が必要です」とうたうメールやSMSのリンクは開きません。 一般の人にNode.jsの更新を求める正規の連絡は、まずありません。Node.jsを入れるときは、公式サイト(nodejs.org)からだけにします
自分のPCにNode.jsを入れた人
- ターミナル(コマンドプロンプト)で
node -vを実行し、版を確かめる。「見つからない」と出れば、Node.jsは入っていない - 22系なら22.23.4以上、24系なら24.22.1以上、26系なら26.12.1以上かを確かめる
- 古ければ、入れたときと同じ方法(公式のインストーラー、Homebrew、nvm など)で修正版に更新する。20系や25系なら、22系以上に移る
AIにプログラムを書かせるツールを使うために、Node.jsを入れた人も多いと思います。たとえばClaude Codeは、公式が勧める入れ方ならNode.jsを使わずに動きます。ただし、npxで起動する拡張機能(MCPサーバー)は手元のNode.jsで動くので、Node.jsそのものの更新が必要です。npm update ではNode.js本体は更新されません。
サイトやシステムを制作会社に頼んでいる人
- 自社のサイトやシステムが、Node.jsを使っているかを制作会社に確かめる(サイトを配信するサーバーか、作るときだけかも)
- 動いているNode.jsの版と、修正版に上げた日を確かめる。Next.jsを使っていれば、Next.jsの版も確かめる
- 20系や25系で動いていれば、移行の予定を決める
- PHPも使っていれば、PHPを先に確かめる
「対応済みですか」とだけ聞くと、「はい」で終わってしまいがちです。「版はいくつで、いつ更新したか」と、数字と日付で答えてもらうと、行き違いが防げます。私は、更新の作業が保守の契約に入っているかも、この機会に確かめておくことをおすすめします。
運用・開発の担当者
- Node.jsが動いている場所を洗い出す(本番のサーバー、API、定期実行の処理、社内ツール、ビルドの環境、検証の環境)
- 修正版に更新し、Node.jsのプロセスを再起動する。Dockerは新しいイメージで作り直して入れ替える(
ltsのような名前の指定でも、作り直しは必要) - クラウドの管理型サービスは、再デプロイしてから
process.versionで実際の版を確かめる。細かい版を固定していれば書き換える - 単一の実行ファイル(SEA)やスナップショットで配っているものは、修正版で作り直す(乱数の問題は、作り直さないと消えない)
詳しい中身は、Node.jsの公式のセキュリティリリースにまとまっています。
AIが見つけた穴と、すぐ更新できる体制
BrotliのNode.jsの穴は、OpenAIのAIを使ったセキュリティ調査「Codex Security」の研究者が報告したものです。 同じ日に修正されたPHP2Shellも、OpenAIの取り組みの一環で、AIを使った調査から見つかっています。
Node.jsの公式発表は、Brotliの穴の報告者として「OpenAI Codex Security」の2人の名前を挙げています。PHP2Shellは、セキュリティ企業のCalifが、OpenAIの脆弱性を見つけて直す取り組みの一環で見つけました。性格の違う2つの土台で、同じ日に、AIを使った調査で見つかった穴が直されたことになります。
AIが穴を見つける速さが上がったことは、守る側にとって良い知らせでもあります。攻撃者より先に見つかれば、それだけ早く直せます。一方で、同じ道具は攻撃する側も使えます。修正版が出たあと、修正の中身から穴の場所を読み取り、まだ更新していないサイトを狙うまでの時間も短くなります。
私は、これからの備えは「穴が見つからないこと」を願うより、「見つかったらすぐ上げられること」に軸を移すべきだと考えています。サポート中の版に乗っていること、どこでNode.jsが動いているかが一覧になっていること、更新を誰がやるか決まっていること。この3つがそろっていれば、10件の修正が出ても、落ち着いて順番に片付けられます。
よくある質問
Node.jsとは簡単に言うと何ですか?JavaScriptとは何が違いますか?
Node.jsは、JavaScriptをサーバーやPCの上で動かすための実行環境です。JavaScriptは言語で、もともとブラウザの中で動いていました。Node.jsは、その言語をブラウザの外で動かすための土台です。
Node.jsとPHPはどちらが危ないのですか?両方使っているときはどちらを先に直せばいいですか?
2026年10月の脆弱性では、PHP2Shell(緊急)のほうがNode.js(最大でHigh)より緊急度が高いです。両方使っているならPHPを先に直します。ただし、Node.jsも外から届く圧縮データを展開する使い方なら急ぎが必要なので、続けてすぐに更新してください。
Node.jsの脆弱性で、自分のスマホやPCに影響はありますか?一般の人がすることはありますか?
サイトを見るだけなら影響はありません。Node.jsはサーバーや開発ツールで動くものです。PCアプリの中にNode.jsを持つものもあるので、アプリの更新は溜めずに当ててください。Node.jsの更新を求めるメールやSMSのリンクは開かないでください。
自分のPCに入っているNode.jsのバージョンはどうやって確認して、更新すればいいですか?
ターミナルで node -v を実行すると版が表示されます。2026年10月の脆弱性では、22.23.4、24.22.1、26.12.1以上が修正版です。古ければ、入れたときと同じ方法(公式のインストーラー、Homebrew、nvm など)で更新します。
Next.jsやExpressを更新すれば、Node.jsの脆弱性は直りますか?
直りません。Next.jsやExpressはNode.jsの上で動くもので、Node.jsそのものは別に更新する必要があります。npm update でもNode.js本体は更新されません。Next.jsにも別の脆弱性の修正が出ているので、両方を更新してください。
Node.jsという土台を自分ごとにするために
最後に、要点を振り返ります。
- Node.jsは、JavaScriptをサーバーやPCで動かす実行環境で、言語であるPHPとは立ち位置が違う
- サイトの配信だけでなく、サイトを作る道具、PCアプリの中、開発ツールでも動いていて、場所によって直す人が変わる
- 2026年10月21日に脆弱性10件が直り、いちばん重いのはBrotliの穴(High)。修正版は22.23.4、24.22.1、26.12.1
- PHP2Shellより緊急度は低いが、両方使うならPHPを先に、Node.jsもすぐ後に直す
- 土台の穴は、Next.jsなどのアプリを更新しても直らない
自分のPCにNode.jsを入れた覚えがある人は、まずターミナルで node -v を打って、版を確かめてみてください。数秒でできる確認ですが、自分がどの土台の上で作業しているかを知るきっかけになります。


