脆弱性・CVE速報深刻度: 高

node-forge に 11 件の脆弱性(CVE-2026-119190 ほか): TLS 処理の停止、証明書チェーン検証の回避など、1.4.1 で修正

目次(5)

CVE-2026-119190

CVE-2026-118782

CVE-2026-118779

CVE-2026-119188

CVE-2026-119187

CVE-2026-119186

CVE-2026-118778

CVE-2026-118777

CVE-2026-118775

CVE-2026-118780

CVE-2026-118781

JavaScript 製の暗号ライブラリ node-forge に、2026 年 10 月 30 日(UTC)に 11 件の脆弱性が一斉に公開されました。すべて 1.4.0 以下が対象で、1.4.1 で修正されています(npm の最新版は 1.4.2)。深刻度は High が 5 件(CVSS 7.4〜7.5)、Medium が 3 件、Low が 3 件です。CISA の KEV には載っていません。EPSS は 11 件とも 0.1〜0.6% 台(10/30 時点)です。

High の 5 件

CVE内容CVSS
CVE-2026-119190証明書チェーンの検証で、廃止された拡張の OID(2.5.29.10・2.5.29.13)を basicConstraints として扱い、CA でない証明書が CA として受理されうる7.4
CVE-2026-118782PKCS#12 の繰り返し回数が 0 以下でも受理され、鍵がパスワードに依存しない定数になる。パスワードを知らなくても MAC を偽造できる7.5
CVE-2026-118779PEM の解読(pem.decode)の正規表現が、数十 KB の細工した入力で数秒〜数分イベントループを止める7.5
CVE-2026-119188TLS で、分割されたハンドシェイクの途中に別種のレコードを挟むと未処理の例外が出て、Node.js のプロセスが落ちる7.5
CVE-2026-119187TLS のレコード処理が再帰で、小さなレコードを数千個送るとスタックが尽きてプロセスが落ちる7.5

Medium と Low の 6 件

  • CVE-2026-119186(Medium・5.9): AES-GCM の tagLength に 0 など不正な値を渡すと、認証タグが空になり、タグなしでも復号の検証が通る。
  • CVE-2026-118778(Medium・5.9): TLS クライアントで、サーバーが証明書を送らないと例外で落ちる。認証を回避されることはない。
  • CVE-2026-118777(Medium・4.8): forge.http が Set-Cookie の名前 __proto__ を処理し、Object.prototype を書き換えられる。
  • CVE-2026-118775(Low・3.7): asn1.oidToDer が OID の最初の数値の範囲を調べず、別の OID の符号になる。
  • CVE-2026-118780(Low・3.7): 同じ主体名の CA が複数あるストアで、検証のたびに CA 証明書がストアから消える。
  • CVE-2026-118781(Low・2.9): modInverse に負の値を渡すと無限ループになる。

影響が大きいのはどこか

  • TLS を forge で処理している場合: CVE-2026-119187 と CVE-2026-119188 は、認証も有効なハンドシェイクも要らず、約 18 バイトか 20 KB 未満の通信で、ソケットの data ハンドラから呼ぶ一般的な使い方のプロセスを落とせます(勧告の記載)。
  • 証明書の検証に使っている場合: CVE-2026-119190 は、信頼された CA が、拡張を確認せずに申請者の拡張をそのまま写して証明書を発行した場合に成立します。勧告は、CA の運用側が未知の拡張を写さないようにすることも対策としています。
  • PKCS#12 を読む場合: CVE-2026-118782 で、パスワードで守られているはずのファイルの改ざんが検出できなくなります。
  • PEM を外部から受け取る場合: CVE-2026-118779 は、証明書・秘密鍵・公開鍵・CSR・PKCS#7 など、PEM を読むすべての入口が対象です。勧告によると、1.4.0 では約 7 KB で 0.4 秒、約 29 KB で 2 秒を超える停止が起きます。

対応

  • node-forge を 1.4.1 以降に更新してください(最新は 1.4.2)。直接の依存だけでなく、他のパッケージが引き込んでいる node-forge も npm ls node-forge で確認します。
  • すぐ更新できない場合の回避策は勧告ごとに異なります。PEM は大きな入力を拒否する、TLS は connection.process() の例外を捕捉して接続を閉じる、PKCS#12 は繰り返し回数が 1 未満の入力を拒否する、などです。証明書チェーンの検証(CVE-2026-119190)には、node-forge 側の回避策はありません。verify コールバックで、末端以外の証明書に OID 2.5.29.19 の CA 指定が無いチェーンを拒否できます。

確認できていない点

  • 勧告に、実際の攻撃が確認された記載はありません。KEV にも載っていません。
  • 1.4.2 の修正内容は、この記事では確認していません。
  • NVD の評価は、この記事の時点で未確認です。数値は GitHub Advisory の値です。

この記事について

出典

この記事を共有