ZeroHour

CVE-2026-91992

niche

Credential Leak in Tornado CurlAsyncHTTPClient via Reused pycurl Handles (<6.5.7)

CVSS 4.0
8.2 high
EPSS
Published
()
Modified
AI analysis

Tornado versions before 6.5.7 reuse pycurl handles across requests in CurlAsyncHTTPClient without properly clearing per-request state. An attacker who can cause the application to issue an attacker-influenced request through the same shared client instance can inherit TLS client certificates or proxy authentication configured for earlier requests. This leaks sensitive credentials to destinations that were never intended to receive them, for example routing traffic with private client certs through an attacker-controlled or untrusted proxy. Applications are affected only if they opt into the curl-based HTTP client and share a single client instance across requests with different trust levels. No public proof-of-concept exists and the flaw is not in CISA's KEV catalog, so exploitation is presumed absent at this time.

What to do: Upgrade Tornado to 6.5.7 or later, which clears handle state between requests. If you cannot upgrade, switch to the default SimpleAsyncHTTPClient or ensure a single CurlAsyncHTTPClient instance is never shared across requests targeting different trust domains. Review outbound request logs and proxy configurations for evidence of client certificates or proxy credentials being sent to unintended destinations.

Affected
Tornado (Bedstead/Python Tornado project) Tornado (tornado.curl_httpclient.CurlAsyncHTTPClient)before 6.5.7
Estimated exposure
nicheunknown; Tornado is widely deployed (millions of monthly PyPI downloads), but CurlAsyncHTTPClient is a non-default, opt-in client used by only a small subset… — The default Tornado HTTP client is SimpleAsyncHTTPClient, so the vulnerable code path requires explicitly configuring CurlAsyncHTTPClient (with pycurl/curl_cffi installed) alongside client certificates or proxy auth, which is an uncommon…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Tornado before 6.5.7 contains a credential leak vulnerability in CurlAsyncHTTPClient where pycurl handles are reused across requests without proper state clearing. Attackers can obtain sensitive credentials by issuing requests through the same client instance, allowing TLS certificates or proxy authentication to persist across unintended requests.

Weakness
CWE-200
Vector
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.