Human
Machine
REPRO-2026-00044 CRITICAL Path Traversal
Verified
jsPDF Local File Inclusion/Path Traversal in Node.js builds
jspdf (npm) Jan 7, 2026
What's the vulnerability?
User control of the first argument of the loadFile method in the node.js build allows local file inclusion/path traversal.
If given the possibility to pass unsanitized paths to the loadFile method, a user can retrieve file contents of arbitrary files in the local file system the node process is running in. The file contents are included verbatim in the generated PDFs.
Other affected methods are: addImage, html, addFont.
Only the node.js builds of the library are affected, namely the dist/jspdf.node.js and dist/jspdf.node.min.js files.
Root Cause Analysis
One Command
Verify with pruva-verify
Run the Pruva CLI to automatically fetch and execute the reproduction script.
pruva-verify REPRO-2026-00044 or
pruva-verify GHSA-f8cm-6447-x5h2 or
pruva-verify CVE-2025-68428 Install:
curl -fsSL https://pruva.dev/install.sh | sh Or Run Manually
1
Download the script
curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00044/artifacts/reproduction_steps.sh 2
Make executable
chmod +x reproduction_steps.sh 3
Run the script
./reproduction_steps.sh Run in a VM, container, or disposable environment. This exploits a real vulnerability.
How Pruva Reproduced This
Watch the AI agent's step-by-step process.
Loading session...
Artifacts
repro/rca_report.md2.8 KBreproduction_steps.sh11.3 KBlogs/run_20260107_182602.log25.8 KBlogs/run_20260107_182758.log26.9 KBlogs/run_20260107_182811.log26.9 KBlogs/summary.log0.1 KBrepro/patch_analysis.md3.1 KBrepro/repro_notes.txt0.5 KBrepro_work/patched/attempts/5_addFont_rel.pdf3.2 KBrepro_work/patched/attempts/6_addFont_abs.pdf3.3 KBrepro_work/patched/package.json0.0 KBrepro_work/patched/patch_attempt_1.js1.9 KBrepro_work/patched/patch_attempt_10.js1.9 KBrepro_work/patched/patch_attempt_11.js1.9 KBrepro_work/patched/patch_attempt_2.js1.9 KBrepro_work/patched/patch_attempt_3.js1.9 KBrepro_work/patched/patch_attempt_4.js1.9 KBrepro_work/patched/patch_attempt_5.js1.9 KBrepro_work/patched/patch_attempt_6.js1.9 KBrepro_work/patched/patch_attempt_7.js1.9 KBrepro_work/patched/patch_attempt_8.js1.9 KBrepro_work/patched/patch_attempt_9.js1.9 KBrepro_work/patched/poc_addimage.js0.7 KBrepro_work/vuln/out_addFont.pdf3.3 KBrepro_work/vuln/out_addImage.pdf3.4 KBrepro_work/vuln/package.json0.0 KBrepro_work/vuln/poc_addfont.js0.7 KBrepro_work/vuln/poc_addimage.js0.7 KBsecret.txt0.1 KBticket.md2.0 KB