{"id":"CVE-2026-40280","summary":"Gotenberg SSRF via case-insensitive URL scheme bypass in webhook and downloadFrom deny-lists","details":"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/. \n\nThis bypasses the same security control that was patched in CVE-2026-27018.\n\nThis issue has been fixed in version 8.31.0.","aliases":["GHSA-5q7p-7jgv-ww56","GO-2026-5151"],"modified":"2026-07-08T08:29:24.387960148Z","published":"2026-05-05T19:52:40.327Z","related":["GHSA-5q7p-7jgv-ww56","GHSA-jjwv-57xh-xr6r"],"database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40280.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-918"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40280.json"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-jjwv-57xh-xr6r"},{"type":"ADVISORY","url":"https://github.com/gotenberg/gotenberg/security/advisories/GHSA-5q7p-7jgv-ww56"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40280"},{"type":"FIX","url":"https://github.com/gotenberg/gotenberg/commit/3f01ca18d3cc21375a1e2da4b5a3f261c8548e47"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/gotenberg/gotenberg","events":[{"introduced":"0"},{"fixed":"db51f9026d13357aecc23e3c99ba6937ac09fbfc"},{"fixed":"3f01ca18d3cc21375a1e2da4b5a3f261c8548e47"}],"database_specific":{"cpe":"cpe:2.3:a:thecodingmachine:gotenberg:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"8.31.0"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["v8.30.1","v8.30.0","v8.29.1","v8.29.0","v8.28.0","v8.27.0","v8.26.0","v8.25.1","v8.25.0","v8.24.0","v8.23.2","v8.23.1","v8.23.0","v8.22.0","v8.21.1","v8.21.0","v8.20.1","v8.20.0","v8.19.1","v8.19.0","v8.18.0","v8.17.3","v8.17.2","v8.17.1","v8.17.0","v8.16.0","v8.15.3","v8.15.2","v8.15.1","v8.15.0","v8.14.1","v8.14.0","v8.13.0","v8.12.0","v8.11.1","v8.11.0","v8.10.0","v8.9.2","v8.9.1","v8.9.0","v8.8.1","v8.8.0","v8.7.0","v8.6.0","v8.5.1","v8.5.0","v8.4.0","v8.3.0","v8.2.2","v8.2.1","v8.2.0","v8.1.0","v8.0.3","v8.0.2","v8.0.1","v8.0.0","v7.10.1","v7.10.0","v7.9.2","v7.9.1","v7.9.0","v7.8.3","v7.8.2","v7.8.1","v7.8.0","v7.7.2","v7.7.1","v7.7.0","v7.6.2","v7.6.1","v7.6.0","v7.5.4","v7.5.3","v7.5.2","v7.5.1","v7.5.0","v7.4.3","v7.4.2","v7.4.1","v7.4.0","v7.3.1","v7.3.0","v7.2.0","v7.1.1","v7.1.0","v7.0.7","v7.0.6","v7.0.5","v7.0.4","v7.0.3","v7.0.2","v7.0.1","v7.0.0","6.4.4","6.4.3","6.4.2","6.4.1","6.4.0","6.3.1","6.3.0","6.2.1","6.2.0","6.1.2","6.1.1","6.1.0","6.0.4","6.0.3","6.0.2","6.0.1","6.0.0","5.1.0","5.0.2","5.0.1","5.0.0","4.4.0","4.3.0","4.2.0","4.1.0","4.0.0","3.2.0","3.1.2","3.1.1","3.1.0","3.0.2","3.0.1","3.0.0","2.0.0","1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40280.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N"}]}