{"id":"GHSA-9vqf-7f2p-gf9v","revision":"dc1a00ae66024768ac57b908e535ccbe","records":[{"revision":"dc1a00ae66024768ac57b908e535ccbe","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-9vqf-7f2p-gf9v","aliases":["CVE-2026-44456"],"title":"Hono: bodyLimit() can be bypassed for chunked / unknown-length requests","description":"## Summary\n\n`bodyLimit()` does not reliably enforce `maxSize` for requests without a usable `Content-Length` (e.g. `Transfer-Encoding: chunked`). Oversized requests can reach handlers and return `200` instead of `413`.\n\n## Details\n\nFor chunked / unknown-length requests, `bodyLimit()` wraps the body in a stream that counts bytes asynchronously, then runs the handler before the size decision is final. The `413` is only applied afterwards by checking `c.error`.\n\nThis lets the limit be bypassed when:\n\n- the handler does not read the body,\n- the handler reads only the first chunk(s) and returns, or\n- the handler reads the body but swallows the read error in `try/catch`.\n\nIn all three cases the handler returns `200` before the limit check completes (or its result is observed).\n\nThe fix is to enforce the size decision before `next()` runs, instead of retrofitting the response via `c.error` afterwards.\n\n## Impact\n\nApplications relying on `bodyLimit()` as a hard boundary can be bypassed: oversized chunked requests can reach handler logic and return successful responses. Per-request data exposure is bounded by `maxSize`, but the documented guarantee — \"oversized requests are rejected before business logic runs\" — does not hold.\n\n## Credits\n\n- @lalalala5678 (slow chunked / early return variants)\n- @Jvr2022 (error handling bypass)","state":0,"publishedAt":"2026-05-06T23:50:10+00:00","modifiedAt":"2026-09-10T03:50:46.3983937+00:00","affected":[{"ecosystem":"npm","name":"hono","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"4.12.16"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/honojs/hono/security/advisories/GHSA-9vqf-7f2p-gf9v","https://nvd.nist.gov/vuln/detail/CVE-2026-44456","https://github.com/honojs/hono"],"sourceUrl":"https://github.com/advisories/GHSA-9vqf-7f2p-gf9v","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-9vqf-7f2p-gf9v","identifiers":["GHSA-9vqf-7f2p-gf9v","CVE-2026-44456"]},"retained":false,"historicalAffected":[]}],"coverage":[]}