CVE-2026-25755
jsPDF has PDF Object Injection via Unsanitized Input in addJS Method
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.2.0, user control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF. The vulnerability has been fixed in [email protected]. As a workaround, escape parentheses in user-provided JavaScript code before passing them to the addJS method.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.1
jsPDF has PDF Object Injection via Unsanitized Input in addJS Method
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.2.0, user control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF. The vulnerability has been fixed in [email protected]. As a workaround, escape parentheses in user-provided JavaScript code before passing them to the addJS method.
- Record
CVE-2026-25755- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N - CVSS 3.1
- 9.6 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-94, CWE-116, CWE-94
- Updated
- 2026-11-02
EUVDEUVD-2026-8109
9.6
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.2.0, user control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF. The vulnerability has been fixed in [email protected]. As a workaround, escape parentheses in user-provided JavaScript code before passing them to the addJS method.
- Record
EUVD-2026-8109- CVSS 3.1
- 9.6 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-9vjf-qc39-jprp
8.1
jsPDF has a PDF Object Injection via Unsanitized Input in addJS Method
Impact
User control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF.
import { jsPDF } from "jspdf";
const doc = new jsPDF();
// Payload:
// 1. ) closes the JS string.
// 2. > closes the current dictionary.
// 3. /AA ... injects an "Additional Action" that executes on focus/open.
const maliciousPayload = "console.log('test');) >> /AA << /O << /S /JavaScript /JS (app.alert('Hacked!')) >> >>";
doc.addJS(maliciousPayload);
doc.save("vulnerable.pdf");
Patches
The vulnerability has been fixed in [email protected].
Workarounds
Escape parentheses in user-provided JavaScript code before passing them to the addJS method.
References
https://github.com/ZeroXJacks/CVEs/blob/main/2026/CVE-2026-25755.md
- Record
GHSA-9vjf-qc39-jprp- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N - Weakness
- CWE-94, CWE-116
- Updated
- 2026-11-02
NVD
8.1
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.2.0, user control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF. The vulnerability has been fixed in [email protected]. As a workaround, escape parentheses in user-provided JavaScript code before passing them to the addJS method.
- Record
CVE-2026-25755- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N - CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - CVSS 3.1
- 9.6 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-94, CWE-116
- Updated
- 2026-11-02
OSV
8.1
jsPDF has PDF Object Injection via Unsanitized Input in addJS Method
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.2.0, user control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF. The vulnerability has been fixed in [email protected]. As a workaround, escape parentheses in user-provided JavaScript code before passing them to the addJS method.
- Record
CVE-2026-25755- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N - Weakness
- CWE-116, CWE-94
- Updated
- 2026-11-02
OSVGHSA-9vjf-qc39-jprp
8.1
jsPDF has a PDF Object Injection via Unsanitized Input in addJS Method
Impact
User control of the argument of the addJS method allows an attacker to inject arbitrary PDF objects into the generated document. By crafting a payload that escapes the JavaScript string delimiter, an attacker can execute malicious actions or alter the document structure, impacting any user who opens the generated PDF.
import { jsPDF } from "jspdf";
const doc = new jsPDF();
// Payload:
// 1. ) closes the JS string.
// 2. > closes the current dictionary.
// 3. /AA ... injects an "Additional Action" that executes on focus/open.
const maliciousPayload = "console.log('test');) >> /AA << /O << /S /JavaScript /JS (app.alert('Hacked!')) >> >>";
doc.addJS(maliciousPayload);
doc.save("vulnerable.pdf");
Patches
The vulnerability has been fixed in [email protected].
Workarounds
Escape parentheses in user-provided JavaScript code before passing them to the addJS method.
References
https://github.com/ZeroXJacks/CVEs/blob/main/2026/CVE-2026-25755.md
- Record
GHSA-9vjf-qc39-jprp- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N - Weakness
- CWE-116, CWE-94
- Updated
- 2026-11-02
Show 5 moreShow less
OSVCLSA-2026-1773620207 No score
TuxCare security update for jspdf (3 CVEs)
TuxCare rebuilt jspdf to address 3 CVEs. Fixed in 3.0.4-tuxcare.6.
- Record
CLSA-2026-1773620207- Updated
- 2026-11-02
OSVCLSA-2026-1773620213 No score
TuxCare security update for jspdf (3 CVEs)
TuxCare rebuilt jspdf to address 3 CVEs. Fixed in 2.5.2-tuxcare.7.
- Record
CLSA-2026-1773620213- Updated
- 2026-11-02
OSVCLSA-2026-1780534264 No score
TuxCare security update for jspdf (12 CVEs)
TuxCare rebuilt jspdf to address 12 CVEs. Fixed in 2.5.1-tuxcare.1.
- Record
CLSA-2026-1780534264- Updated
- 2026-11-02
OSVCLSA-2026-1780966320 No score
TuxCare security update for jspdf (9 CVEs)
TuxCare rebuilt jspdf to address 9 CVEs. Fixed in 1.4.1-tuxcare.2.
- Record
CLSA-2026-1780966320- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-25755 No score
CVE-2026-25755 in jspdf - Patched by Root
Root has patched CVE-2026-25755 in the jspdf package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-25755- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
jspdfnpm |
before 4.2.0 | 4.2.0 |
jspdfTuxCare:npm From an advisory covering 3 CVEs |
3.0.4-tuxcare.0 up to 3.0.4-tuxcare.6, plus listed versions 3.0.43.0.4-tuxcare.13.0.4-tuxcare.23.0.4-tuxcare.33.0.4-tuxcare.43.0.4-tuxcare.5 |
3.0.4-tuxcare.6 |
jspdfTuxCare:npm From an advisory covering 3 CVEs |
2.5.2-tuxcare.0 up to 2.5.2-tuxcare.7, plus listed versions 2.5.22.5.2-tuxcare.12.5.2-tuxcare.22.5.2-tuxcare.32.5.2-tuxcare.42.5.2-tuxcare.52.5.2-tuxcare.6 |
2.5.2-tuxcare.7 |
jspdfTuxCare:npm From an advisory covering 12 CVEs |
2.5.1-tuxcare.0 up to 2.5.1-tuxcare.1, plus listed versions 2.5.1 |
2.5.1-tuxcare.1 |
jspdfTuxCare:npm From an advisory covering 9 CVEs |
1.4.1-tuxcare.0 up to 1.4.1-tuxcare.2, plus listed versions 1.4.11.4.1-tuxcare.1 |
1.4.1-tuxcare.2 |
jspdfRoot:npm |
before 2.5.2-aikido.1 | 2.5.2-aikido.14.0.0-aikido.1 |
@rootio/jspdfRoot:npm |
before 2.5.2-root.io.1 | 2.5.2-root.io.14.0.0-root.io.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | absholi7ly/jsPDF-Object-Injection | 2026-02-24 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-25755 is a high vulnerability (CVSS 8.1) in Parall Jspdf, published February 19, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.95%, the 61st percentile. Fixed in jspdf 4.2.0.
References
github.com/parallax/jsPDF/security/advisories/GHSA-9vjf-qc39-jprp
github.com/parallax/jsPDF/commit/56b46d45b052346f5995b005a34af5dcdddd5437
github.com/ZeroXJacks/CVEs/blob/main/2026/CVE-2026-25755.md
github.com/parallax/jsPDF/releases/tag/v4.2.0
access.redhat.com/security/cve/CVE-2026-25755
bugzilla.redhat.com/show_bug.cgi?id=2440993
Show 7 moreShow less
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-25755.json
access.redhat.com/errata/RHSA-2026:7110
access.redhat.com/errata/RHSA-2026:7128
nvd.nist.gov/vuln/detail/CVE-2026-25755
github.com/advisories/GHSA-9vjf-qc39-jprp
github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25755.json
github.com/parallax/jsPDF