{"id":"CVE-2026-119233","kind":"vulnerability","aliases":["CVE-2026-119233"],"related":[],"title":"proxygen: HTTP/3 frame buffering lets a remote peer exhaust memory and CPU","description":"proxygen's HTTP/3 codec buffered an incomplete non-DATA frame, such as a control-stream frame, a frame of an unknown or reserved type, or a HEADERS frame, until its entire declared length had arrived, without limiting that length, and re-scanned all buffered data each time more bytes arrived. A remote, unauthenticated HTTP/3 peer could declare a very large frame and deliver it slowly, causing unbounded memory growth and CPU usage that grows quadratically with the number of fragments, leading to denial of service. This issue affects proxygen versions prior to v2026.11.09.00.","summary":"Proxygen's HTTP/3 codec buffers incomplete non-DATA frames without a length limit and rescans them on each new fragment. A remote, unauthenticated HTTP/3 client can declare a huge frame and send it slowly, causing unbounded memory growth and quadratic CPU use that leads to denial of service.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"proxygen","fixed":[],"affected":"","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["c++","http3","proxygen","runtime","self-hosted"],"not_affected_if":["no-http3","not-proxygen"],"how_to_check":"- Check whether your service uses proxygen (Meta's C++ HTTP library) with HTTP/3 enabled.\n- Check the proxygen version in use against `v2026.11.09.00`.","fix":"- proxygen: move to `v2026.11.09.00` or later.","status":"open","published_at":"2026-11-11T17:17:16+00:00","first_seen_at":"2026-11-11T17:28:21+00:00","triaged_at":"2026-11-11T17:29:08+00:00","updated_at":"2026-11-11T17:29:08+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-11-11T17:29:08Z","model":"claude-haiku-5-5","output":{"fix":"- proxygen: move to `v2026.11.09.00` or later.","reach":"internet","title":"proxygen: HTTP/3 frame buffering lets a remote peer exhaust memory and CPU","impact":"medium","summary":"Proxygen's HTTP/3 codec buffers incomplete non-DATA frames without a length limit and rescans them on each new fragment. A remote, unauthenticated HTTP/3 client can declare a huge frame and send it slowly, causing unbounded memory growth and quadratic CPU use that leads to denial of service.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["proxygen","http3","c++","self-hosted"],"confidence":0.6,"fix_status":"available","needs_auth":"no","worst_case":"remote peer exhausts server memory and CPU, causing denial of service","analyst_note":"Confirm the affected component and whether HTTP/3 must be enabled to be exposed, using the NVD entry and the linked patch at github.com.","how_to_check":"- Check whether your service uses proxygen (Meta's C++ HTTP library) with HTTP/3 enabled.\n- Check the proxygen version in use against `v2026.11.09.00`.","plain_action":"","product_name":"proxygen","needs_analyst":true,"not_affected_if":["no-http3","not-proxygen"],"who_is_affected":"Servers and services built on proxygen that accept HTTP/3 connections from the internet are exposed, since the attack needs no account. Services that do not use proxygen, or do not accept HTTP/3, can skip it. The sources do not say whether any configuration disables the affected path.","user_interaction":"no","product_ecosystem":"vendor","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000777,"input_tokens":4670,"output_tokens":621,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-119233':15A,18A '-2026':14A,17A 'affect':166C 'arriv':112C,128C 'buffer':4A,31B,80C,122C 'byte':127C 'c':20B 'caus':62B,144C 'client':52B 'codec':30B,79C 'control':91C 'control-stream':90C 'could':134C 'cpu':12A,68B,149C 'cve':13A,16A 'data':35B,85C,123C 'declar':54B,109C,135C 'deliv':141C 'denial':73B,161C 'entir':108C 'exhaust':9A 'fragment':47B,158C 'frame':3A,36B,57B,86C,93C,95C,105C,139C 'grow':152C 'growth':65B,147C 'header':104C 'host':26B 'http/3':2A,29B,51B,78C,132C 'http3':21B 'huge':56B 'incomplet':32B,82C 'issu':165C 'larg':138C 'lead':71B,159C 'length':39B,110C,116C 'let':5A 'limit':40B,114C 'memori':10A,64B,146C 'new':46B 'non':34B,84C 'non-data':33B,83C 'number':156C 'peer':8A,133C 'prior':169C 'proxygen':1A,19A,22B,27B,76C,167C 'quadrat':67B,153C 're':119C 're-scan':118C 'remot':7A,49B,130C 'rescan':42B 'reserv':100C 'runtim':23B 'scan':120C 'self':25B 'self-host':24B 'send':59B 'servic':75B,163C 'slowli':61B,143C 'stream':92C 'time':125C 'type':101C 'unauthent':50B,131C 'unbound':63B,145C 'unknown':98C 'usag':150C 'use':69B 'v2026.11.09.00':171C 'version':168C 'without':37B,113C","nicknames":[],"mitigations":[],"who_affected":"Servers and services built on proxygen that accept HTTP/3 connections from the internet are exposed, since the attack needs no account. Services that do not use proxygen, or do not accept HTTP/3, can skip it. The sources do not say whether any configuration disables the affected path.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["proxygen"],"ptokens":["proxygen"],"labels":["c","http3","proxygen","runtime","selfhosted","unknown","vendor"],"campaign_type":null,"search_a":"'-119233':15A,18A '-2026':14A,17A 'buffer':4A 'cpu':12A 'cve':13A,16A 'exhaust':9A 'frame':3A 'http/3':2A 'let':5A 'memori':10A 'peer':8A 'proxygen':1A,19A 'remot':7A","search_b":"'buffer':31B 'c':20B 'caus':62B 'client':52B 'codec':30B 'cpu':68B 'data':35B 'declar':54B 'denial':73B 'fragment':47B 'frame':36B,57B 'growth':65B 'host':26B 'http/3':29B,51B 'http3':21B 'huge':56B 'incomplet':32B 'lead':71B 'length':39B 'limit':40B 'memori':64B 'new':46B 'non':34B 'non-data':33B 'proxygen':22B,27B 'quadrat':67B 'remot':49B 'rescan':42B 'runtim':23B 'self':25B 'self-host':24B 'send':59B 'servic':75B 'slowli':61B 'unauthent':50B 'unbound':63B 'use':69B 'without':37B","search_c":"'affect':166C 'arriv':112C,128C 'buffer':80C,122C 'byte':127C 'caus':144C 'codec':79C 'control':91C 'control-stream':90C 'could':134C 'cpu':149C 'data':85C,123C 'declar':109C,135C 'deliv':141C 'denial':161C 'entir':108C 'fragment':158C 'frame':86C,93C,95C,105C,139C 'grow':152C 'growth':147C 'header':104C 'http/3':78C,132C 'incomplet':82C 'issu':165C 'larg':138C 'lead':159C 'length':110C,116C 'limit':114C 'memori':146C 'non':84C 'non-data':83C 'number':156C 'peer':133C 'prior':169C 'proxygen':76C,167C 'quadrat':153C 're':119C 're-scan':118C 'remot':130C 'reserv':100C 'scan':120C 'servic':163C 'slowli':143C 'stream':92C 'time':125C 'type':101C 'unauthent':131C 'unbound':145C 'unknown':98C 'usag':150C 'v2026.11.09.00':171C 'version':168C 'without':113C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-11T17:17:16+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119233","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119233","severity":null,"published_at":"2026-11-11T17:17:16+00:00","modified_at":"2026-11-11T17:17:16+00:00","first_seen_at":"2026-11-11T17:28:21+00:00","fetched_at":"2026-11-11T17:28:21+00:00","note":null}],"documents":[{"id":127297,"url":"https://github.com/meta/proxygen/commit/daf245bba7fe1304b9491403fe56f91153299781","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: 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"}