{"id":"CVE-2026-12708","kind":"vulnerability","aliases":["CVE-2026-12708"],"related":[],"title":"tokio-quiche: unbounded per-flow state lets a peer exhaust memory","description":"Summary\n\n\nCloudflare tokio-quiche was found to contain an uncontrolled resource consumption vulnerability in its HTTP/3 DATAGRAM handling. For every previously unseen flow identifier (quarter stream ID) received in a DATAGRAM frame, tokio-quiche creates and retains new, per-flow state. A remote peer can send DATAGRAMs with many distinct identifiers, causing the per-connection flow map and associated channel state to grow without bound.\n\nImpact\n\n\nExploitation can exhaust process memory and cause a denial of service. The vulnerable code is used in both client and server configurations, so either role can be affected by a malicious peer. QUIC DATAGRAM support in tokio-quiche is enabled by default through QuicSettings::enable_dgram; applications can disable it by setting this field to false. The vulnerable HTTP/3 path is reachable only when DATAGRAM support is negotiated with the peer. Core quiche and HTTP/3 deployments without DATAGRAM support are not affected. \n\n\n\n\n\n\nMitigation\n\n\nDisable DATAGRAMs in tokio-quiche’s QuicSettings::enable_dgram.\n\n\n\n\n\n\nRemediation\n\n\nUpgrade to tokio-quiche version 0.23.0 or later. The fixed code creates flow state only for valid DATAGRAM-capable request streams, which are bounded by QUIC’s stream limits. To tolerate packet reordering, servers retain early DATAGRAMs in a bounded, expiring buffer, while clients discard DATAGRAMs for unknown flows.","summary":"tokio-quiche creates new retained state for every new flow identifier in incoming HTTP/3 DATAGRAM frames, with no limit. A remote peer that sends DATAGRAMs with many distinct identifiers can grow memory until the process runs out and denies service.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["http3","package","quic","rust","self-hosted","tokio-quiche"],"not_affected_if":["core-quiche-only","dgram-disabled","no-http3"],"how_to_check":"- Check the tokio-quiche version in Cargo.lock; versions below `0.23.0` are affected.\n- Check whether `QuicSettings::enable_dgram` is left at its default (enabled) in your configuration.","fix":"- tokio-quiche: upgrade to `0.23.0` or later.\n- Until upgraded, set `QuicSettings::enable_dgram` to `false` (per the vendor's mitigation).","status":"open","published_at":"2026-11-10T14:17:29+00:00","first_seen_at":"2026-11-10T14:22:20+00:00","triaged_at":"2026-11-10T14:23:52+00:00","updated_at":"2026-11-10T14:23:52+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-10T14:23:52Z","model":"claude-haiku-5-5","output":{"fix":"- tokio-quiche: upgrade to `0.23.0` or later.\n- Until upgraded, set `QuicSettings::enable_dgram` to `false` (per the vendor's mitigation).","reach":"internet","title":"tokio-quiche: unbounded per-flow state lets a peer exhaust memory","impact":"medium","summary":"tokio-quiche creates new retained state for every new flow identifier in incoming HTTP/3 DATAGRAM frames, with no limit. A remote peer that sends DATAGRAMs with many distinct identifiers can grow memory until the process runs out and denies service.","audience":"developers","category":"package","nicknames":[],"who_cares":["rust","tokio-quiche","http3","quic","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"remote peer exhausts process memory, causing denial of service","analyst_note":"","how_to_check":"- Check the tokio-quiche version in Cargo.lock; versions below `0.23.0` are affected.\n- Check whether `QuicSettings::enable_dgram` is left at its default (enabled) in your configuration.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["dgram-disabled","core-quiche-only","no-http3"],"who_is_affected":"Applications built on tokio-quiche that serve or accept HTTP/3 connections, as client or server, with DATAGRAM support negotiated. Core quiche and HTTP/3 deployments without DATAGRAM support are not affected, and DATAGRAMs are enabled by default in tokio-quiche.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000797,"input_tokens":4989,"output_tokens":596,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-12708':16A,19A '-2026':15A,18A '0.23.0':242C 'affect':168C,223C 'applic':188C 'associ':133C 'bound':139C,261C,277C 'buffer':279C 'capabl':256C 'caus':125C,147C 'channel':134C 'client':159C,281C 'cloudflar':72C 'code':154C,247C 'configur':162C 'connect':129C 'consumpt':83C 'contain':79C 'core':213C 'creat':33B,107C,248C 'cve':14A,17A 'datagram':45B,55B,88C,102C,120C,174C,206C,219C,226C,255C,274C,283C 'datagram-cap':254C 'default':183C 'deni':69B 'denial':149C 'deploy':217C 'dgram':187C,234C 'disabl':190C,225C 'discard':282C 'distinct':58B,123C 'earli':273C 'either':164C 'enabl':181C,186C,233C 'everi':38B,91C 'exhaust':12A,143C 'expir':278C 'exploit':141C 'fals':197C 'field':195C 'fix':246C 'flow':7A,40B,94C,113C,130C,249C,286C 'found':77C 'frame':46B,103C 'grow':61B,137C 'handl':89C 'host':26B 'http/3':44B,87C,200C,216C 'http3':20B 'id':98C 'identifi':41B,59B,95C,124C 'impact':140C 'incom':43B 'later':244C 'let':9A 'limit':49B,266C 'malici':171C 'mani':57B,122C 'map':131C 'memori':13A,62B,145C 'mitig':224C 'negoti':209C 'new':34B,39B,110C 'packag':21B 'packet':269C 'path':201C 'peer':11A,52B,117C,172C,212C 'per':6A,112C,128C 'per-connect':127C 'per-flow':5A,111C 'previous':92C 'process':65B,144C 'quarter':96C 'quic':22B,173C,263C 'quich':3A,29B,32B,75C,106C,179C,214C,230C,240C 'quicset':185C,232C 'reachabl':203C 'receiv':99C 'remedi':235C 'remot':51B,116C 'reorder':270C 'request':257C 'resourc':82C 'retain':35B,109C,272C 'role':165C 'run':66B 'rust':23B 'self':25B 'self-host':24B 'send':54B,119C 'server':161C,271C 'servic':70B,151C 'set':193C 'state':8A,36B,114C,135C,250C 'stream':97C,258C,265C 'summari':71C 'support':175C,207C,220C 'tokio':2A,28B,31B,74C,105C,178C,229C,239C 'tokio-quich':1A,27B,30B,73C,104C,177C,228C,238C 'toler':268C 'unbound':4A 'uncontrol':81C 'unknown':285C 'unseen':93C 'upgrad':236C 'use':156C 'valid':253C 'version':241C 'vulner':84C,153C,199C 'without':138C,218C","nicknames":[],"mitigations":[],"who_affected":"Applications built on tokio-quiche that serve or accept HTTP/3 connections, as client or server, with DATAGRAM support negotiated. Core quiche and HTTP/3 deployments without DATAGRAM support are not affected, and DATAGRAMs are enabled by default in tokio-quiche.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","http3","package","quic","rust","selfhosted","tokioquiche"],"campaign_type":null,"search_a":"'-12708':16A,19A '-2026':15A,18A 'cve':14A,17A 'exhaust':12A 'flow':7A 'let':9A 'memori':13A 'peer':11A 'per':6A 'per-flow':5A 'quich':3A 'state':8A 'tokio':2A 'tokio-quich':1A 'unbound':4A","search_b":"'creat':33B 'datagram':45B,55B 'deni':69B 'distinct':58B 'everi':38B 'flow':40B 'frame':46B 'grow':61B 'host':26B 'http/3':44B 'http3':20B 'identifi':41B,59B 'incom':43B 'limit':49B 'mani':57B 'memori':62B 'new':34B,39B 'packag':21B 'peer':52B 'process':65B 'quic':22B 'quich':29B,32B 'remot':51B 'retain':35B 'run':66B 'rust':23B 'self':25B 'self-host':24B 'send':54B 'servic':70B 'state':36B 'tokio':28B,31B 'tokio-quich':27B,30B","search_c":"'0.23.0':242C 'affect':168C,223C 'applic':188C 'associ':133C 'bound':139C,261C,277C 'buffer':279C 'capabl':256C 'caus':125C,147C 'channel':134C 'client':159C,281C 'cloudflar':72C 'code':154C,247C 'configur':162C 'connect':129C 'consumpt':83C 'contain':79C 'core':213C 'creat':107C,248C 'datagram':88C,102C,120C,174C,206C,219C,226C,255C,274C,283C 'datagram-cap':254C 'default':183C 'denial':149C 'deploy':217C 'dgram':187C,234C 'disabl':190C,225C 'discard':282C 'distinct':123C 'earli':273C 'either':164C 'enabl':181C,186C,233C 'everi':91C 'exhaust':143C 'expir':278C 'exploit':141C 'fals':197C 'field':195C 'fix':246C 'flow':94C,113C,130C,249C,286C 'found':77C 'frame':103C 'grow':137C 'handl':89C 'http/3':87C,200C,216C 'id':98C 'identifi':95C,124C 'impact':140C 'later':244C 'limit':266C 'malici':171C 'mani':122C 'map':131C 'memori':145C 'mitig':224C 'negoti':209C 'new':110C 'packet':269C 'path':201C 'peer':117C,172C,212C 'per':112C,128C 'per-connect':127C 'per-flow':111C 'previous':92C 'process':144C 'quarter':96C 'quic':173C,263C 'quich':75C,106C,179C,214C,230C,240C 'quicset':185C,232C 'reachabl':203C 'receiv':99C 'remedi':235C 'remot':116C 'reorder':270C 'request':257C 'resourc':82C 'retain':109C,272C 'role':165C 'send':119C 'server':161C,271C 'servic':151C 'set':193C 'state':114C,135C,250C 'stream':97C,258C,265C 'summari':71C 'support':175C,207C,220C 'tokio':74C,105C,178C,229C,239C 'tokio-quich':73C,104C,177C,228C,238C 'toler':268C 'uncontrol':81C 'unknown':285C 'unseen':93C 'upgrad':236C 'use':156C 'valid':253C 'version':241C 'vulner':84C,153C,199C 'without':138C,218C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-10T11:35:40+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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","cvss_by":"cna@cloudflare.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-12708","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-12708","severity":null,"published_at":"2026-11-10T14:17:29+00:00","modified_at":"2026-11-10T14:17:29+00:00","first_seen_at":"2026-11-10T14:22:20+00:00","fetched_at":"2026-11-10T14:22:20+00:00","note":null}],"documents":[{"id":115416,"url":"https://github.com/cloudflare/quiche/security/advisories/GHSA-wcm9-jv39-r963","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-10T11:35:40+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}