Repository navigation
Conversation
| return; | ||
| } | ||
|
|
||
| const tunnelResponse = handleTunnelRequestIfMatched(toWebRequest(event)); |
There was a problem hiding this comment.
🟠 High severity issue identified in your code:
Risk: Affected versions of h3 are vulnerable to Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling'). The readRawBody function in h3 performs a strict, case-sensitive check for "chunked" in the Transfer-Encoding header. If an attacker sends a mixed-case value (e.g. "Transfer-Encoding: ChuNked") and no Content-Length, h3 will assume an empty body, immediately process the request, and leave the real payload data on the socket. When h3 is deployed behind a Layer 4 proxy (such as AWS NLB or raw TCP proxies that don't normalize headers), this enables a classic TE.TE HTTP request smuggling attack—allowing an attacker to bypass WAFs or desynchronize and poison other users' connections.
Fix: Upgrade this library to at least version 1.15.5 at sentry-javascript/yarn.lock:16852.
Reference(s): https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-2737, GHSA-mp2g-9vg9-f4cg, CVE-2026-23527
🥳 Fixed in commit 7f609cc 🥳
There was a problem hiding this comment.
Something to do in an external PR.
7fe783d to
f1e1f59
Compare
size-limit report 📦
|
f1e1f59 to
ab2c887
Compare
9765090 to
9bad613
Compare
c1733f2 to
fdca10d
Compare
fdca10d to
f17f89e
Compare
f17f89e to
fadf52a
Compare
fadf52a to
e1a3c68
Compare
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e1a3c68. Configure here.
e1a3c68 to
305aa01
Compare
3596b0a to
ec58ad6
Compare
ec58ad6 to
42c2c08
Compare
894eb61 to
d3a7266
Compare
65817f4 to
f363e89
Compare
f363e89 to
cfb9625
Compare
cfb9625 to
fb58f66
Compare
fb58f66 to
7f609cc
Compare
7f609cc to
a09825b
Compare
a09825b to
5380b46
Compare
5380b46 to
c754c41
Compare
c754c41 to
b0192c1
Compare
…iddleware On Nitro v3, Nuxt and `@sentry/nitro` put the tunnel check first in h3's middleware list, since Nitro runs the app's `server/middleware` before anything a module registers and has no public way to go first. On Nitro v2, Nuxt answers from the `request` hook.
…oute rules can't skip it
… rules don't run after it
…yCloudflareNitroPlugin
…lts so Cloudflare clients start with it
`nuxt dev` opens the port before it can serve and answers 503 until then, while Playwright only waits for the port.
b0192c1 to
27d096c
Compare
A Nitro app's own
server/middleware, like an auth check, ran before anything Sentry registered and would block tunnel requests, fixed by putting the tunnel check first in h3's middleware on Nitro v3 and answering from therequesthook on Nitro v2.The e2e tunnel variants for Nuxt 4, Nuxt 5 and Nitro 3 check that the tunnel answers while an auth middleware rejects every other POST.
closes #20254