Node.js 10月セキュリティリリース|Brotli RCEと10件の対応策

Node.jsプロジェクトは2026年10月21日、26.x・24.x・22.x向けのセキュリティリリースを公開しました。修正版はNode.js v22.23.4、v24.22.1、v26.12.1です。

今回の告知は10件の脆弱性を扱い、最高重大度はHighでした。Brotliデコーダの範囲外書き込み、DNS名の処理、TLS証明書のホスト名検証など、ネットワークから受け取ったデータを処理する機能が含まれます。

企業の開発チームは、単にNode.jsのバージョンを上げるだけでなく、圧縮データの伸長、名前解決、TLS接続、ZIPスキャン、起動スナップショットの利用箇所を洗い出す必要があります。まずHigh 4件に関係する経路を特定し、その後にMedium・Lowの影響範囲を回帰テストへ広げます。

※本記事は2026年10月26日時点の情報です。

Node.js 10月セキュリティリリースの修正版v22.23.4、v24.22.1、v26.12.1と、10件の内訳(High 4件、Medium 3件、Low 3件)
まずHigh 4件に関係する経路を特定する

Node.js 10月セキュリティリリース|22.23.4・24.22.1・26.12.1を公開

Node.jsプロジェクトは2026年10月21日、26.x・24.x・22.xの各リリースラインに修正版を提供しました。v26.12.1はCurrent、v24.22.1とv22.23.4はLTSとして公式のリリース一覧に掲載されています。

告知には、c-ares、ca-cert、Undiciの更新が26.x・24.x・22.x向けに、OpenSSLの更新が24.x・22.x向けに、SQLiteの更新が22.x向けに含まれます。アプリケーションの直接依存だけでなく、Node.jsに同梱される依存関係も更新対象です。

本番環境で使っているバージョンを確認するときは、コンテナのベースイメージ、ホスト上のNode.js、CIの実行環境を分けて記録します。開発端末だけを更新しても、デプロイ先やビルド環境に古いランタイムが残れば対応は完了しません。

ポイント

修正版はv22.23.4、v24.22.1、v26.12.1です。実行環境だけでなく、CI、コンテナ、ホストに残るNode.jsの版を同じ台帳で管理します。

10件の内訳|High 4件はDNS・TLS・Brotliに集中

今回の10件は、High 4件、Medium 3件、Low 3件に分かれます。最初に見るべきHigh 4件は、名前解決の入力検証、TLSのホスト名検証、Brotliデコーダのメモリ処理に関係します。

重大度CVE主な領域影響するリリースライン
HighCVE-2026-105482DNS名のNULバイト切り詰め26.x・24.x・22.x
HighCVE-2026-105483全角数字のIPでTLS検証を迂回26.x・24.x
HighCVE-2026-106069非正規IPv4で接続先と証明書がずれる26.x・24.x・22.x
HighCVE-2026-111497Brotliデコーダの範囲外書き込み26.x・24.x・22.x
MediumCVE-2026-105481、CVE-2026-106072、CVE-2026-106074HTTP Agent、TLS、乱数キャッシュ26.x・24.x・22.x
LowCVE-2026-106070、CVE-2026-106071ZipFile、Permission Model26.x
LowCVE-2026-106073Permission Model26.x・24.x・22.x

Highだけを見ても、すべてのサービスが同じ影響を受けるわけではありません。Brotliを伸長する処理、外部ホスト名を許可リストと照合してから解決する処理、IPアドレスへTLS接続する処理があるかを、アプリケーション単位で分けて調べます。

Node.jsのセキュリティリリースは、アプリケーションの機能だけでなく同梱依存関係も更新します。AI学習基盤など外部データを受け取るシステムの脆弱性対応を考えるときは、RayフレームワークのRCE脆弱性で扱われた入力経路の棚卸しも参考になります。

ポイント

