{"id":"CVE-2026-45741","summary":"Gotenberg: SSRF deny-list bypass in IsPublicIP via IPv6 6to4 / NAT64 / site-local prefixes","details":"Gotenberg is a Docker-powered stateless API for PDF files. In 8.32.0 and earlier, the IsPublicIP function in pkg/gotenberg/outbound.go does not reject the 2002::/16 6to4 prefix, the 64:ff9b::/96 and 64:ff9b:1::/48 NAT64 prefixes, the fec0::/10 deprecated site-local prefix, Teredo, and other transition prefixes that can embed or route to non-public IPv4 destinations. The addr.Unmap operation only handles IPv4-mapped IPv6 addresses, so a crafted DNS AAAA record can cause the outbound HTTP client to treat an address wrapping an internal destination such as 169.254.169.254 as public. An unauthenticated attacker can use a conversion route with WithDenyPrivateIPs enabled to reach cloud metadata services, and the Chromium URL conversion route can return the internal response as a PDF, potentially exposing cloud credentials. Exploitation requires a deployment whose host routes the relevant IPv6 prefix, such as a dual-stack or NAT64-enabled environment. This issue is fixed in version 8.33.0.","aliases":["GHSA-86m8-88fq-xfxp","GO-2026-5244"],"modified":"2026-08-21T03:46:46.428169966Z","published":"2026-08-19T14:32:50.229Z","related":["CGA-6x3p-455f-6fmm","openSUSE-SU-2026:21483-1"],"database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-184","CWE-918"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45741.json"},"references":[{"type":"WEB","url":"https://github.com/gotenberg/gotenberg/releases/tag/v8.33.0"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45741.json"},{"type":"ADVISORY","url":"https://github.com/gotenberg/gotenberg/security/advisories/GHSA-86m8-88fq-xfxp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45741"},{"type":"FIX","url":"https://github.com/gotenberg/gotenberg/commit/f9a01c9fb308372170ab7fc97b17a118ee8a125c"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/gotenberg/gotenberg","events":[{"introduced":"0"},{"fixed":"f9a01c9fb308372170ab7fc97b17a118ee8a125c"},{"fixed":"190cad0ee254974f8b14b32b29b712146d29ccfb"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"8.33.0"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["v8.32.0","v8.31.0","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-45741.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N"}]}