2026年10月21日(水) セキュリティアップデート

Node.jsプロジェクト

セキュリティアップデートの提供

以下の問題に対する、26.x、24.x、22.xのNode.jsリリースラインのアップデートが利用可能です。

このセキュリティアップデートには、公開されている脆弱性に対処するための、以下の依存関係のアップデートが含まれています。

c-ares (26.x, 24.x, 22.x)
ca-cert (eMudhra Intermediate CAの脆弱性) (26.x, 24.x, 22.x)
OpenSSL (24.x, 22.x)
SQLite (22.x)
Undici (26.x, 24.x, 22.x)

dns.resolveでNUL文字を含む名前が切り捨てられる(CVE-2026-105482) - (重大)

Node.jsのDNS解決における脆弱性により、NULバイトを含むホスト名が、dns.resolve*()関数およびdns.reverse()によって、通知なしに切り捨てられる可能性があります。これは、dns.lookup()およびnet/tlsのホストオプションのみを対象としていたCVE-2026-48930の不完全な修正です。

名前がC文字列としてc-aresに渡されるため、attacker.example\0.trusted.exampleというクエリに対して、attacker.exampleが解決され、エラーなしでそのレコードが返されます。ホスト名を検証し(例えば、ドメインの許可リストに対して)、その後dns.resolve*()で解決する場合、検証した名前とは異なる名前のレコードに対して処理が行われる可能性があります。

この脆弱性は、Node.js 26.x、24.x、および22.xに影響を与えます。

この脆弱性を報告していただいたHasan Flayyih Abdullah氏、および修正していただいたjasnell氏に感謝いたします。

TLS証明書のホスト名検証における、IPアドレスが全角数字で記述されている場合の回避(CVE-2026-105483) - (重大)

Node.jsのTLSホスト名検証における脆弱性により、一致するIPアドレスのSANを持たない証明書が、ホストが非ASCII文字(全角数字など:127.0.0.1)で記述されている場合に、IPv4アドレスへの接続を認証できるようになる可能性があります。

tls.checkServerIdentity() は、IPアドレスとして認識されるべきホストを、正規のIPv4アドレスに変換・解決されたとしても、正しく認識せず、代わりに証明書のDNS名やCommon Nameと照合していました。その結果、DNS:127.0.0.1 や DNS:*.0.0.1 を含む証明書が、本来発行されたIPアドレスとは異なるIPエンドポイントに対して受け入れられる可能性がありました。これは、CVE-2026-48618 の修正後に導入された問題です。

この脆弱性は、Node.js 26.x および 24.x に影響を与えます。

この脆弱性について報告していただいた Hasan Flayyih Abdullah 氏、および修正していただいた jasnell 氏に感謝いたします。

TLS証明書のホスト名検証のバイパス:ホスト名が緩やかにIPアドレスに解決される場合(CVE-2026-106069) - (重大)

Node.jsのTLSホスト名検証の脆弱性により、クライアントが接続したIPアドレスとは異なるIPアドレスに対してサーバー証明書が検証される可能性があります。これは、先頭にゼロが付いた非標準のIPv4アドレス(例:0127.0.0.1)の場合に発生します。

tls.checkServerIdentity() は、WHATWGのURLルールに従ってホスト名を正規化しますが、先頭のゼロを8進数として解釈します(0127.0.0.1 は 87.0.0.1 に変換されます)。一方、接続はオペレーティングシステムのDNSリゾルバーを介して行われ、macOSなどの一部のプラットフォームではこれを10進数として解釈します(127.0.0.1)。その結果、接続されたアドレスのサーバーが、別のIPアドレスで発行された証明書を使用して認証される可能性があります。

この脆弱性は、Node.js 26.x、24.x、および 22.x に影響を与えます。

この脆弱性について報告していただいた anagnorisis2peripeteia 氏、および修正していただいた mcollina 氏に感謝いたします。

Node.js Brotli デコーダーのバッファオーバーライトにより、リモートコード実行が可能になる(CVE-2026-111497) - (重大)

Node.jsに同梱されているBrotliデコーダーの脆弱性により、不正な圧縮された入力データが、内部デコーダーバッファの末尾を超えて書き込まれる可能性があります。