10件を重大度だけで一括処理せず、CVEと機能の対応を自社サービスへ割り当てます。特に外部入力を処理するHigh 4件を更新計画の先頭に置きます。

Brotli RCEの仕組み|圧縮データを受け取るサービスは伸長経路を確認

CVE-2026-111497は、Node.jsに組み込まれたBrotliデコーダの範囲外書き込みです。不正なブロック切り替えを、処理を止める恒久的なフォーマットエラーではなく、追加の入力が必要な状態として扱ったため、ストリーミングデコーダが8バイトの内部バッファへ入力を追加し続けます。

攻撃者が細工したBrotliデータを、アプリケーションがnode:zlibで伸長すると、プロセスメモリの破壊が起きます。公式の告知は、クラッシュやプロセスメモリの開示、リモートコード実行につながる可能性を示しています。

この脆弱性を報告したのはOpenAI Codex SecurityのKhai Tran氏とSylvie Mayer氏です。報告者の肩書きに注目するだけでは、対策の優先順位は決まりません。Brotliを受け付けるHTTP配信、APIゲートウェイ、ファイルアップロード、キャッシュ処理を洗い出し、外部入力から伸長処理までの経路を一本の図にします。

細工したBrotli圧縮データが外部入力からnode:zlibの伸長処理に入り、8バイトの内部バッファへの範囲外書き込みを経て、クラッシュ、プロセスメモリの開示、リモートコード実行につながり得る流れ
外部データがnode:zlibへ到達する経路で影響を確認する

更新後のテストでは、正常な圧縮レスポンスだけでなく、破損したストリーム、不正なブロック切り替え、途中で切れた入力を扱います。期待する結果を「エラーとして拒否する」「プロセスを継続する」など機能ごとに定義し、ログとアラートで異常な伸長失敗を追えるようにします。

圧縮データを扱うサービスでは、実行ファイルの更新をリリース作業に含めるだけでは不十分です。入力サイズの上限、タイムアウト、ワーカープロセスの分離、更新前後の監視を組み合わせると、同じ種類の入力異常を早く見つけられます。

ポイント

Brotliを使っているかどうかは依存関係の名前だけで判断せず、外部データがnode:zlibへ到達する経路で確認します。破損ストリームを拒否するテストと、伸長失敗を検知する監視を更新に含めます。

DNS・TLSの検証不備|文字列の正規化と接続先の一致を検査

CVE-2026-105482は、NULバイトを含むホスト名をdns.resolve*()やdns.reverse()が途中で切り詰める問題です。許可リストでattacker.example\0.trusted.exampleを検証した後に名前解決すると、c-aresへ渡った名前が異なり、別のレコードを取得する可能性があります。

CVE-2026-105483とCVE-2026-106069はTLSのホスト名検証に関係します。全角数字を含むIP表記ではIPアドレスとして扱われず、DNS名やCommon Nameと照合されることがありました。先頭ゼロを含む0127.0.0.1では、URLの正規化とOSの名前解決で別のIPとして解釈される差が生じます。

MediumのCVE-2026-106072も、非正規IPv4表記でDNS SANがIPエンドポイントを認証できる問題です。通信先を文字列で比較しているサービスは、入力を正規化した後の値と、実際に接続した宛先、証明書のSANの種類がそろっているかをテストします。

NULバイトを含むホスト名や0127.0.0.1のような非正規IPv4表記が、許可リスト・DNS解決・TLS証明書検証で別の値として扱われるリスク
許可リスト・名前解決・証明書検証で同じ値を使う
  • 名前解決:許可リストで検証した文字列とdns.resolve*()へ渡す文字列を同じ値にする。
  • IP表記:全角数字、先頭ゼロ、16進表記、整数表記、短縮表記を接続テストに含める。
  • 証明書:IP接続ではDNS SANとIP Address SANを混同せず、接続先と検証対象を記録する。

