つみかさね

CVE-2026-33896

High(7.4)

CVE-2026-33896 — node-forge basicConstraints CA 証明書検証バイパス

公開日: 2026-03-29データソース: NVD, GitHub Advisory

影響を受けるソフトウェア

製品ベンダー影響バージョン
node-forge (forge)Digital Bazaarv1.4.0 より前
CVEnode-forgeX.509証明書検証basicConstraintsnpm

概要

node-forge(npm パッケージ名: forge)は JavaScript で 実装 された 暗号・PKI ツールキット であり、X.509 証明書 の 生成、解析、検証 の 機能 を 提供 して います。この ライブラリ の バージョン 1.4.0 より 前 に おいて、X.509 証明書チェーン の 検証 処理 に 重大 な 脆弱性 が 存在 します。

この 脆弱性 は CWE-295(Improper Certificate Validation、不適切 な 証明書 検証)に 分類 されます。具体的 に は、証明書 の basicConstraints 拡張 を 適切 に 検証 して いない ため、攻撃者 が 偽造 した CA 証明書 が 証明書チェーン 内 で 信頼 されて しまいます。

X.509 証明書 の basicConstraints 拡張 は、その 証明書 が 認証局(CA)として 機能 できる か どうか を 示す 重要 な フィールド です。CA:TRUE が 設定 されて いない エンドエンティティ 証明書 は、他 の 証明書 に 署名 する 権限 を 持ちません。この 制約 は PKI(公開鍵基盤)の 信頼 モデル の 根幹 を 成す もの です。

node-forge の 証明書 検証 実装 で は、この basicConstraints 拡張 の チェック が 欠落 して いた ため、以下 の 攻撃 シナリオ が 成立 します。

攻撃者 は 正規 の CA から 発行 された 通常 の サーバー 証明書(エンドエンティティ 証明書)を 取得 します。通常、この 証明書 に は CA:FALSE が 設定 されて おり、他 の 証明書 に 署名 する こと は できません。しかし、node-forge は この 制約 を 検証 しない ため、攻撃者 は この エンドエンティティ 証明書 の 秘密鍵 を 使って 任意 の ドメイン に 対する 偽造 証明書 を 作成 し、node-forge を 使用 して いる アプリケーション に 対して その 偽造 証明書 を 提示 する こと が できます。

この 攻撃 に より、以下 の 深刻 な 影響 が 生じます。

第一 に、中間者攻撃(MITM)が 可能 に なります。攻撃者 は 任意 の ドメイン に 対する 偽造 証明書 を 作成 し、TLS 通信 を 傍受・改ざん する こと が できます。

第二 に、なりすまし が 可能 に なります。正規 の サービス に 見せかけた 偽の サーバー を 立ち上げ、ユーザー の 認証情報 や 機密データ を 窃取 する こと が できます。

第三 に、証明書 ピンニング の 無効化 に つながる 可能性 が あります。正規 の CA チェーン に 連なる 証明書 であるため、一部 の ピンニング 実装 を バイパス できる 場合 が あります。

この 脆弱性 は TLS クライアント として node-forge を 使用 して いる アプリケーション や、証明書チェーン の 検証 を node-forge に 依存 して いる システム に 特に 影響 が 大きい です。HTTPS リクエスト の 送信、Webhook の 検証、mTLS(相互TLS認証)など の 機能 で node-forge を 使用 して いる 場合、速やか に 対応 する 必要 が あります。

CVSSベクトル

項目
CVSSスコア7.4
深刻度High
攻撃元ネットワーク
攻撃条件の複雑さ
必要な権限不要
ユーザー操作不要
CWECWE-295 (不適切な証明書検証)

影響を受けるソフトウェア

製品ベンダー影響バージョン
node-forge (forge)Digital Bazaarv1.4.0 より前 の 全バージョン

修正バージョンと回避策

  • 修正バージョン: node-forge v1.4.0 以降 へ アップデート する こと で、basicConstraints 拡張 の 厳密 な 検証 が 実装 されます
  • 暫定回避策: 証明書チェーン の 検証 に node-forge を 使用 して いる 箇所 で、中間 証明書 の basicConstraints 拡張 に CA:TRUE が 設定 されて いる こと を 独自 に チェック する ロジック を 追加 する
  • 代替手段: 可能 で あれば、Node.js 組み込み の TLS/crypto モジュール を 使用 する こと で、この 脆弱性 の 影響 を 回避 できます
  • 依存関係 の 確認: npm ls forge または npm audit で プロジェクト 内 の node-forge バージョン を 確認 し、間接 依存 も 含めて 更新 する

関連リンク


データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。

Xでシェアはてブ
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database, JVN iPedia (IPA/JPCERT/CC)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。