不正なブロックスイッチが、恒久的なフォーマットエラーではなく、一時的な入力不足として報告されたため、ストリーミングデコーダは、8バイトの内部バッファに継続的に入力バイトを追加していました。攻撃者が、アプリケーションがnode:zlibを使用してデコードするBrotliデータを供給できる場合、プロセスメモリを破壊し、プロセスメモリの内容を漏洩させたり、リモートコードを実行させたりする可能性があります。

この脆弱性は、Node.jsのバージョン26.x、24.x、および22.xに影響を与えます。

この脆弱性を報告していただいたOpenAI Codex SecurityのKhai Tran氏とSylvie Mayer氏に感謝します。また、修正していただいたmcollina氏とaduh95氏に感謝します。

Keep-aliveソケットプロセスは、リクエストが送信される前に書き込まれた応答を処理します(CVE-2026-105481) - (中)。

Node.jsのHTTP Agentの接続再利用における脆弱性により、クライアントが、クライアントがリクエストを送信する前に送信された応答を有効なものとして受け入れる可能性があります。これは、CVE-2026-48931の不完全な修正です。

予期しないデータが到着した場合に、アイドル状態のKeep-aliveソケットを破棄する機能は、イベントループがI/Oをポーリングしている場合にのみ実行されます。ソケットが新しいリクエストに割り当てられる際に、未処理の応答がすでにソケットに到達しているものの、まだ読み込まれていない場合(例えば、イベントループが同期処理で忙しい場合)、その機能は実行されず、データは新しいリクエストに対する応答として解析されます。

この脆弱性は、Node.jsのバージョン26.x、24.x、および22.xに影響を与えます。

この脆弱性を報告していただいたHasan Flayyih Abdullah氏に感謝します。また、修正していただいたjasnell氏に感謝します。

非標準的なIPv4ホスト名に対する不適切な証明書検証により、DNS SANを使用してIPエンドポイントを認証できます(CVE-2026-106072) - (中)。

Node.jsのTLSホスト名検証における脆弱性により、DNS SANのみを持つ証明書が、クライアントが0177.0.0.1、0x7f.0.0.1、2130706433、または127.1などの非標準的なIPv4表記を使用して接続する場合に、IPエンドポイントを認証できるようになります。

tls.checkServerIdentity() は、これらのホストをIPアドレスとして分類しませんでしたが、それらを標準的な形式に変換し、その結果を証明書のDNS名と比較しました。DNS:127.0.0.1 を含み、IPアドレス:127.0.0.1 SAN を含まない証明書は受け入れられましたが、同じ証明書は 127.0.0.1 の場合、正しく拒否されます。この脆弱性を悪用するには、クライアントが信頼する認証局によって発行された、数値DNS SANを持つ証明書と、glibcのような、これらの表記を受け入れるプラットフォームのresolverが必要です。

この脆弱性は、Node.js 26.x、24.x、および22.xに影響を与えます。

この脆弱性を報告していただいた br41ny さん、および修正していただいた mcollina さんに感謝します。

crypto.randomUUID() および randomInt() のエントロピーキャッシュは、ユーザー領域の起動スナップショットおよびSEAsに保存されるため、すべてのプロセスが同じ値を繰り返します (CVE-2026-106074) - (中)。

Node.js crypto の脆弱性により、crypto.randomUUID()、crypto.randomUUIDv7()、および crypto.randomInt()で使用される内部エントロピーキャッシュが、ユーザー領域の起動スナップショット(--build-snapshot)および useSnapshot を使用して構築された単一実行可能アプリケーションに保存されます。

これらの関数、または URL.createObjectURL() のような、これらの関数に依存するAPIが、スナップショットの構築中に呼び出されると、そのスナップショットから開始されるすべてのプロセスが、キャッシュが再利用されるまで同じ値を返します。最大127個のUUIDと、約1,000個の randomInt() 値です。一意であることが期待される識別子は、プロセス間で衝突する可能性があり、あるプロセスによって生成された値は、別のプロセスを観察することで予測できる可能性があります。

この脆弱性は、Node.js 26.x、24.x、および22.xに影響を与えます。

この脆弱性を報告していただいた gesposito さん、および修正していただいた panva さんに感謝します。

Node.js ZipFile は、ZIPヘッダーの検証が失敗した場合、攻撃者が制御するプレフィックスバイトを返します (CVE-2026-106070) - (低)。

Node.js zlib.ZipFile API の脆弱性により、ローカルおよびセントラルヘッダーの検証が失敗した場合、要求されたエントリに属さないバイトが返される可能性があります。

