{"id":"RUSTSEC-2026-0389","revision":"38b209a96bb742bcba1e722398c354b1","records":[{"revision":"38b209a96bb742bcba1e722398c354b1","observedAt":"2026-10-26T11:36:11.7+00:00","statement":{"source":"osv","id":"RUSTSEC-2026-0389","aliases":["CVE-2026-105297","GHSA-7gpj-mj4q-x62x"],"title":"Pingora HTTP/2 server memory exhaustion through unbounded default header-list and concurrent-stream limits","description":"Pingora versions prior to 0.8.1 used the h2 crate's default HTTP/2 server limits, a 16 MiB decoded header-list size and no limit on concurrent streams, unless the application set its own. A remote, unauthenticated client can send 1-byte HPACK references to a near-empty header, making the server allocate hundreds of thousands of header fields per stream across an unlimited number of streams on one connection, and use HTTP/2 flow control to keep those streams open. This can exhaust memory and degrade or terminate the Pingora process.\n\nThis affects any Pingora service that terminates HTTP/2 (h2 or h2c) without explicitly setting `max_header_list_size` and `max_concurrent_streams`. The reporter showed that a single connection could get a Pingora process with a 2 GiB memory limit OOM-killed.\n\nThis flaw was corrected in commit d193c8d49b8b7c1c1ede93183759caa4f6906bbd. When no `H2Options` are supplied, Pingora now advertises and enforces a 64 KiB decoded header-list limit and at most 100 concurrent streams per connection. Users should upgrade to Pingora >= 0.8.1. Applications that supply their own `H2Options` are not covered by these defaults and must set `max_header_list_size` and `max_concurrent_streams` explicitly, or start from `pingora_core::protocols::http::v2::server::default_h2_options()`. `H2Options::default()` does not include these limits.\n\nNote: Cloudflare CDN customers were unaffected, as internal Pingora services at Cloudflare do not have HTTP/2 clients.","state":0,"publishedAt":"2026-10-20T12:00:00+00:00","modifiedAt":"2026-10-26T11:15:11.3575408+00:00","affected":[{"ecosystem":"crates.io","name":"pingora-core","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.0.0-0"},{"kind":"fixed","version":"0.8.1"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","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","score":null,"severity":null}],"references":["https://crates.io/crates/pingora-core","https://rustsec.org/advisories/RUSTSEC-2026-0389.html","https://github.com/cloudflare/pingora/commit/d193c8d49b8b7c1c1ede93183759caa4f6906bbd"],"sourceUrl":"https://osv.dev/vulnerability/RUSTSEC-2026-0389","license":"OSV · upstream source license applies","key":"osv:RUSTSEC-2026-0389","identifiers":["RUSTSEC-2026-0389","CVE-2026-105297","GHSA-7gpj-mj4q-x62x"]},"retained":false,"historicalAffected":[]}],"coverage":[]}