mediumCVSS 6.5Vulnerability

GHSA-pq96-pwvg-vrr9

### Summary frp contains an authentication bypass in the HTTP vhost routing path when `routeByHTTPUser` is used as part of access control. In proxy-style requests, the routing logic uses the username from `Proxy-Authorization` to select the `routeByHTTPUser` backend, while the access control check uses credentials from the regular `Authorization` header. As a result, an attacker who can reach the HTTP vhost entrypoint and knows or can guess the protected `routeByHTTPUser` value may access a backend protected by `httpUser` / `httpPassword` even with an incorrect `Proxy-Authorization` password. This issue affects deployments that explicitly use `routeByHTTPUser`. It does not affect ordinary HTTP proxies that do not use this feature. ### Details The issue is in `pkg/util/vhost/http.go`. In proxy-style requests using an absolute URI, the routing path extracts the username from `Proxy-Authorization` and stores it as the request `HTTPUser`, which is then used for `routeByHTTPUser` route selection. More specifically, `injectRequestInfoToCtx()` derives the routing user from `Proxy-Authorization`, while the original `ServeHTTP()` implementation used `req.BasicAuth()` for the authentication check. Because routing and authentication use different credential sources, a request can be routed to a protected backend based on the `Proxy-Authorization` username while the authentication check is not performed against the same credentials. This creates an authentication bypass when `routeByHTTPUser`, `httpUser`, and `httpPassword` are used together. This is not a universal anonymous bypass for all frp HTTP proxies; it is specific to deployments that use `routeByHTTPUser` and where the target user value is known or can be inferred. A minimal fix is to make the authentication check in proxy mode use the same credential source as route selection, i.e. to derive proxy-mode credentials from `Proxy-Authorization` consistently. From local Git history analysis, this logic appears to h

Properties

ghsa_id
GHSA-pq96-pwvg-vrr9
severity
medium
summary
frp has an authentication bypass in HTTP vhost routing when routeByHTTPUser is used for access control
cvss_score
6.5
cve_id
GHSA-pq96-pwvg-vrr9
cvss_vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N
is_ghsa_only
true
ghsa_published
2026-04-14T23:33:15Z
source_url
https://github.com/advisories/GHSA-pq96-pwvg-vrr9
ghsa_updated
2026-04-14T23:33:16Z

Related Entities (4)

AFFECTS (1)

[Software]go/github.com/fatedier/frp

HAS_WEAKNESS (1)

[Weakness]Improper Authentication

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]go/github.com/fatedier/frp

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-pq96-pwvg-vrr9 (CVSS 6.5) — Ninja Signal Threat Intelligence | Ninja Signal