アーカイブのローカルヘッダーが中央ディレクトリと一致しない場合、またはアーカイブを圧縮中に、zipEntry.modified を読み取ると、検証エラーが発生しますが、解析されたローカルヘッダーはコンテンツオフセットなしでキャッシュされたままになります。 その後、コンテンツを読み取ると、アーカイブを拒否する代わりに、攻撃者が制御するバイトがファイルの先頭から返され、CRC-32 の検証は攻撃者が中央ディレクトリの CRC を制御しているため、依然として成功します。 その結果、Node.js ベースのスキャナは、別の ZIP 実装が同じアーカイブから抽出するコンテンツとは異なるコンテンツを承認する可能性があります。

この脆弱性は、Node.js 26.x に影響を与えます。

この脆弱性を報告していただいた tostartimeash 氏、および修正していただいた mcollina 氏に感謝いたします。

パーミッションモデルにおけるファイルシステムへの過剰なアクセス許可(CVE-2026-106071) - (低)

Node.js のパーミッションモデルにおけるファイルシステム強制の脆弱性により、ワイルドカードの --allow-fs-read または --allow-fs-write ルールに一致しないパスへのアクセスが許可される可能性があります。

要求されたパスがワイルドカードの許可のプレフィックスよりも短い場合、ラジックスの検索は早期に比較を停止し、そのパスを一致するものとして扱います。 例えば、--allow-fs-read=/etc/passwd.* は、/etc/passwd の読み取りも許可します。 これは、ワイルドカードの許可がパーミッションツリーのルートに直接配置されている場合に発生します。 例えば、そのスコープに対する唯一の許可である場合などです。 これは、CVE-2026-58043 とは異なる根本原因です。

この脆弱性は、Node.js 26.x に影響を与えます。

この脆弱性を報告していただいた malikhamzaiqbal 氏、および修正していただいた jasnell 氏に感謝いたします。

fs.realpathSync を使用したパーミッションモデルの回避(CVE-2026-106073) - (低)

Node.js のパーミッションモデルにおけるファイルシステム強制の脆弱性により、fs.realpathSync() が必要な読み取り権限のチェックを行わない状態になっています。 これは、CVE-2026-21715 の不完全な修正であり、fs.realpathSync.native() のみに対処していました。

その結果、--permission オプションで制限された --allow-fs-read オプションを使用している場合でも、コードは fs.realpathSync() を使用して、許可されたディレクトリ以外のファイルが存在するかどうかを確認したり、シンボリックリンクのターゲットを解決したり、ファイルシステムのパスを列挙したりすることができます。

この脆弱性は、Node.js 26.x、24.x、および 22.x に影響を与えます。

この脆弱性を報告していただいた 0xoroot 様、および修正していただいた RafaelGSS 様に感謝いたします。

ダウンロードとリリース情報

Node.js v22.23.4
Node.js v24.22.1
Node.js v26.12.1

概要

Node.js プロジェクトは、セキュリティ上の脆弱性を修正するために、26.x、24.x、22.x の各バージョンについて、2026年10月21日(水)またはその直後に新しいバージョンをリリースする予定です。

このリリースで修正された最も深刻な問題は、重大度「HIGH(高)」です。

影響

26.x のバージョンで修正された最も深刻な問題は、重大度「HIGH(高)」です。
24.x のバージョンで修正された最も深刻な問題は、重大度「HIGH(高)」です。
22.x のバージョンで修正された最も深刻な問題は、重大度「HIGH(高)」です。

セキュリティリリースが発生した場合、サポート終了(End-of-Life)のバージョンは常に影響を受けることに注意してください。
システムのセキュリティを確保するために、リリーススケジュールに記載されている最新バージョンを使用してください。

リリース時期

リリースは、2026年10月21日(水)またはその直後に提供される予定です。

お問い合わせと今後のアップデート

現在の Node.js のセキュリティポリシーは、https://nodejs.org/en/security/ で確認できます。
Node.js の脆弱性を報告したい場合は、https://github.com/nodejs/node/blob/master/SECURITY.md に記載されている手順に従ってください。

Node.js および nodejs GitHub 組織で管理されているプロジェクトのセキュリティ脆弱性およびセキュリティ関連のリリースに関する最新情報を入手するには、https://groups.google.com/forum/#!forum/nodejs-sec で、低頻度の告知のみを行う nodejs-sec メーリングリストに登録してください。