外部の連携先を登録できるサービスでは、入力の正規化を一度だけ行い、その値をDNS・TLS・監査ログで共有します。公開範囲や認証の点検は、MCPサーバーのセキュリティ実態で扱われた公開経路の棚卸しとも接点があります。

ポイント

DNSの許可リスト、実際の名前解決、TLS証明書検証を別々の処理として放置しないことが対策の要点です。正規化後の値と接続先を同じテストで照合します。

Medium・Lowも運用対象|HTTP、乱数、ZIP、Permission Modelを点検

Mediumには、HTTP Agentのkeep-alive接続を再利用した際に、リクエスト前に書かれたレスポンスを新しいリクエストの応答として受け取る問題が含まれます。イベントループがI/Oを確認する前にデータが到着していると、予期しないデータを見逃す経路がありました。

同じくMediumのCVE-2026-106074は、起動スナップショットやSEAを作るときに、crypto.randomUUID()、crypto.randomUUIDv7()、crypto.randomInt()のエントロピーキャッシュが保存される問題です。スナップショットから起動したプロセス間で、最大127個のUUIDや約1,000個のrandomInt()の値が繰り返される可能性があります。

Lowの3件は、ZIPヘッダー検証に失敗した後のzlib.ZipFile、ワイルドカードを使うPermission Model、fs.realpathSync()の権限チェックに関係します。Lowという分類だけで対象外にせず、スキャナー、単一実行ファイル、権限制限付きプロセスで使っているかを確認します。

修正版の適用後は、機能ごとに次の順序でテストします。まず通信と圧縮の外部入力、次に生成する識別子とファイル解析、最後に権限制限下のパス操作です。AI生成コードを含む変更のレビュー負荷を管理する場合は、AI生成コード時代のコードレビューの観点も役立ちます。

ポイント

Medium・Lowの7件は、HTTP Agent、乱数、ZIP、Permission Modelを使うサービスで優先度が変わります。重大度と利用機能を掛け合わせ、更新後の回帰テストを決めます。

よくある質問

Q. 今回のNode.jsセキュリティリリースで更新すべきバージョンは?

修正版はNode.js v22.23.4、v24.22.1、v26.12.1です。自社のリリースラインに対応する版へ更新し、CI・コンテナ・本番環境の実行版もそろえます。

Q. BrotliのCVE-2026-111497はどのような脆弱性?

不正なBrotliデータでデコーダの内部バッファへの範囲外書き込みが起き、メモリ破壊、プロセスメモリの開示、クラッシュ、リモートコード実行につながる可能性がある脆弱性です。

Q. DNSとTLSの脆弱性はどの処理を確認すべき?

dns.resolve*()などの名前解決、許可リスト、非正規IPv4表記の処理、tls.checkServerIdentity()による証明書検証を、実際の接続先と照合してテストします。

Q. Node.js 22.x・24.x・26.xのどれを選ぶべき?

公式のリリース一覧では、v26.12.1がCurrent、v24.22.1とv22.23.4がLTSです。本番アプリケーションは、Node.jsが案内するActive LTSまたはMaintenance LTSを基本に選びます。

まとめ

Node.jsの2026年10月セキュリティリリースは、v22.23.4、v24.22.1、v26.12.1で10件を修正しました。High 4件には、DNS名の切り詰め、非正規IPv4表記によるTLS検証のずれ、Brotliデコーダの範囲外書き込みが含まれます。

対応の出発点は、自社サービスが外部データをどこで受け取っているかを把握することです。修正版へ更新し、Brotli伸長、名前解決、TLS、HTTP Agent、乱数、ZIP、Permission Modelを使う箇所だけを選んで回帰テストを実施すると、変更の影響を追いやすくなります。

ポイント

今回の更新は、ランタイムの版を変える作業と、外部入力を処理する境界をテストする作業に分けます。High 4件から着手し、Medium・Lowは利用機能に応じて同じ変更管理へ組み込みます。

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。