{"id":"CVE-2026-123635","kind":"vulnerability","aliases":["CVE-2026-123635"],"related":[],"title":"elixir-grpc: refused calls stall later calls on a shared HTTP/2 connection","description":"Missing Release of Resource after Effective Lifetime vulnerability in elixir-grpc grpc_server allows a client to stall all later calls on a shared HTTP/2 connection via calls that the server refuses while their DATA frames are in flight.\n\nThe stream handler grpc_stream_h (grpc_server/src/grpc_stream_h.erl) requests flow from Cowboy only for request data that has arrived. When the server refuses a call early, for example because the body exceeds max_body_size or the method is not implemented, Cowboy drops the DATA frames still in flight for that stream. Their bytes are not returned to the connection flow-control window. After enough refused calls the window is empty. No call on that connection can then send a request body, and each call waits until its deadline. Other connections are not affected.\n\nThis issue affects grpc_server: from 1.0.0 before 1.1.0.","summary":"A client can send calls that the grpc_server refuses while their request data is still in flight, so the HTTP/2 flow-control window is never returned. After enough refused calls, every later call on that connection stalls until its deadline.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["elixir","grpc","grpc_server","package"],"not_affected_if":["version-1.1.0-or-later"],"how_to_check":"- Check the version of grpc_server in your mix.lock or deps for `grpc_server` (from `1.0.0` to before `1.1.0` is affected).\n- Look for grpc_server listening directly to clients on a shared HTTP/2 connection, where a client can send many calls.","fix":"- grpc_server: move to `1.1.0` or later.","status":"open","published_at":"2026-11-13T16:17:37+00:00","first_seen_at":"2026-11-13T16:47:33+00:00","triaged_at":"2026-11-13T16:48:52+00:00","updated_at":"2026-11-13T16:48:52+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T16:48:52Z","model":"claude-haiku-5-5","output":{"fix":"- grpc_server: move to `1.1.0` or later.","reach":"network","title":"elixir-grpc: refused calls stall later calls on a shared HTTP/2 connection","impact":"low","summary":"A client can send calls that the grpc_server refuses while their request data is still in flight, so the HTTP/2 flow-control window is never returned. After enough refused calls, every later call on that connection stalls until its deadline.","audience":"developers","category":"package","nicknames":[],"who_cares":["elixir","grpc","grpc_server"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"Later calls on a shared connection stall until their deadline","analyst_note":"","how_to_check":"- Check the version of grpc_server in your mix.lock or deps for `grpc_server` (from `1.0.0` to before `1.1.0` is affected).\n- Look for grpc_server listening directly to clients on a shared HTTP/2 connection, where a client can send many calls.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["version-1.1.0-or-later"],"who_is_affected":"Teams running an Elixir service built on grpc_server from 1.0.0 before 1.1.0 that accepts gRPC calls from clients over HTTP/2. Only a shared connection is hit, so other connections keep working. Services that do not use grpc_server, or that run a version at or after 1.1.0, are not affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000748,"input_tokens":4783,"output_tokens":540,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-123635':16A,19A '-2026':15A,18A '1.0.0':208C '1.1.0':210C 'affect':201C,204C 'allow':81C 'arriv':125C 'bodi':137C,140C,189C 'byte':160C 'call':5A,8A,29B,56B,59B,88C,95C,131C,174C,180C,192C 'client':26B,83C 'connect':13A,62B,93C,166C,183C,198C 'control':48B,169C 'cowboy':118C,148C 'cve':14A,17A 'data':38B,102C,122C,151C 'deadlin':66B,196C 'drop':149C 'earli':132C 'effect':72C 'elixir':2A,20B,77C 'elixir-grpc':1A,76C 'empti':178C 'enough':54B,172C 'everi':57B 'exampl':134C 'exceed':138C 'flight':42B,106C,155C 'flow':47B,116C,168C 'flow-control':46B,167C 'frame':103C,152C 'grpc':3A,21B,22B,32B,78C,79C,110C,113C,205C 'h':112C 'handler':109C 'http/2':12A,45B,92C 'implement':147C 'issu':203C 'later':7A,58B,87C 'lifetim':73C 'max':139C 'method':144C 'miss':67C 'never':51B 'packag':24B 'refus':4A,34B,55B,99C,129C,173C 'releas':68C 'request':37B,115C,121C,188C 'resourc':70C 'return':52B,163C 'send':28B,186C 'server':23B,33B,80C,98C,128C,206C 'server/src/grpc_stream_h.erl':114C 'share':11A,91C 'size':141C 'stall':6A,63B,85C 'still':40B,153C 'stream':108C,111C,158C 'via':94C 'vulner':74C 'wait':193C 'window':49B,170C,176C","nicknames":[],"mitigations":[],"who_affected":"Teams running an Elixir service built on grpc_server from 1.0.0 before 1.1.0 that accepts gRPC calls from clients over HTTP/2. Only a shared connection is hit, so other connections keep working. Services that do not use grpc_server, or that run a version at or after 1.1.0, are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["elixir","grpc","grpcserver","medium","package"],"campaign_type":null,"search_a":"'-123635':16A,19A '-2026':15A,18A 'call':5A,8A 'connect':13A 'cve':14A,17A 'elixir':2A 'elixir-grpc':1A 'grpc':3A 'http/2':12A 'later':7A 'refus':4A 'share':11A 'stall':6A","search_b":"'call':29B,56B,59B 'client':26B 'connect':62B 'control':48B 'data':38B 'deadlin':66B 'elixir':20B 'enough':54B 'everi':57B 'flight':42B 'flow':47B 'flow-control':46B 'grpc':21B,22B,32B 'http/2':45B 'later':58B 'never':51B 'packag':24B 'refus':34B,55B 'request':37B 'return':52B 'send':28B 'server':23B,33B 'stall':63B 'still':40B 'window':49B","search_c":"'1.0.0':208C '1.1.0':210C 'affect':201C,204C 'allow':81C 'arriv':125C 'bodi':137C,140C,189C 'byte':160C 'call':88C,95C,131C,174C,180C,192C 'client':83C 'connect':93C,166C,183C,198C 'control':169C 'cowboy':118C,148C 'data':102C,122C,151C 'deadlin':196C 'drop':149C 'earli':132C 'effect':72C 'elixir':77C 'elixir-grpc':76C 'empti':178C 'enough':172C 'exampl':134C 'exceed':138C 'flight':106C,155C 'flow':116C,168C 'flow-control':167C 'frame':103C,152C 'grpc':78C,79C,110C,113C,205C 'h':112C 'handler':109C 'http/2':92C 'implement':147C 'issu':203C 'later':87C 'lifetim':73C 'max':139C 'method':144C 'miss':67C 'refus':99C,129C,173C 'releas':68C 'request':115C,121C,188C 'resourc':70C 'return':163C 'send':186C 'server':80C,98C,128C,206C 'server/src/grpc_stream_h.erl':114C 'share':91C 'size':141C 'stall':85C 'still':153C 'stream':108C,111C,158C 'via':94C 'vulner':74C 'wait':193C 'window':170C,176C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T20:48:14+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/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":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123635","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123635","severity":null,"published_at":"2026-11-13T16:17:37+00:00","modified_at":"2026-11-13T16:17:37+00:00","first_seen_at":"2026-11-13T16:47:33+00:00","fetched_at":"2026-11-13T16:47:33+00:00","note":null}],"documents":[{"id":147636,"url":"https://github.com/elixir-grpc/grpc/commit/0332faae5f5e132314794dbfdae5edecbccea292","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":147641,"url":"https://github.com/elixir-grpc/grpc/commit/61a71948e6e7b95efb27d48e7084c764503cc802","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":147642,"url":"https://github.com/elixir-grpc/grpc/security/advisories/GHSA-7x9q-vvph-rjcr","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-12T20:48:14+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"}