GitHub Advisoryadvisory · npm
GHSA-7x6v-j9x4-qf24 jsPDF has a PDF Object Injection via FreeText color
HIGH
Official page ↗
- Aliases
- CVE-2026-31898
- Ecosystem
- npm
- Packages
- jspdf
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
- Weaknesses
- CWE-116
- Reviewed
- 2026-03-17
Affected packages
• npm jspdf: < 4.2.1 → fixed in 4.2.1
Description
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 >>> (';
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 [email protected].
Workarounds
Sanitize user input before passing it to the vulnerable API members.
Related
Alias · CVE (1)
- CVE-2026-31898 jsPDF is a library to generate PDFs in JavaScript. vulnerability
Weakness · CWE (1)
- CWE-116 Improper Encoding or Escaping of Output weakness
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