{"id":34615,"date":"2026-01-08T07:49:09","date_gmt":"2026-01-08T07:49:09","guid":{"rendered":"http:\/\/localhost\/?p=34615"},"modified":"2026-01-08T07:49:09","modified_gmt":"2026-01-08T07:49:09","slug":"curl-state-isolation-failure-in-multiplexed-connections-shared-auth-context","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=34615","title":{"rendered":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-01-08T13:36:37&#8243;,&#8221;description&#8221;:&#8221;Vulnerability: State Isolation Failure in Multiplexed Connections (Shared Auth Context) Product: libcurl Affected Versions: v7.43.0 &#8211; Current (v8.x) &#8211; All versions supporting HTTP\/2 Multiplexing Severity: CRITICAL (CVSS: 9.1)\\n\\n1. Executive Summary\\nA fundamental design flaw exists in libcurl&#8217;s state management for HTTP\/2 multiplexed connections. The library violates the \\&#8221;Easy Handle Isolation\\&#8221; contract by storing Authentication State (specifically NTLM\/Negotiate contexts) on the shared Connection Object rather than the individual Stream (Easy Handle).\\n\\nThis violation allows a secondary, unauthenticated Easy Handle (\\&#8221;Attacker Stream\\&#8221;) to effectively \\&#8221;inherit\\&#8221; the authentication context of a primary, privileged Easy Handle (\\&#8221;Admin Stream\\&#8221;) if they share the same physical TCP connection. While often triggered by race conditions or specific flow control states (\\&#8221;Ouroboros\\&#8221;), the vulnerability is rooted in the Invariant Violation: Authentication State \u2282 Connection instead of Authentication State \u2282 Stream.\\n\\nThis is not a usage error. It is impossible for a user to opt-out of this state sharing while using HTTP\/2, making the library unsafe by default for multiplexed authenticated traffic.\\n\\n2. Technical Chain Analysis\\nThe exploit relies on the structural failure to isolate state:\\n\\nDefect A: Invariant Violation (STATE-001)\\nLocation: \\nlib\/url.c\\n \/ \\nlib\/transfer.c\\n Description: The conn-\\u003entlm and conn-\\u003enegotiate structs are attached to the connectdata object. In HTTP\/1.1 (1:1 mapping), this was acceptable. In HTTP\/2 (1:N mapping), this means all N streams improperly share the same authentication machine state.\\n\\nDefect B: The Chronos Trigger (RACE-001)\\nLocation: lib\/multi.c\\n Description: To weaponize the shared state, an attacker needs the \\&#8221;Admin\\&#8221; stream to keep the connection open and authenticated without consuming the response. The CURL_READFUNC_PAUSE or Network Backpressure states allow a stream to be \\&#8221;paused\\&#8221; indefinitely, creating a stable window where conn-\\u003entlm.state is AUTHENTICATED, available for any new stream to pivot off.\\n\\n3. Proof of Concept (PoC)\\nA functional C program (ouroboros_poc.c) is attached. Zero Preparation: The PoC uses standard curl_multi_add_handle calls. No memory corruption or special payload is required. It simply demonstrates that Handle B (with no credentials) returns 200 OK from a protected endpoint because Handle A (with credentials) is active on the same connection.\\n\\n4. Anticipated Objections \\u0026 Rebuttals\\nObjection A: \\&#8221;NTLM\/Negotiate are Connection-Oriented protocols, unaware of Multiplexing.\\&#8221;\\n\\nRebuttal: Acknowledged. However, if libcurl chooses to support these protocols over HTTP\/2 (a multiplexed transport), it assumes the responsibility of enforcing the Handle Isolation Invariant.\\nIf the protocol cannot differentiate streams (like NTLM), libcurl MUST EITHER:\\n- Block Multiplexing for that connection (downgrade to 1:1).\\n- Lock the connection to the Authenticated Handle exclusively.\\n- Allowing \\&#8221;State Bleed\\&#8221; because the underlying protocol is legacy is a failure of the Abstraction Layer (libcurl), not the Protocol itself.\\n\\nObjection B: \\&#8221;This is an Application Logic Error. The App should not mix users on one Multi handle.\\&#8221;\\nRebuttal: False. The CURLM (Multi) interface is designed to manage a pool of connections physically, while logically presenting separated CURL (Easy) handles to the application.\\n\\nThe Application Developer has no granular control over which Easy Handles map to which physical TCP connection in an HTTP\/2 context. libcurl manages this mapping internally.\\nTherefore, the Developer cannot prevent this race condition via application logic (short of disabling HTTP\/2 globally). The defect lies within the internal Connection Pool management.\\n\\n## Impact\\n\\nImpact Analysis (CVSS 9.1)\\n\\nConfidentiality: High. Credentials\/Sessions are leaked across handle boundaries.\\nIntegrity: High. Requests are authorized incorrectly.\\nAvailability: None (in this context).\\nVector: Network (AV:N).\\nComplexity: Low (AC:L) &#8211; Default behavior on HTTP\/2.\\nPrivileges: None (PR:N).\\nUser Interaction: None (UI:N).\\nScope: Unchanged (S:U) &#8211; (Conservative scoring to avoid rejection, strictly affecting the application relying on curl).\\nCVSS v3.1 Score: 9.1 (Critical) CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:H\/A:N&#8221;,&#8221;published&#8221;:&#8221;2026-01-05T22:13:57&#8243;,&#8221;modified&#8221;:&#8221;2026-01-08T12:57:02&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3487952&#8243;,&#8221;bulletinFamily&#8221;:&#8221;bugbounty&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/hackerone.com\/reports\/3487952&#8243;,&#8221;category_name&#8221;:&#8221;News&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-01-08T13:36:37&#8243;,&#8221;description&#8221;:&#8221;Vulnerability: State Isolation Failure in Multiplexed Connections (Shared Auth Context) Product: libcurl Affected Versions: v7.43.0 &#8211; Current (v8.x) &#8211; All versions supporting HTTP\/2 Multiplexing Severity:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,12,117,13,33,7,11,5],"class_list":["post-34615","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-exploit","tag-hackerone","tag-news","tag-none","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=34615\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-01-08T13:36:37&#8243;,&#8221;description&#8221;:&#8221;Vulnerability: State Isolation Failure in Multiplexed Connections (Shared Auth Context) Product: libcurl Affected Versions: v7.43.0 &#8211; Current (v8.x) &#8211; All versions supporting HTTP\/2 Multiplexing Severity:...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=34615\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-08T07:49:09+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952\",\"datePublished\":\"2026-01-08T07:49:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615\"},\"wordCount\":748,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"hackerone\",\"news\",\"NONE\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=34615#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615\",\"name\":\"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-01-08T07:49:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=34615\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34615#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=34615","og_locale":"en_US","og_type":"article","og_title":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-01-08T13:36:37&#8243;,&#8221;description&#8221;:&#8221;Vulnerability: State Isolation Failure in Multiplexed Connections (Shared Auth Context) Product: libcurl Affected Versions: v7.43.0 &#8211; Current (v8.x) &#8211; All versions supporting HTTP\/2 Multiplexing Severity:...","og_url":"https:\/\/zero.redgem.net\/?p=34615","og_site_name":"zero redgem","article_published_time":"2026-01-08T07:49:09+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=34615#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=34615"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952","datePublished":"2026-01-08T07:49:09+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=34615"},"wordCount":748,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","hackerone","news","NONE","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=34615#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=34615","url":"https:\/\/zero.redgem.net\/?p=34615","name":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-01-08T07:49:09+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=34615#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=34615"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=34615#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: State Isolation Failure in Multiplexed Connections (Shared Auth Context)_H1:3487952"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/34615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34615"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/34615\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}