# CVE-2026-42589: Gotenberg: Unauthenticated RCE via ExifTool Metadata Key Injection - Exploited (CISA KEV): no - Published: 2026-05-14 - CVSS: 9.8 CRITICAL (v3.1) - EPSS: 3.0% (87th percentile) - CWE: CWE-78 Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.31.0, Gotenberg's /forms/pdfengines/metadata/write HTTP endpoint accepts a JSON metadata object and passes its keys directly to ExifTool via the go-exiftool library. No validation is performed on key characters. A \n embedded in a JSON key splits the ExifTool stdin stream into a new argument line, allowing an attacker to inject arbitrary ExifTool flags — including -if, which evaluates Perl expressions. This achieves unauthenticated OS command execution in a single HTTP request. The response is HTTP 200 with a valid PDF, making the attack transparent to basic monitoring. This vulnerability is fixed in 8.31.0. ## 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-09-16 | 125 | | Akamai | No public source | — | — | | OWASP CRS | No public claim | — | — | ### F5 - 2026-09-16 · new · rule 200204090 > Added: signature 200204090 "Gotenberg Unauthenticated Remote Code Execution" (Server Side Code Injection, risk High), systems: Other Web Server. References: CVE-2026-42589. Source: https://docs.cloud.f5.com/docs-v2/platform/changelogs/security-details-changelog - 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: passed (0 of 2 requests blocked), template CVE-2026-42589, 2026-11-02 - OWASP Core Rule Set 4.25.0, paranoia level 2, anomaly threshold 5, default CRS settings: partial (1 of 2 requests blocked), template CVE-2026-42589, 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-42589 · JSON: https://cve.vigilbase.com/api/v1/cves/CVE-2026-42589