Dozzle Pre-Auth SSRF Vulnerability via /api/notifications/test-webhook (CVE-2026-45298)
Dozzle is vulnerable to a pre-authentication Server-Side Request Forgery (SSRF) vulnerability (CVE-2026-45298) in the default no-auth deployment that can expose internal resources.
Dozzle, a real-time log viewer for Docker containers, is vulnerable to a Server-Side Request Forgery (SSRF) attack (CVE-2026-45298) via the /api/notifications/test-webhook endpoint. This endpoint is exposed without authentication in default deployments where the DOZZLE_AUTH_PROVIDER environment variable is not set. An attacker can exploit this vulnerability to send arbitrary HTTP POST requests to internal or external resources accessible from the Dozzle host. The application reflects the response body, up to 1MB, back to the attacker, enabling the retrieval of sensitive information from internal services, cloud metadata endpoints, or other reachable targets. This affects Dozzle version 8.14.12 and earlier.
Attack Chain
- An attacker identifies a Dozzle instance running with the default no-authentication configuration.
- The attacker crafts a malicious HTTP POST request to the
/api/notifications/test-webhookendpoint. - The request body includes a JSON payload containing the
urlparameter, which specifies the target URL for the SSRF attack. Theheadersparameter can be used to inject arbitrary headers into the outgoing request. - The Dozzle server receives the request and, due to the lack of authentication, processes the request without validation.
- The
WebhookDispatchercreates an HTTP POST request to the attacker-specified URL, including the attacker-provided headers. - The Dozzle server sends the crafted HTTP request to the target URL.
- If the target URL responds with a non-2xx status code, the server reads up to 1MB of the response body.
- The server includes the status code and the response body in the JSON response to the attacker, exposing sensitive information.
Impact
Successful exploitation allows an attacker to read data from internal services, potentially exposing sensitive information such as configuration details, API keys, or internal documents. It also allows probing for the existence of internal resources and potentially injecting headers into requests to internal services. This can lead to further compromise of internal systems.
Recommendation
- Refuse
test-webhookrequests whenAuthorization.Provideris set toNONE. - Implement SSRF hardening for
WebhookDispatcherby validating and sanitizing the input URL, resolving the host IP address vianet.LookupIP, refusing private, loopback, link-local, and CGNAT addresses, pinning thehttp.Transport.DialContextto the resolved IP address, and refusing non-HTTP(S) schemes, as suggested in the advisory. - Disable the reflection of the response body in the
testWebhookhandler. Modify the handler to only return theSuccessboolean andStatusCodeinteger values, as suggested in the advisory. - Monitor web server logs for POST requests to the
/api/notifications/test-webhookendpoint with suspicious URLs (internal IPs, cloud metadata endpoints) in the request body and deploy the Sigma ruleDetect Dozzle SSRF Attempt via test-webhookto identify exploitation attempts.
Detection coverage 2
Detect Dozzle SSRF Attempt via test-webhook
highDetects CVE-2026-45298 exploitation — attempts to exploit the Dozzle SSRF vulnerability by sending POST requests to the /api/notifications/test-webhook endpoint with potentially malicious URLs in the request body.
Detect Dozzle test-webhook with suspicious headers
mediumDetects CVE-2026-45298 exploitation — attempts to exploit the Dozzle SSRF vulnerability by sending POST requests to the /api/notifications/test-webhook endpoint with suspicious headers to inject into the downstream request
Detection queries are available on the platform. Get full rules →
Indicators of compromise
1
url
| Type | Value |
|---|---|
| url | http://169.254.169.254/latest/meta-data/iam/security-credentials/ |