KR — ZDNet Korea
「サーバーエコシステム全体を脅かす」…PHPに続きNode.jsでもセキュリティ脆弱性を発見
セキュリティ2分で読めます
韓国のセキュリティ会社Theoriが、サーバーで動くJavaScriptの実行環境Node.jsに深刻な弱点「Node2shell」を見つけたという話です。PHPで似た問題が見つかった直後の発見です。
何が起きたのか
Theoriは、Node.jsのBrotliというデータを元に戻す部分に弱点があると発表しました。Brotliは、Webで送る前にデータを小さくちぢめる方法です。Node.jsはこの弱点の危険度を「高」としています。攻撃者はログイン情報がなくても、特別に作ったBrotliデータを送るだけで使えます。サーバーを止めたり、メモリの一部を読み取ったり、攻撃者の命令を動かしてサーバーを乗っ取ったりできるおそれがあります。
主な数字と事実
- 弱点の番号はCVE-2026-111497、名前はNode2shellです。
- 影響を受けるのは、最新のセキュリティ修正が入っていないNode.js 22.x、24.x、26.xです。
- 修正済みの版は、22.23.4、24.22.1、26.12.1以降です。
- Node.js 20以前は公式のサポートが終わっています。利用者は、OSや提供会社に更新があるか確認する必要があります。
- Theoriは、サービスのURLを入れるだけで使える無料のオンライン確認ツール(nodejsguard.io)も公開しています。
Node.jsとは
Node.jsは、ブラウザの外でJavaScriptを動かすための仕組みです。Webサイトやクラウドサービスの裏側で広く使われています。今回の弱点は、開発者が書いたコードのミスではなく、Node.jsの版そのものに原因があります。Express 5のbody-parser、標準のfetch()、axios、got、node-fetchなどの人気ツールも、攻撃の入り口になるおそれがあります。
なぜ重要なのか
多くのWebサイトやアプリがNode.jsを使っているため、一つの弱点で多くのサーバーが危険になりえます。圧縮機能を使っていないチームでも、Webの仕組みがこのデータを自動で扱うため、影響を受けるおそれがあります。すぐに更新できない会社は、NginxなどのリバースプロキシでWebの入り口を守り、攻撃を防ぐ一時的な対策が必要です。
今後注目すべき点
- 企業がどれだけ早く修正済みのNode.jsを入れるか。
- Node2shellを使った攻撃が新たに報告されるかどうか。
- Node 20以前の利用者が、提供会社からセキュリティ更新を受けられるかどうか。
- Theoriの技術ブログで、すでに攻撃されていないかを調べる方法が詳しく公開されるかどうか。
用語解説
- Node.js
- ブラウザの外でJavaScriptを動かし、サーバーを作るための実行環境。
- Theori
- ソフトウェアの安全上の穴を調べる韓国のセキュリティ会社。
- Brotli
- データを小さくちぢめて、Webで速く送るための方法。
- CVE
- 世界共通の、セキュリティ上の弱点につける番号のこと。
- リバースプロキシ
- 外部からの通信を先に受けて、サーバーを守る中継役のソフトウェア。
- Nginx
- Webサーバーやリバースプロキシとして広く使われるソフトウェア。