When performing transfers via libcurl’s multi interface, pooled TLS connections can outlive their originating easy handles. In OpenSSL 3 provider configurations, libcurl attaches an allocated library context to the easy handle's state and passes it to OpenSSL without acquiring an ownership reference; destroying the easy handle prematurely frees this context while the active connection retains a dangling pointer, leading to a heap-use-after-free upon subsequent I/O or post-handshake operations.
{
"issue": "https://hackerone.com/reports/3969255",
"affects": "both",
"last_affected": "8.21.0",
"package": "curl",
"CWE": {
"desc": "Use After Free",
"id": "CWE-416"
},
"URL": "https://curl.se/docs/CVE-2026-80229.json",
"severity": "Low",
"www": "https://curl.se/docs/CVE-2026-80229.html"
}"2026-09-02T14:00:20Z"
"https://curl.se/docs/CURL-CVE-2026-80229.json"
[
{
"signature_type": "Line",
"id": "CURL-CVE-2026-80229-49021c9f",
"signature_version": "v1",
"source": "https://github.com/curl/curl.git/commit/7ea37abc6ac0120ba5f6d94be8d196f7cf1506bb",
"deprecated": false,
"digest": {
"threshold": 0.9,
"line_hashes": [
"286481243370392075526062118659509114348",
"196216237767420629426097604457509099271",
"68125101134514249852390309734181512406",
"31227070220736528463295638619520929314"
]
},
"target": {
"file": "lib/vtls/openssl.c"
}
},
{
"signature_type": "Function",
"id": "CURL-CVE-2026-80229-74875d56",
"signature_version": "v1",
"source": "https://github.com/curl/curl.git/commit/7ea37abc6ac0120ba5f6d94be8d196f7cf1506bb",
"deprecated": false,
"digest": {
"function_hash": "93812128733312520413839406253910216274",
"length": 4945.0
},
"target": {
"function": "Curl_ossl_ctx_init",
"file": "lib/vtls/openssl.c"
}
}
]