CVE-2026-39406
@hono/node-server has a middleware bypass via repeated slashes in serveStatic
@hono/node-server allows running the Hono application on Node.js. Prior to 1.19.13, a path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path. When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass. This vulnerability is fixed in 1.19.13.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.3
@hono/node-server has a middleware bypass via repeated slashes in serveStatic
@hono/node-server allows running the Hono application on Node.js. Prior to 1.19.13, a path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path. When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass. This vulnerability is fixed in 1.19.13.
- Record
CVE-2026-39406- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2026-20491
5.3
@hono/node-server allows running the Hono application on Node.js. Prior to 1.19.13, a path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path. When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass. This vulnerability is fixed in 1.19.13.
- Record
EUVD-2026-20491- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-92pp-h63x-v22m
5.3
@hono/node-server: Middleware bypass via repeated slashes in serveStatic
Summary
A path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path.
When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass.
Details
The routing layer and serveStatic handle repeated slashes differently.
For example:
/admin/secret.txt=> matches/admin/*//admin/secret.txt=> may not match/admin/*
This inconsistency allows a request such as:
GET //admin/secret.txt
to bypass middleware registered on /admin/* and access protected files.
Impact
An attacker can access static files that are intended to be protected by route-based middleware by using repeated slashes in the request path.
This can lead to unauthorized access to sensitive files under the static root.
This issue affects applications that rely on serveStatic together with route-based middleware for access control.
- Record
GHSA-92pp-h63x-v22m- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-frvp-7c67-39w9
5.9
Node.js Adapter for Hono: Path traversal in `serve-static` on Windows via encoded backslash (`%5C`)
The same as the hono core Path traversal in serve-static on Windows via encoded backslash (%5C).
Summary
On Windows hosts, an encoded backslash (%5C) in the request path decodes to \, which the Windows path resolver treats as a separator. serve-static then resolves a single URL segment such as admin\secret.txt into a nested file under the root and serves it, letting an attacker read static files meant to be protected behind prefix-mounted middleware. Directory escape (..) remains blocked.
Details
The router splits paths only on /, so /admin%5Csecret.txt is one segment and middleware on /admin/* does not run. The serve-static guard rejects ./.. and consecutive separators but lets a lone \ through; on Windows the file resolver re-splits it into the protected subtree.
This affects Windows hosts serving static files via the Node, Bun, or Deno adapters that guard a static subtree with prefix-mounted middleware.
Impact
An unauthenticated attacker can read static files under a middleware-guarded prefix on Windows hosts. The read stays within the configured root; escape outside the root is not possible.
- Record
GHSA-frvp-7c67-39w9- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
NVD
5.3
@hono/node-server allows running the Hono application on Node.js. Prior to 1.19.13, a path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path. When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass. This vulnerability is fixed in 1.19.13.
- Record
CVE-2026-39406- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSV
5.3
@hono/node-server has a middleware bypass via repeated slashes in serveStatic
@hono/node-server allows running the Hono application on Node.js. Prior to 1.19.13, a path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path. When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass. This vulnerability is fixed in 1.19.13.
- Record
CVE-2026-39406- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
Show 7 moreShow less
OSVGHSA-92pp-h63x-v22m
5.3
@hono/node-server: Middleware bypass via repeated slashes in serveStatic
Summary
A path handling inconsistency in serveStatic allows protected static files to be accessed by using repeated slashes (//) in the request path.
When route-based middleware (e.g., /admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass.
Details
The routing layer and serveStatic handle repeated slashes differently.
For example:
/admin/secret.txt=> matches/admin/*//admin/secret.txt=> may not match/admin/*
This inconsistency allows a request such as:
GET //admin/secret.txt
to bypass middleware registered on /admin/* and access protected files.
Impact
An attacker can access static files that are intended to be protected by route-based middleware by using repeated slashes in the request path.
This can lead to unauthorized access to sensitive files under the static root.
This issue affects applications that rely on serveStatic together with route-based middleware for access control.
- Record
GHSA-92pp-h63x-v22m- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVGHSA-frvp-7c67-39w9
5.9
Node.js Adapter for Hono: Path traversal in `serve-static` on Windows via encoded backslash (`%5C`)
The same as the hono core Path traversal in serve-static on Windows via encoded backslash (%5C).
Summary
On Windows hosts, an encoded backslash (%5C) in the request path decodes to \, which the Windows path resolver treats as a separator. serve-static then resolves a single URL segment such as admin\secret.txt into a nested file under the root and serves it, letting an attacker read static files meant to be protected behind prefix-mounted middleware. Directory escape (..) remains blocked.
Details
The router splits paths only on /, so /admin%5Csecret.txt is one segment and middleware on /admin/* does not run. The serve-static guard rejects ./.. and consecutive separators but lets a lone \ through; on Windows the file resolver re-splits it into the protected subtree.
This affects Windows hosts serving static files via the Node, Bun, or Deno adapters that guard a static subtree with prefix-mounted middleware.
Impact
An unauthenticated attacker can read static files under a middleware-guarded prefix on Windows hosts. The read stays within the configured root; escape outside the root is not possible.
- Record
GHSA-frvp-7c67-39w9- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVCLSA-2026-1793191261 No score
TuxCare security update for @hono/node-server (2 CVEs)
TuxCare rebuilt @hono/node-server to address 2 CVEs. Fixed in 1.19.11-tuxcare.1.
- Record
CLSA-2026-1793191261- Updated
- 2026-11-02
OSVCLSA-2026-1793207176 No score
TuxCare security update for @hono/node-server (1 CVE)
TuxCare rebuilt @hono/node-server to address 1 CVE. Fixed in 1.19.10-tuxcare.1.
- Record
CLSA-2026-1793207176- Updated
- 2026-11-02
OSVCLSA-2026-1793209463 No score
TuxCare security update for @hono/node-server (1 CVE)
TuxCare rebuilt @hono/node-server to address 1 CVE. Fixed in 1.19.9-tuxcare.2.
- Record
CLSA-2026-1793209463- Updated
- 2026-11-02
OSVCLSA-2026-1793630460 No score
TuxCare security update for @hono/node-server (1 CVE)
TuxCare rebuilt @hono/node-server to address 1 CVE. Fixed in 1.19.10-tuxcare.2.
- Record
CLSA-2026-1793630460- Updated
- 2026-11-02
OSVCLSA-2026-1793630496 No score
TuxCare security update for @hono/node-server (1 CVE)
TuxCare rebuilt @hono/node-server to address 1 CVE. Fixed in 1.19.9-tuxcare.3.
- Record
CLSA-2026-1793630496- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@hono/node-servernpm |
before 1.19.13 | 1.19.13 |
@hono/node-servernpm |
2.0.0 up to 2.0.5 | 2.0.5 |
@hono/node-servernpm |
before 1.19.15 | 1.19.15 |
@hono/node-serverTuxCare:npm |
1.19.11-tuxcare.0 up to 1.19.11-tuxcare.1, plus listed versions 1.19.11 |
1.19.11-tuxcare.1 |
@hono/node-serverTuxCare:npm |
1.19.10-tuxcare.0 up to 1.19.10-tuxcare.1, plus listed versions 1.19.10 |
1.19.10-tuxcare.1 |
@hono/node-serverTuxCare:npm |
1.19.9-tuxcare.0 up to 1.19.9-tuxcare.2, plus listed versions 1.19.91.19.9-tuxcare.1 |
1.19.9-tuxcare.2 |
@hono/node-serverTuxCare:npm |
1.19.10-tuxcare.0 up to 1.19.10-tuxcare.2, plus listed versions 1.19.101.19.10-tuxcare.1 |
1.19.10-tuxcare.2 |
@hono/node-serverTuxCare:npm |
1.19.9-tuxcare.0 up to 1.19.9-tuxcare.3, plus listed versions 1.19.91.19.9-tuxcare.11.19.9-tuxcare.2 |
1.19.9-tuxcare.3 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-39406 is a medium vulnerability (CVSS 5.3) in Hono Node-server, published April 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.38%, the 32nd percentile. Fixed in @hono/node-server 1.19.13.
References
github.com/honojs/node-server/security/advisories/GHSA-92pp-h63x-v22m
github.com/honojs/node-server/commit/025c30f55d589ddbe6048b151d77e904f67a8cc2
github.com/honojs/node-server/releases/tag/v1.19.13
nvd.nist.gov/vuln/detail/CVE-2026-39406
github.com/advisories/GHSA-92pp-h63x-v22m
github.com/honojs/node-server/security/advisories/GHSA-frvp-7c67-39w9