{"id":"CVE-2026-119235","kind":"vulnerability","aliases":["CVE-2026-119235"],"related":[],"title":"proxygen: unbounded QPACK literal buffering lets a remote peer exhaust memory","description":"proxygen's QPACK decoder enforced its size limit on a string literal in an encoder-stream instruction only after the entire literal had been received. A remote, unauthenticated HTTP/3 peer could send an insert instruction on the QPACK encoder stream that declares an arbitrarily large literal and then keep sending data, causing the decoder to buffer it without bound for the lifetime of the connection and exhaust memory, leading to denial of service. The issue occurs regardless of the advertised QPACK dynamic table capacity, including when the dynamic table is disabled. This issue affects proxygen versions prior to v2026.11.09.00.","summary":"Facebook's proxygen HTTP/3 library buffers an oversized QPACK string literal sent on the encoder stream without enforcing its size limit until the whole literal arrives. An unauthenticated remote peer can keep a connection sending data and exhaust server memory, causing denial of service.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["c++","http3","package","proxygen"],"not_affected_if":["no-http3-listener","pinned-patched-version"],"how_to_check":"- Check the proxygen version in your build manifest or lockfile; affected if below `v2026.11.09.00`.\n- Confirm whether your service serves HTTP/3 with proxygen, since the flaw is in its QPACK decoder.","fix":"- proxygen: upgrade 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:05+00:00","updated_at":"2026-11-11T17:29:05+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-11T17:29:05Z","model":"claude-haiku-5-5","output":{"fix":"- proxygen: upgrade to `v2026.11.09.00` or later.","reach":"internet","title":"proxygen: unbounded QPACK literal buffering lets a remote peer exhaust memory","impact":"medium","summary":"Facebook's proxygen HTTP/3 library buffers an oversized QPACK string literal sent on the encoder stream without enforcing its size limit until the whole literal arrives. An unauthenticated remote peer can keep a connection sending data and exhaust server memory, causing denial of service.","audience":"businesses","category":"package","nicknames":[],"who_cares":["proxygen","http3","c++"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"remote peer exhausts server memory, causing denial of service","analyst_note":"Need","how_to_check":"- Check the proxygen version in your build manifest or lockfile; affected if below `v2026.11.09.00`.\n- Confirm whether your service serves HTTP/3 with proxygen, since the flaw is in its QPACK decoder.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-http3-listener","pinned-patched-version"],"who_is_affected":"Services that run proxygen to accept HTTP/3 connections from the internet are exposed, because the decoder runs on the QPACK encoder stream regardless of dynamic table settings. Systems that do not serve HTTP/3 through proxygen can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000737,"input_tokens":4666,"output_tokens":541,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-119235':14A,17A '-2026':13A,16A 'advertis':146C 'affect':160C 'arbitrarili':110C 'arriv':47B 'bound':125C 'buffer':5A,27B,122C 'c':18B 'capac':150C 'caus':62B,118C 'connect':55B,131C 'could':97C 'cve':12A,15A 'data':57B,117C 'declar':108C 'decod':69C,120C 'denial':63B,137C 'disabl':157C 'dynam':148C,154C 'encod':36B,81C,105C 'encoder-stream':80C 'enforc':39B,70C 'entir':87C 'exhaust':10A,59B,133C 'facebook':22B 'http/3':25B,95C 'http3':19B 'includ':151C 'insert':100C 'instruct':83C,101C 'issu':141C,159C 'keep':53B,115C 'larg':111C 'lead':135C 'let':6A 'librari':26B 'lifetim':128C 'limit':42B,73C 'liter':4A,32B,46B,77C,88C,112C 'memori':11A,61B,134C 'occur':142C 'overs':29B 'packag':20B 'peer':9A,51B,96C 'prior':163C 'proxygen':1A,21B,24B,66C,161C 'qpack':3A,30B,68C,104C,147C 'receiv':91C 'regardless':143C 'remot':8A,50B,93C 'send':56B,98C,116C 'sent':33B 'server':60B 'servic':65B,139C 'size':41B,72C 'stream':37B,82C,106C 'string':31B,76C 'tabl':149C,155C 'unauthent':49B,94C 'unbound':2A 'v2026.11.09.00':165C 'version':162C 'whole':45B 'without':38B,124C","nicknames":[],"mitigations":[],"who_affected":"Services that run proxygen to accept HTTP/3 connections from the internet are exposed, because the decoder runs on the QPACK encoder stream regardless of dynamic table settings. Systems that do not serve HTTP/3 through proxygen can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["c","high","http3","package","proxygen"],"campaign_type":null,"search_a":"'-119235':14A,17A '-2026':13A,16A 'buffer':5A 'cve':12A,15A 'exhaust':10A 'let':6A 'liter':4A 'memori':11A 'peer':9A 'proxygen':1A 'qpack':3A 'remot':8A 'unbound':2A","search_b":"'arriv':47B 'buffer':27B 'c':18B 'caus':62B 'connect':55B 'data':57B 'denial':63B 'encod':36B 'enforc':39B 'exhaust':59B 'facebook':22B 'http/3':25B 'http3':19B 'keep':53B 'librari':26B 'limit':42B 'liter':32B,46B 'memori':61B 'overs':29B 'packag':20B 'peer':51B 'proxygen':21B,24B 'qpack':30B 'remot':50B 'send':56B 'sent':33B 'server':60B 'servic':65B 'size':41B 'stream':37B 'string':31B 'unauthent':49B 'whole':45B 'without':38B","search_c":"'advertis':146C 'affect':160C 'arbitrarili':110C 'bound':125C 'buffer':122C 'capac':150C 'caus':118C 'connect':131C 'could':97C 'data':117C 'declar':108C 'decod':69C,120C 'denial':137C 'disabl':157C 'dynam':148C,154C 'encod':81C,105C 'encoder-stream':80C 'enforc':70C 'entir':87C 'exhaust':133C 'http/3':95C 'includ':151C 'insert':100C 'instruct':83C,101C 'issu':141C,159C 'keep':115C 'larg':111C 'lead':135C 'lifetim':128C 'limit':73C 'liter':77C,88C,112C 'memori':134C 'occur':142C 'peer':96C 'prior':163C 'proxygen':66C,161C 'qpack':68C,104C,147C 'receiv':91C 'regardless':143C 'remot':93C 'send':98C,116C 'servic':139C 'size':72C 'stream':82C,106C 'string':76C 'tabl':149C,155C 'unauthent':94C 'v2026.11.09.00':165C 'version':162C 'without':124C","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-119235","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119235","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"}