Executive brief
QD is a web framework for automating HTTP-based tasks. An unauthenticated attacker can exploit a vulnerability in the /har/test endpoint to force the QD server to make arbitrary HTTP requests to internal network resources, cloud metadata services, or other internal systems. This enables attackers to access sensitive credentials, reconnaissance of internal infrastructure, or attack internal services—all without requiring authentication or valid user credentials.
Technical details
The vulnerability is a server-side request forgery (SSRF) in the Fetcher.build_request() method within libs/fetcher.py. The /har/test HTTP endpoint constructs an httpclient.HTTPRequest from user-supplied JSON without validating the URL scheme, host, or IP address range. The vulnerable handler lacks the @authenticated decorator, allowing unauthenticated remote attackers to send requests to internal RFC1918 ranges (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16) and cloud metadata endpoints (e.g., AWS IMDSv1 at 169.254.169.254). TLS certificate verification is disabled (validate_cert=False), further facilitating attacks. Network access to the QD server on the vulnerable port is the only precondition.
Affected products
- QD 20220208 through 20250803
Timeline
- 2026-08-31: disclosed