# CVE-2026-40281: Gotenberg vulnerable to argument injection via newlines in ExifTool metadata values - Exploited (CISA KEV): no - Published: 2026-05-06 - CVSS: 10 CRITICAL (v3.1) - EPSS: 2.3% (83th percentile) - CWE: CWE-88 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. ## Edge WAF coverage (claimed by vendors, not measured) | Vendor | Status | First rule | Days after publication | |---|---|---|---| | Cloudflare | No public claim | — | — | | AWS | No public claim | — | — | | Microsoft Azure | No public claim | — | — | | Google Cloud | No public claim | — | — | | Fastly | Before feed history | — | — | | F5 | Rule published | 2026-10-21 | — | | Akamai | No public source | — | — | | OWASP CRS | No public claim | — | — | ### F5 - 2026-10-21 · updated · rule 200204090 > Updated: signature 200204090 "Gotenberg Unauthenticated Remote Code Execution" (Server Side Code Injection, risk High), systems: Other Web Server. References: CVE-2026-42589, CVE-2026-40281. Source: https://docs.cloud.f5.com/docs-v2/platform/changelogs/security-details-changelog ## Our test (measured) - OWASP Core Rule Set 4.25.0, paranoia level 1, anomaly threshold 5, default CRS settings: blocked (1 of 1 requests blocked), template CVE-2026-40281, 2026-11-02 - OWASP Core Rule Set 4.25.0, paranoia level 2, anomaly threshold 5, default CRS settings: blocked (1 of 1 requests blocked), template CVE-2026-40281, 2026-11-02 "No public claim" means no vendor statement names this CVE; "Before feed history" means the CVE is older than the vendor feed. In both cases generic rules may still block it. HTML: https://cve.vigilbase.com/cve/CVE-2026-40281 · JSON: https://cve.vigilbase.com/api/v1/cves/CVE-2026-40281