CVE-2026-80229
Executive Summary
CVE-2026-80229 is a heap-use-after-free (CWE-416) in Haxx libcurl's multi interface affecting OpenSSL 3 provider configurations, where a TLS library context attached to an easy handle is not reference-counted and is freed while still in use by a pooled connection. The flaw is remotely triggerable over the network with no authentication or user interaction (CVSS 3.1 base 7.5, AV:N/AC:L/PR:N/UI:N), producing a high availability impact. Any application, service, or appliance that uses libcurl's multi interface for concurrent TLS transfers against OpenSSL 3 backends is potentially exposed; exploitation yields process crashes and denial of service, with no demonstrated confidentiality or integrity impact.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability resides in libcurl's connection lifecycle management when using the multi interface alongside OpenSSL 3 in a "provider" configuration. The NVD description states that pooled TLS connections can outlive their originating easy handles. In such configurations, libcurl "attaches an allocated library context to the easy handle's state and passes it to OpenSSL without acquiring an ownership reference."
This is a lifetime-management defect rather than a memory-corruption-by-overflow bug. The library context is heap-allocated and associated with a specific easy handle's state, then handed to OpenSSL. Because libcurl does not take an ownership reference (i.e., does not increment a reference count or otherwise register its ownership), destroying the easy handle prematurely frees the context. The underlying TLS connection remains pooled and active, however, and continues to hold a dangling pointer to the freed library context.
The failure surfaces later: "upon subsequent I/O or post-handshake operations," the active connection dereferences the dangling pointer, resulting in a heap-use-after-free (CWE-416). The specific OpenSSL 3 API entry point, the exact structure member names, and the precise call site are not enumerated in the provided description and should not be assumed. What is verifiable is the class of defect: an object is freed while a live reference to it persists, and later use of that reference triggers undefined behavior.
The concurrency model is central to the attack surface. The multi interface is designed for multiplexed, concurrent transfers, and connection pooling is precisely what allows a connection established by one easy handle to be reused after that handle is torn down. The use-after-free window is therefore the interval between (a) destruction of the easy handle that owned the library context, and (b) the next I/O or post-handshake operation on the surviving pooled TLS connection. That window is not instantaneous — it depends on transfer scheduling and connection reuse timing — which has two consequences: the bug is inherently timing-dependent (non-deterministic, making reliable exploitation harder and increasing the likelihood of sporadic crashes in production), and it is most reproducible under high concurrency with TLS session reuse.
The OpenSSL 3 provider qualifier is significant. The flaw does not manifest in every libcurl deployment; it requires the OpenSSL 3 provider-based configuration path to be active. This narrows the affected population but does not eliminate it — OpenSSL 3 is the default cryptographic backend on most modern enterprise Linux distributions, making this configuration common in practice even if not universal.
Root cause can be summarized as a missing ownership/lifetime guarantee at the boundary between libcurl's easy-handle state machine and OpenSSL's library context abstraction. Reference-counted or scope-bound ownership of the context, tied to the connection rather than the easy handle, would prevent the premature free.
Exploitation Scenarios
No public exploit code or Nuclei template accompanies the supplied data; the NVD description, CVSS vector, and Public PoC status are the basis for the following vulnerability-class analysis. Attack chain is inferred from the vulnerability class and the stated mechanism, not from a published exploit.
1) Reconnaissance and target identification. An adversary first identifies a network-facing service that performs TLS transfers using libcurl's multi interface with an OpenSSL 3 provider backend. Candidate targets include web proxies, API gateways, download/update services, mail or messaging relays, and embedded appliance software that internally drives concurrent HTTPS requests. Because the defect is in a widely linked library, the attacker need not know the application's internals — only that it will make TLS requests on the attacker's behalf. Shodan-style fingerprints for curl-derived services and TLS endpoints can narrow the search, though in many cases the vulnerable libcurl is an embedded dependency rather than a self-identifying service.
2) Triggering the flaw class. The attacker supplies input that causes the target to initiate TLS connections repeatedly and concurrently over the multi interface, and to let those connections enter the connection pool while short-lived easy handles are created and destroyed. The attacker does not need privileged access — the trigger is ordinary request traffic (AV:N, PR:N, UI:N). The essential requirement is provoking a lifecycle sequence in which an easy handle is destroyed while a pooled TLS connection established under it remains active and is later reused. Repeated HTTP/2 or HTTPS requests, connection churn, and rapid reuse of sessions are the natural levers for widening the use-after-free window.
3) Execution method at the vulnerability-class level. There is no payload in the classic sense. The "payload" is the traffic pattern: sustained concurrent TLS request traffic that forces connection-pool reuse after the originating easy handle has been freed. When the surviving connection performs subsequent I/O or post-handshake operations, it dereferences the freed library context. Because the freed memory may have been reallocated with attacker-influenced data, the dereference could in principle be steered, but the description supports only a use-after-free outcome — not a proven code-execution primitive. Attackers should be assumed to be seeking reliable crash triggers rather than RCE.
4) Post-exploitation impact. The immediate and well-supported consequence is a crash of the process hosting libcurl, i.e., denial of service (CVSS A:H). Repeated triggering produces sustained unavailability. Because the freed context relates to TLS state, an attempt to reuse freed memory could lead to undefined behavior beyond a simple crash, but the supplied data provides no evidence of confidentiality or integrity compromise, and the CVSS vector reflects that (C:N/I:N). The defect may also grant a foothold for further exploitation if the attacker can influence heap layout, but this is speculative and not supported by the provided description.
Impact Assessment
The CVSS 3.1 base score is 7.5 (High) with vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. Interpretation:
- AV:N — exploitable across a network; no local or adjacent access required.
- AC:L — no unusual conditions beyond reachability; although the use-after-free is timing-dependent, the vector reflects that the configuration requirement (multi interface + OpenSSL 3 provider) is not treated as a mitigating complexity factor.
- PR:N / UI:N — no privileges and no user interaction needed.
- S:U — impact is confined to the vulnerable component (the libcurl-hosting process), not broader system scope.
- C:N / I:N — the description provides no basis for data disclosure or tampering.
- A:H — the confirmed impact is high availability loss: process termination and service outage.
EPSS is 0.00610 (47.2nd percentile), indicating that as of scoring, large-scale automated exploitation is not observed — consistent with a timing-sensitive use-after-free that resists trivial weaponization. CISA KEV status is NO, meaning no confirmed exploitation in the wild. Blast radius is nonetheless meaningful: libcurl is one of the most widely embedded transfer libraries in existence, and OpenSSL 3 is the default cryptographic provider on current mainstream Linux distributions. Any internet- or network-facing service that drives concurrent TLS transfers through the multi interface can be taken down repeatedly. A single application may spawn many workers or threads; a crash can therefore cascade within a deployment even if each crash is isolated to one process.
Detection Guidance
Sigma Rule
title: Possible libcurl Heap-Use-After-Free Crash (CVE-2026-80229)
id: 8f2a1c74-3b6e-4d19-9a5c-77e0c1b2a9f3
status: experimental
description: Detects abnormal termination of processes that link libcurl and perform
concurrent TLS transfers, consistent with the use-after-free crash described in
CVE-2026-80229. Correlate with multi-interface TLS workloads.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-80229
author: valtersit.com
date: 2026/01/01
logsource:
category: process_creation
product: linux
detection:
selection_proc:
Image|endswith:
- '/curl'
- '/libcurl'
CommandLine|contains:
- '-Z'
- '--parallel'
- '--http2'
condition: selection_proc
level: low
falsepositives:
- Legitimate use of curl parallel mode and HTTP/2 transfers
tags:
- attack.t1499
- cve.2026.80229
YARA Rule
rule CVE_2026_80229_libcurl_openssl3_uaf
{
meta:
description = "Detects libcurl binaries that reference OpenSSL 3 provider context handling; heuristic indicator for environments potentially affected by CVE-2026-80229"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-80229"
date = "2026-01-01"
cve = "CVE-2026-80229"
severity = "high"
strings:
$libcurl = "libcurl" ascii
$vers = "libcurl/" ascii
$openssl = "OpenSSL 3" ascii
$provider = "OSSL_PROVIDER" ascii
$multi1 = "curl_multi_" ascii
$sslctx = "SSL_CTX" ascii
condition:
uint16(0) == 0x457f and
filesize < 20MB and
$libcurl and
($openssl or $provider) and
($multi1 or $sslctx)
}
Suricata IDS Rule
alert tcp any any -> any 443 (
msg:"CVE-2026-80229 Possible libcurl multi-interface TLS connection reuse crash attempt";
flow:established,to_server;
content:"|16 03|"; depth:3;
threshold:type both, track by_src, count 60, seconds 10;
classtype:attempted-dos;
reference:cve,2026-80229;
reference:url,nvd.nist.gov/vuln/detail/CVE-2026-80229;
sid:202680229;
rev:1;
metadata:affected_product libcurl, attack_target Server, created_at 2026_01_01;
)
Elastic Detection
process where event.action == "end" and process.exit_code != 0 and
process.name in ("curl", "php-fpm", "nginx", "apache2", "haproxy") and
process.command_line : ("*--parallel*", "*--http2*", "*-Z*")
Splunk SPL Query
index=linux OR index=endpoint sourcetype=syslog OR sourcetype=auditd
(process_name=curl OR process_name=php-fpm OR process_name=nginx)
(exit_code!=0 OR signal="SIGSEGV" OR signal="SIGABRT" OR "segfault")
| stats count by host, process_name, exit_code, signal
| where count >= 5
Wazuh OSSEC Rule
<group name="cve-2026-80229,libcurl,">
<rule id="100829" level="7">
<if_sid>1000</if_sid>
<program_name>curl|php-fpm|nginx</program_name>
<match>segfault|SIGSEGV|SIGABRT|core dumped</match>
<description>CVE-2026-80229: Possible libcurl heap-use-after-free crash in a curl-linked process</description>
<mitre>
<id>T1499</id>
</mitre>
<group>dos,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 3/4 (LIKELY — 2 independent sources confirm fix). Both NVD and the Debian security tracker reference a fix; an explicit fixed version string was not present in the supplied intelligence, so the current vendor advisory must be consulted for the exact release.
1) Immediate mitigations. Because the crash requires the multi interface with an OpenSSL 3 provider configuration, the fastest interim mitigation is to reduce the trigger surface:
- Constrain connection reuse and concurrency in affected services (fewer pooled TLS connections, shorter keep-alive, lower parallelism) to shrink the use-after-free window.
- Where operationally feasible, configure libcurl to use a different TLS backend (e.g., an affected OpenSSL 3 provider path is the trigger; alternative backends avoid the flawed lifetime path).
- Add process supervision (systemd
Restart=always, or an equivalent) so a crash triggers automatic recovery, limiting outage duration. - Rate-limit or front-end the multi-transfer workload to reduce the opportunity for repeated triggering.
2) Patch/upgrade steps.
- Identify all binaries and containers that link libcurl and confirm whether they were built against OpenSSL 3 in a provider configuration.
- Apply the fixed libcurl release from the vendor advisory. On Debian and derivatives, update via the distribution security tracker tracking this CVE (Debian is listed as a confirming source).
- Rebuild statically linked applications and refresh container base images — distribution package updates alone will not fix statically embedded libcurl.
- Restart dependent services after patching so the corrected library is loaded.
3) Long-term hardening.
- Maintain an SBOM and automated dependency tracking to detect embedded libcurl and OpenSSL versions across applications and appliances.
- Monitor the curl security advisories feed and OpenSSL security advisories on a standing basis; subscribe to the Debian security tracker for the relevant suite.
- Enforce cryptographic backend version policies and test TLS backend upgrades in staging before production rollout.
- Fuzz and stress-test TLS connection-pool lifecycle paths (easy-handle create/destroy against pooled connections) as part of CI to catch lifetime defects before release.
References
- NVD — CVE-2026-80229: https://nvd.nist.gov/vuln/detail/CVE-2026-80229
- Haxx / curl security advisories: https://curl.se/docs/security.html
- CWE-416 Use After Free: https://cwe.mitre.org/data/definitions/416.html
- Debian Security Tracker — CVE-2026-80229: https://security-tracker.debian.org/tracker/CVE-2026-80229
- CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Threat actor campaigns / exploit-in-the-wild evidence: None reported. CISA KEV status is NO; EPSS is 0.00610 (47.2nd percentile), indicating no observed mass exploitation as of scoring. PoC status is Public, but no public exploit code or Nuclei template is associated in the supplied data.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.