CVE-2026-24737
jsPDF has a PDF Injection in AcroFormChoiceField which allows Arbitrary JavaScript Execution
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.1.0, user control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions. If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are AcroformChoiceField.addOption, AcroformChoiceField.setOptions, AcroFormCheckBox.appearanceState, and AcroFormRadioButton.appearanceState. The vulnerability has been fixed in [email protected].
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 a PDF Injection in AcroFormChoiceField which allows Arbitrary JavaScript Execution
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.1.0, user control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions. If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are AcroformChoiceField.addOption, AcroformChoiceField.setOptions, AcroFormCheckBox.appearanceState, and AcroFormRadioButton.appearanceState. The vulnerability has been fixed in [email protected].
- Record
CVE-2026-24737- 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.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L - Weakness
- CWE-116, CWE-917
- Updated
- 2026-11-02
EUVDEUVD-2026-5297
8.3
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.1.0, user control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions. If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are AcroformChoiceField.addOption, AcroformChoiceField.setOptions, AcroFormCheckBox.appearanceState, and AcroFormRadioButton.appearanceState. The vulnerability has been fixed in [email protected].
- Record
EUVD-2026-5297- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-pqxr-3g65-p328
8.1
jsPDF has PDF Injection in AcroFormChoiceField that allows Arbitrary JavaScript Execution
Impact
User control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions.
If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are:
AcroformChoiceField.addOptionAcroformChoiceField.setOptionsAcroFormCheckBox.appearanceStateAcroFormRadioButton.appearanceState
Example attack vector:
import { jsPDF } from "jspdf"
const doc = new jsPDF();
var choiceField = new doc.AcroFormChoiceField();
choiceField.T = "VulnerableField";
choiceField.x = 20;
choiceField.y = 20;
choiceField.width = 100;
choiceField.height = 20;
// PAYLOAD:
// 1. Starts with "/" to bypass escaping.
// 2. "dummy]" closes the array.
// 3. "/AA" injects an Additional Action (Focus event).
// 4. "/JS" executes arbitrary JavaScript.
const payload = "/dummy] /AA << /Fo << /S /JavaScript /JS (app.alert('XSS')) >> >> /Garbage [";
choiceField.addOption(payload);
doc.addField(choiceField);
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.
Credits
Research and fix: Ahmet Artuç
- Record
GHSA-pqxr-3g65-p328- 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
- Updated
- 2026-11-02
NVD
8.1
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.1.0, user control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions. If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are AcroformChoiceField.addOption, AcroformChoiceField.setOptions, AcroFormCheckBox.appearanceState, and AcroFormRadioButton.appearanceState. The vulnerability has been fixed in [email protected].
- Record
CVE-2026-24737- 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.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L - Weakness
- CWE-116, CWE-917
- Updated
- 2026-11-02
OSV
8.1
jsPDF has a PDF Injection in AcroFormChoiceField which allows Arbitrary JavaScript Execution
jsPDF is a library to generate PDFs in JavaScript. Prior to 4.1.0, user control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions. If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are AcroformChoiceField.addOption, AcroformChoiceField.setOptions, AcroFormCheckBox.appearanceState, and AcroFormRadioButton.appearanceState. The vulnerability has been fixed in [email protected].
- Record
CVE-2026-24737- 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
- Updated
- 2026-11-02
OSVGHSA-pqxr-3g65-p328
8.1
jsPDF has PDF Injection in AcroFormChoiceField that allows Arbitrary JavaScript Execution
Impact
User control of properties and methods of the Acroform module allows users to inject arbitrary PDF objects, such as JavaScript actions.
If given the possibility to pass unsanitized input to one of the following methods or properties, a user can inject arbitrary PDF objects, such as JavaScript actions, which are executed when the victim opens the document. The vulnerable API members are:
AcroformChoiceField.addOptionAcroformChoiceField.setOptionsAcroFormCheckBox.appearanceStateAcroFormRadioButton.appearanceState
Example attack vector:
import { jsPDF } from "jspdf"
const doc = new jsPDF();
var choiceField = new doc.AcroFormChoiceField();
choiceField.T = "VulnerableField";
choiceField.x = 20;
choiceField.y = 20;
choiceField.width = 100;
choiceField.height = 20;
// PAYLOAD:
// 1. Starts with "/" to bypass escaping.
// 2. "dummy]" closes the array.
// 3. "/AA" injects an Additional Action (Focus event).
// 4. "/JS" executes arbitrary JavaScript.
const payload = "/dummy] /AA << /Fo << /S /JavaScript /JS (app.alert('XSS')) >> >> /Garbage [";
choiceField.addOption(payload);
doc.addField(choiceField);
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.
Credits
Research and fix: Ahmet Artuç
- Record
GHSA-pqxr-3g65-p328- 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
- Updated
- 2026-11-02
Show 5 moreShow less
OSVCLSA-2026-1773447392 No score
TuxCare security update for jspdf (4 CVEs)
TuxCare rebuilt jspdf to address 4 CVEs. Fixed in 3.0.4-tuxcare.4.
- Record
CLSA-2026-1773447392- Updated
- 2026-11-02
OSVCLSA-2026-1773620212 No score
TuxCare security update for jspdf (4 CVEs)
TuxCare rebuilt jspdf to address 4 CVEs. Fixed in 2.5.2-tuxcare.6.
- Record
CLSA-2026-1773620212- 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-24737 No score
CVE-2026-24737 in jspdf - Patched by Root
Root has patched CVE-2026-24737 in the jspdf package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-24737- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
jspdfnpm |
through 4.0.0 | 4.1.0 |
jspdfTuxCare:npm From an advisory covering 4 CVEs |
3.0.4-tuxcare.0 up to 3.0.4-tuxcare.4, plus listed versions 3.0.43.0.4-tuxcare.13.0.4-tuxcare.23.0.4-tuxcare.3 |
3.0.4-tuxcare.4 |
jspdfTuxCare:npm From an advisory covering 4 CVEs |
2.5.2-tuxcare.0 up to 2.5.2-tuxcare.6, 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.5 |
2.5.2-tuxcare.6 |
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 |
jspdfnpm |
before 4.1.0 | 4.1.0 |
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 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-24737 is a high vulnerability (CVSS 8.1) in Parall Jspdf, published February 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.59%, the 48th percentile. Fixed in jspdf 4.1.0.
References
github.com/parallax/jsPDF/security/advisories/GHSA-pqxr-3g65-p328
github.com/parallax/jsPDF/commit/da291a5f01b96282545c9391996702cdb8879f79
github.com/parallax/jsPDF/releases/tag/v4.1.0
access.redhat.com/security/cve/CVE-2026-24737
bugzilla.redhat.com/show_bug.cgi?id=2436115
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-24737.json