GHSA-7x6v-j9x4-qf24
jsPDF has a PDF Object Injection via FreeText color
Quick fix
GHSA-7x6v-j9x4-qf24 — jspdf: upgrade to the fixed version with the command below.
npm install jspdf@4.2.1Details
### Impact
User control of arguments of the `createAnnotation` method allows users to inject arbitrary PDF objects, such as JavaScript actions.
If given the possibility to pass unsanitized input to the following method, a user can inject arbitrary PDF objects, such as JavaScript actions, which might trigger when the PDF is opened or interacted with..
* `createAnnotation`: `color` parameter
Example attack vector:
```js import { jsPDF } from 'jspdf'
const doc = new jsPDF();
const payload = '000000) /AA <</E <</S /Launch /F (calc.exe)>>>> (';
doc.createAnnotation({ type: 'freetext', bounds: { x: 10, y: 10, w: 120, h: 20 }, contents: 'hello', color: payload });
doc.save('test.pdf'); ```
### Patches
The vulnerability has been fixed in jsPDF@4.2.1.
### Workarounds Sanitize user input before passing it to the vulnerable API members.
Are you affected?
Enter the version of the package you're using.
Affected packages
References
- https://github.com/parallax/jsPDF/security/advisories/GHSA-7x6v-j9x4-qf24[WEB]
- https://nvd.nist.gov/vuln/detail/CVE-2026-31898[ADVISORY]
- https://github.com/parallax/jsPDF/commit/4155c4819d5eca284168e51e0e1e81126b4f14b8[WEB]
- https://github.com/parallax/jsPDF[PACKAGE]
- https://github.com/parallax/jsPDF/blob/b1607a9391d4cd65ea7ade25998aea8345ae1be3/src/modules/annotations.js#L193-L208[WEB]
- https://github.com/parallax/jsPDF/releases/tag/v4.2.1[WEB]