CVE-2026-9545: libcurl HTTP/3 SSL Session Early Data Confidentiality Leak
CVE-2026-9545 is a flaw in libcurl that can leak sensitive data when making HTTPS requests to servers after a connection has been compromised or replaced by an attacker. The vulnerability occurs because libcurl may transmit request data before fully validating the server's certificate if certain caching and optimization features are enabled. An attacker who can intercept network traffic—such as one positioned on the same network or controlling network infrastructure—could position themselves between the client and server, and libcurl would send sensitive information before detecting the fraudulent certificate.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- —
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-07-03 / 2026-07-07
NVD description (verbatim)
In this scenario, libcurl first uses a proper HTTP/3 server for the initial transfers, and when it makes a second transfer to the same site it has been replaced by the attacker's impostor machine - without a valid certificate. When libcurl returns to the hostname the second time with a cached SSL session (`CURLOPT_SSL_SESSIONID_CACHE` is not disabled) and early data enabled (the `CURLSSLOPT_EARLYDATA` bit is set in `CURLOPT_SSL_OPTIONS`), libcurl might send off the second request's bytes on that new connection *before* enforcing the certificate verification failure. Potentially leaking sensitive information.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from a race condition in libcurl's HTTP/3 implementation when handling SSL session resumption with early data transmission (0-RTT). When CURLOPT_SSL_SESSIONID_CACHE is enabled (the default) and the CURLSSLOPT_EARLYDATA flag is set in CURLOPT_SSL_OPTIONS, libcurl will transmit the client's request bytes on a new connection before completing certificate verification. In the attack scenario described, an attacker can replace a legitimate HTTP/3 server with an impostor machine lacking a valid certificate. Because the client has cached the previous SSL session, libcurl attempts session resumption and sends early data—application-layer bytes—before the certificate validation check executes. This allows the attacker to observe or intercept the sensitive information being transmitted. The flaw is rooted in the order of operations: early data dispatch occurs before the SSL/TLS handshake completes and certificate verification is enforced.
Business impact
For organizations using libcurl in client-side applications—including integrated library usage in tools, automation frameworks, and software development kits—this vulnerability could result in credential theft, API key exposure, or transmission of confidential request data to an attacker. The risk is amplified in environments where HTTPS is assumed to provide end-to-end confidentiality. Developers who have explicitly enabled early data transmission to optimize performance are at higher risk. Depending on the application's purpose and data sensitivity, a breach could lead to unauthorized access to downstream systems, compliance violations, or lateral movement within trusted networks. The fact that cached sessions are involved suggests that the vulnerability manifests during repeated connections, potentially affecting long-running services or batch processing workflows.
Affected systems
libcurl versions that support HTTP/3 and contain the SSL session caching and early data features are affected. The vulnerability requires specific configuration: CURLOPT_SSL_SESSIONID_CACHE must be enabled (which is the default), and CURLOPT_SSL_OPTIONS must have the CURLSSLOPT_EARLYDATA bit set. Applications are only at risk if they have explicitly enabled early data transmission; however, verify the exact affected version range and which libcurl deployments in your environment meet both conditions.
Exploitability
The attack requires a network-level capability: the attacker must be able to intercept and position themselves between the client and server. This could be achieved through ARP spoofing, DNS hijacking, BGP hijacking, or compromised network infrastructure on shared networks (Wi-Fi, ISP level, or cloud environments). The attacker does not require authentication or user interaction. The vulnerability is easier to exploit in environments with less mature network security or on open networks. However, the prerequisites—network positioning and the need for the application to have cached the legitimate session—narrow the threat to specific operational contexts rather than making it a universal remote code execution risk.
Remediation
Update libcurl to a patched version that addresses the SSL session resumption and early data handling. Verify against the vendor advisory for specific patched version numbers. As interim measures, disable early data transmission by not setting the CURLSSLOPT_EARLYDATA flag in CURLOPT_SSL_OPTIONS if performance allows, or disable SSL session caching by setting CURLOPT_SSL_SESSIONID_CACHE to 0 (though this reduces performance). Applications should prefer HTTPS pinning or certificate pinning where feasible to prevent man-in-the-middle attacks from fraudulent certificates. Network segmentation and encrypted tunnels (VPN, corporate proxies) reduce the attacker's ability to position themselves on the path.
Patch guidance
Apply the latest libcurl version released after 2026-07-03 that resolves this issue. Consult the official curl security advisory and release notes to confirm the patched version number. If your application statically links libcurl, recompile after updating. If libcurl is installed system-wide, update via your operating system's package manager or by building from source. Test patched versions in a development environment to ensure compatibility with your application's HTTP/3 usage patterns. Consider phased rollout in production if early data transmission is critical to performance. Monitor vendor communications for any follow-up patches or related issues.
Detection guidance
Look for libcurl processes or libraries in use within your environment and identify which versions are deployed using software inventory tools or package managers. Audit application source code and configuration for use of CURLOPT_SSL_EARLYDATA; enable logging of TLS handshake failures and certificate validation errors to spot potential attack attempts. Network intrusion detection systems should flag repeated connections to the same hostname followed by certificate verification failures, as this pattern matches the attack scenario. If you have the ability to monitor TLS session caches, unusual cache hits combined with certificate mismatches warrant investigation. Consider test connections to verify that certificate validation occurs before request data transmission.
Why prioritize this
This is rated HIGH severity (CVSS 7.5) because it enables direct confidentiality breaches under realistic network conditions. The vulnerability does not require patching a user's computer or exploiting memory corruption; instead, it exploits a logical flaw in protocol sequencing. The attack is passive from the client's perspective—no user action is needed. However, it is not rated CRITICAL because it requires network-level positioning, specific application configuration, and prior connection history. Organizations with strict network perimeter controls and those avoiding early data optimization are lower risk. This should be prioritized above less-exploitable flaws but may rank below vulnerabilities affecting default configurations or requiring only passive network observation.
Risk score, explained
CVSS 3.1 score of 7.5 reflects: Attack Vector Network (no physical access required), Attack Complexity Low (no special conditions beyond network positioning), Privileges Required None, User Interaction None, and Scope Unchanged with High Confidentiality Impact. There is no integrity or availability impact from the vulnerability itself—the attacker cannot modify responses or cause denial of service—hence the score does not reflect those dimensions. The score appropriately penalizes a confidentiality-only breach that can occur passively and at scale across networked applications.
Frequently asked questions
Do I need to update libcurl if I have not explicitly enabled early data (CURLSSLOPT_EARLYDATA)?
The vulnerability requires both SSL session caching (which is on by default) and early data transmission to be enabled. If you have not set the CURLSSLOPT_EARLYDATA flag, your application is not vulnerable via this specific flaw. However, update proactively as a best practice to receive security fixes and stay current. Verify your configuration if you are uncertain.
Can an attacker exploit this vulnerability from the internet, or do they need to be on my local network?
The attacker must be positioned between your client and the server on the network path—this typically requires local network access (ARP spoofing on Wi-Fi), ISP-level control, or compromise of network infrastructure. A remote attacker cannot exploit this across the public internet without first compromising routing or DNS. However, the bar for 'network positioning' is lower on shared networks, cloud environments, or poorly secured infrastructure.
Does this vulnerability expose cached credentials or only request bodies?
The vulnerability leaks 'early data'—the bytes of the HTTP request transmitted before certificate verification is enforced. This includes request headers, body content, query parameters, and any authentication tokens or sensitive data embedded in the request itself. Cached session identifiers or cookies may also be included depending on application behavior.
If I use libcurl in a tool that only connects to my own internal servers, should I still prioritize this patch?
Yes. Even internal connections are at risk if your network has been compromised or if an attacker can spoof the server (via DNS hijacking, ARP spoofing, or malicious network device). Additionally, assuming 'internal' is safe can create a false sense of security. Patch promptly regardless of trust assumptions about your network.
This analysis is based on the published CVE record and vendor advisory as of the modification date 2026-07-07. Specific affected version numbers and patch versions should be verified against the official curl security page and vendor advisories before patching. SEC.co makes no warranty about the completeness or accuracy of this summary. Organizations should conduct their own risk assessment based on their specific libcurl deployments and network architecture. This explainer is for informational purposes and does not constitute professional security advice or a substitute for formal vulnerability assessment. Always validate patch compatibility in a test environment before production deployment. Source: NVD (public-domain), retrieved 2026-08-11. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2026-11352HIGHcurl QUIC DoS Vulnerability – Remote Client Stall
- CVE-2026-11586HIGHcurl WebSocket Memory Exhaustion Denial-of-Service
- CVE-2026-12064HIGHcurl SSH Host Verification Bypass with Schemeless URLs
- CVE-2026-8286HIGHcurl STARTTLS Connection Reuse Vulnerability (High Severity)
- CVE-2026-8932HIGHlibcurl mTLS Connection Reuse Vulnerability (CVSS 7.5)
- CVE-2026-9080HIGHlibcurl Use-After-Free in Socket Callback (CVSS 7.3)
- CVE-2026-9546HIGHlibcurl HTTP Referer Header Leak Vulnerability
- CVE-2026-9547HIGHlibcurl SSH Host Key Type Validation Bypass