CVE-2026-45741
Received Received - Intake

Outbound IPv6 Address Spoofing in Gotenberg

Vulnerability report for CVE-2026-45741, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-08-19

Last updated on: 2026-08-19

Assigner: GitHub, Inc.

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-08-19
Last Modified
2026-08-19
Generated
2026-08-19
AI Q&A
2026-08-19
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Currently, no data is known.

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-184 The product implements a protection mechanism that relies on a list of inputs (or properties of inputs) that are not allowed by policy or otherwise require other action to neutralize before additional processing takes place, but the list is incomplete.
CWE-918 The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a Server-Side Request Forgery (SSRF) bypass in Gotenberg, a document conversion tool. The IsPublicIP function incorrectly classifies certain IPv6 addresses as public when they should be blocked. Attackers can craft DNS AAAA records embedding internal IPv4 addresses like 169.254.169.254 (cloud metadata services). The kernel routes these to internal destinations, bypassing IP-based restrictions even with WithDenyPrivateIPs enabled.

Detection Guidance

To detect this vulnerability, check if your Gotenberg instance is running version 8.32.0 or earlier. Use the command: docker ps --format '{{.Image}}' | grep gotenberg/gotenberg. If the version is <=8.32.0, the system is vulnerable. Additionally, monitor outbound requests to internal services like cloud metadata endpoints (e.g., 169.254.169.254).

Inspect DNS AAAA records for crafted IPv6 addresses embedding internal IPv4 destinations. Use tools like dig or nslookup to query DNS records for domains used in requests.

Impact Analysis

An unauthenticated attacker could access internal services like cloud metadata endpoints (e.g., AWS IMDS) and potentially leak IAM credentials. This is possible if the host routes relevant IPv6 prefixes, such as in dual-stack or NAT64 environments. The Chromium URL conversion route may return internal responses as PDFs, exposing sensitive data.

Compliance Impact

This vulnerability could lead to unauthorized access to internal cloud metadata services (e.g., AWS IMDS) via SSRF, potentially exposing sensitive credentials. Such breaches may violate GDPR's data protection principles (e.g., integrity and confidentiality) and HIPAA's safeguards for protected health information, depending on the data accessed.

Mitigation Strategies

Upgrade Gotenberg to version 8.33.0 or later immediately. This version includes patches to block the problematic IPv6 prefixes. Use the command: docker pull gotenberg/gotenberg:8.33.0.

If upgrading is not immediately possible, disable outbound HTTP requests or restrict access to internal services via network policies. Ensure WithDenyPrivateIPs(true) is enabled and verify it blocks the affected IPv6 ranges.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-45741. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart