jsPDFに深刻な脆弱性(CVE-2025-68428)

セキュリティニュース

投稿日時: 更新日時:

jsPDFに深刻な脆弱性(CVE-2025-68428)

JavaScriptでPDF生成を行う代表的ライブラリ jsPDF において、サーバー上の任意ファイルを読み取られる可能性がある深刻な脆弱性 が公表されました。
この問題は CVE-2025-68428 として識別されており、CVSSスコアは 9.2(Critical) と評価されています。

脆弱性の対象バージョン(影響を受けるバージョン)

今回の CVE-2025-68428 の影響を受けるのは、jsPDF のうち、以下の条件を満たすバージョンです。

  • jsPDF 3.0.4 以下

  • Node.js 向けビルドを使用している場合

    • dist/jspdf.node.js

    • dist/jspdf.node.min.js

これらのバージョンでは、loadFileaddImagehtmladdFont などのメソッドにおいて、
ユーザーが指定したファイルパスの検証が不十分であり、パストラバーサルを通じてサーバー上の任意ファイルを読み取られる可能性があります。

なお、ブラウザ専用ビルドのみを使用している場合は本脆弱性の影響対象外とされています。

対策バージョン(修正済みバージョン)

本脆弱性は、以下のバージョンで修正されています。

  • jsPDF 4.0.0 以降

jsPDF 4.0.0 では、Node.js 環境における ファイルシステムへのアクセスがデフォルトで制限され、
不正なパス指定によるローカルファイル読み取りが防止されています。

このアップデートは メジャーバージョンアップ(semver-major) に分類されていますが、
公式には「セキュリティ修正が主目的で、その他の大きな破壊的変更はない」と説明されています。

脆弱性の概要:パストラバーサルによるローカルファイル読み取り

CVE-2025-68428は、ローカルファイルインクルージョン(LFI)およびパストラバーサル に分類される脆弱性です。
問題の本質は、Node.js向けのjsPDFビルドが ファイルパスの入力値を十分に検証・無害化していない点 にあります。

以下のメソッドが影響を受けることが公式に確認されています。

  • loadFile

  • addImage

  • html

  • addFont

これらのメソッドは、本来であれば画像やフォントファイルなどを読み込む用途ですが、ユーザーが制御可能なパスをそのまま渡せる構成の場合、攻撃者はサーバー上の任意ファイルを指定できます。

攻撃が成立した場合の具体的な挙動

公式アドバイザリおよび検証例では、次のような攻撃シナリオが示されています。

  • 攻撃者が addImage などの引数に ./secret.txt/etc/passwd のようなパスを指定

  • jsPDFがそれを画像ファイルとして処理しようとする

  • 実際には ファイルの中身がそのままPDFに埋め込まれる

  • 生成されたPDFを通じて、サーバー内部の機密情報が外部に流出する

この挙動により、以下のような情報が窃取される可能性があります。

  • 設定ファイル

  • 環境変数を含むファイル

  • APIキーや認証情報

  • 業務データやログファイル

特に、ユーザー入力を元にPDFを生成するWebアプリケーションでは、深刻な被害につながる恐れがあります。