{"id":"GHSA-8j4g-w8fx-2239","revision":"48bf5fa9d3974e679d8866c3676cc4f6","records":[{"revision":"48bf5fa9d3974e679d8866c3676cc4f6","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-8j4g-w8fx-2239","aliases":["CVE-2026-69207"],"title":"Hono: ReDoS in CORS middleware via Access-Control-Request-Headers","description":"### Summary\n\nThe built-in CORS middleware (`hono/cors`) parses the attacker-controlled `Access-Control-Request-Headers` request header during a preflight (`OPTIONS`) request using a regular expression whose running time is quadratic in the input length. A single request carrying a long run of whitespace can consume seconds of CPU, and repeated requests can render the service unresponsive. This parsing runs under the default configuration.\n\n### Details\n\nOn a CORS preflight, when `allowHeaders` is not configured - the default - the middleware reflects and parses the `Access-Control-Request-Headers` value. The parser used a whitespace-tolerant regular expression whose backtracking makes the work grow quadratically (O(n²)) with the length of the value when it contains a long whitespace sequence without a delimiter.\n\nBecause the header value is bounded only by the deployment's maximum HTTP header size, a single preflight can block request processing for a noticeable amount of time; on runtimes that share one execution thread across requests, this stalls concurrent requests as well. No authentication, special origin, or user interaction is required.\n\nThis issue arises for any application using `cors()` with the default (or an empty) `allowHeaders`. Applications that set a non-empty `allowHeaders` do not reach the affected path.\n\n### Impact\n\nAn unauthenticated attacker can send preflight requests that each consume disproportionate CPU relative to their size, degrading or denying service. This is a denial-of-service issue only; it does not expose or modify data.","state":0,"publishedAt":"2026-08-03T20:23:30+00:00","modifiedAt":"2026-09-10T03:51:13.583286+00:00","affected":[{"ecosystem":"npm","name":"hono","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"4.12.34"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/honojs/hono/security/advisories/GHSA-8j4g-w8fx-2239","https://github.com/honojs/hono/commit/93fc250d8b4df58ea542cb945171de8013d5e6d5","https://github.com/honojs/hono","https://github.com/honojs/hono/releases/tag/v4.12.34"],"sourceUrl":"https://github.com/advisories/GHSA-8j4g-w8fx-2239","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-8j4g-w8fx-2239","identifiers":["GHSA-8j4g-w8fx-2239","CVE-2026-69207"]},"retained":false,"historicalAffected":[]}],"coverage":[]}