REDHAT-BUG-2509234: SSRF
A flaw was found in Dogtag PKI's ACME responder. The HTTP-01 challenge validator accepts IP address literals (e.g. 127.0.0.1) as dns identifiers without validating that the target address is public. Combined with the default Apache HttpClient behavior of following HTTP redirects, an unauthenticated ACME account holder can force the Dogtag server to send HTTP GET requests to arbitrary internal HTTP endpoints (loopback, link-local, RFC 1918, cloud metadata). When the InMemory database backend is used, the full HTTP response body of the internal target is included in the ACME challenge error and returned to the client, enabling the attacker to read internal HTTP responses. On DS/LDAP and PostgreSQL backends, the SSRF still occurs but the response body is only written to server logs, not returned to the client. The vulnerability exists because ACMEIdentifierValidator.validateSyntaxDNS() treats IP octets as valid DNS labels, ACMEPolicy.validateIdentifier() does not filter non-public addresses, and HTTP01Validator.getResponse() uses HttpClients.createDefault() which follows redirects without validating the destination address.
Affected Software
Event History
Frequently Asked Questions
What is the severity of REDHAT-BUG-2509234?
The severity of REDHAT-BUG-2509234 is classified as medium with a score of 4.
What kind of vulnerability does REDHAT-BUG-2509234 describe?
REDHAT-BUG-2509234 describes a Server-Side Request Forgery (SSRF) vulnerability in Dogtag PKI's ACME responder.
How does REDHAT-BUG-2509234 impact the security of Dogtag PKI?
REHAT-BUG-2509234 can lead to unauthorized access and data exfiltration due to the lack of validation on IP address literals.
How do I fix REDHAT-BUG-2509234?
To fix REDHAT-BUG-2509234, ensure that the ACME responder properly validates DNS identifiers to restrict IP address literals.
What is the main flaw in the Dogtag PKI ACME responder according to REDHAT-BUG-2509234?
The main flaw in the Dogtag PKI ACME responder is its acceptance of IP address literals as DNS identifiers without proper validation.