jsPDFはJavaScriptでPDFを生成するライブラリです。バージョン4.0.0以前では、node.jsビルドのloadFileメソッドの最初の引数をユーザーが制御できたため、ローカルファイルのインクルージョンやパストラバーサルが可能でした。もしloadFileメソッドに未検証のパスを渡せる場合、ユーザーはnodeプロセスが実行されているローカルファイルシステム上の任意のファイルの内容を取得できます。取得したファイルの内容は生成されるPDFにそのまま含まれます。影響を受ける他のメソッドには`addImage`、`html`、`addFont`があります。この問題はライブラリのnode.jsビルド(`dist/jspdf.node.js`および`dist/jspdf.node.min.js`ファイル)に限定されています。この脆弱性はjsPDF@4.0.0で修正されました。このバージョンではデフォルトでファイルシステムへのアクセスを制限しています。このSemVerメジャーアップデートによるその他の破壊的な変更はありません。いくつかの回避策も提供されています。最近のnodeバージョンでは、本番環境で`--permission`フラグの使用が推奨されています。この機能はv20.0.0で実験的に導入され、v22.13.0/v23.5.0/v24.0.0で安定化しました。古いnodeバージョンの場合は、jsPDFに渡す前にユーザー提供のパスをサニタイズする必要があります。
|