CVE-2026-40281 json
Gotenberg vulnerable to argument injection via newlines in ExifTool metadata values
published 6mo ago modified 4mo ago also EUVD-2026-28214 , GHSA-q7r4-hc83-hf2q , GO-2026-5572
- cvss
- 10.0
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 2.3%
- EPSS 2.3% chance of exploitation in 30 days, percentile 83%
- public exploits
- 0
- none known, plus a Nuclei check
Summary
Gotenberg is a Docker-powered stateless API for PDF files. In versions 8.30.1 and earlier, the metadata write endpoint validates metadata keys for control characters but leaves metadata values unsanitized. A newline character in a metadata value splits the ExifTool stdin line into two separate arguments, allowing injection of arbitrary ExifTool pseudo-tags such as -FileName, -Directory, -SymLink, and -HardLink. This is a bypass of the incomplete key-sanitization fix introduced in v8.30.1. An unauthenticated attacker can rename or move any PDF being processed to an arbitrary path in the container filesystem, overwrite arbitrary files, or create symlinks and hard links at arbitrary paths.
Patch / fix
- go github.com/gotenberg/gotenberg/v8 8.31.0
- govulncheck-vulndb openSUSE Leap 16.0 0.0.20260723T184607-160000.1.1
opensuse advisories openSUSE-SU-2026:21483-1
Is CVE-2026-40281 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 6mo ago
Exploit prediction
2.26% chance of exploitation in the next 30 days, higher than 83% of all scored CVEs (FIRST EPSS, 2026-11-09).
Exploits and checks
- Nuclei template Gotenberg <= 8.30.1 - Remote Code Execution nuclei detection template
- github.com https://github.com/gotenberg/gotenberg/security/advisories/GHSA-q7r4-hc83-hf2q referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 10.0 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H |
| GitHub | 3.1 | 10.0 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H |
| NVD | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/gotenberg/gotenberg/v8 | <8.31.0 |
8.31.0 |
| go | github.com/gotenberg/gotenberg/v7 | all versions |
no fix listed |
Affected products
- gotenberg gotenberg
Classification
- Weakness
-
- CWE-88 Improper Neutralization of Argument Delimiters in a Command
References
-
github.com
/gotenberg/gotenberg/commit/405f1069c026bb08f319fb5a44e5c67c33208318
web, patch
-
github.com
/gotenberg/gotenberg/security/advisories/GHSA-q7r4-hc83-hf2q
exploit, web, patch, vendor-advisory, advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-40281
advisory
-
github.com
/gotenberg/gotenberg
package
-
github.com
/gotenberg/gotenberg/releases/tag/v8.31.0
web
Sources
- CVE List CVE-2026-40281
- GitHub Advisory GHSA-q7r4-hc83-hf2q
- NVD CVE-2026-40281
- OSV GO-2026-5572
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.