Endor Labsは、最近jsPDFライブラリで修正された重大度クリティカルの脆弱性により、設定ファイルや認証情報を含む機密情報を攻撃者が読み取れる可能性があると警告している。
週あたり350万回以上ダウンロードされている人気のNPMパッケージであるjsPDFは、JavaScriptアプリケーションでのPDFドキュメント作成をサポートしている。
CVE-2025-68428(CVSSスコア9.2)として追跡されているこの欠陥は、ライブラリのloadFileメソッドにおけるローカルファイルインクルージョン/パストラバーサルの問題だ。
ユーザーが制御できる入力がファイルパス引数として渡されるため、jsPDFは指定されたファイルを読み取り、その内容をPDF出力に含めてしまう。
「loadFileメソッドにサニタイズされていないパスを渡せる可能性がある場合、ユーザーはNodeプロセスが動作しているローカルファイルシステム上の任意のファイルの内容を取得できます。ファイル内容は生成されるPDFにそのまま含まれます」と、jsPDFのメンテナーはアドバイザリで説明している。
内部でloadFileを呼び出しており、攻撃ベクトルとして悪用され得る公開メソッドには、addImage、html、addFontが含まれる。
この欠陥の影響を受けるのはjsPDFのNode.jsビルドのみで、デフォルトでのファイルアクセスを制限することでjsPDFバージョン4.0.0で対処された。
Endor Labsによると、攻撃者はこの脆弱性を悪用して、設定ファイル、認証情報、環境変数、そしてNode.jsプロセスがアクセスできる他のあらゆるファイルの内容を漏えいさせる可能性がある。
「ライブラリは提供されたファイルパスをそのまま読み取り、生の内容を埋め込みます。パストラバーサルのシーケンスにより、意図されたディレクトリ範囲外のファイルを読み取ることが可能になります。影響を受けるメソッド内の第1引数にユーザー制御の値が渡されると、外部から悪用可能になります」とEndor Labsは述べている。
この脆弱性を解消するには、jsPDFをバージョン4.0.0に更新し、Nodeのパーミッションフラグを活用して特定のファイルのみにアクセスを強制すべきだ。
「jsPDF 4.0.0にアップグレードしても、アプリケーションを動かし続けるためにNode.jsを広範な読み取り権限で設定している場合、依然として脆弱なままです」とEndor Labsは説明している。
翻訳元: https://www.securityweek.com/critical-vulnerability-patched-in-jspdf/