PT-2026-56084 · 9Router · 9Router
CVE-2026-55501
·
Published
2026-07-06
·
Updated
2026-07-10
CVSS v3.1
7.3
High
| Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L |
Name of the Vulnerable Software and Affected Versions
9Router versions prior to 0.4.80
Description
The dashboard login rate limiter derives client identity from the
X-Forwarded-For HTTP header, which is controlled by the user. When the application is directly exposed or deployed behind a reverse proxy that does not overwrite untrusted forwarding headers, a remote attacker can rotate the X-Forwarded-For value on each login attempt. This allows the attacker to receive a fresh rate-limit bucket for every request, bypassing the 5-attempt threshold and progressive lockout durations. Consequently, an attacker can perform unlimited brute-force attempts against the dashboard password via the /api/auth/login endpoint. The issue involves the getClientIp() function in src/lib/auth/loginLimiter.js and the use of the resulting spoofable value by checkLock() and recordFail() in src/app/api/auth/login/route.js.Recommendations
Update to version 0.4.80.
As a temporary workaround, restrict access to the
/api/auth/login endpoint or ensure the application is behind a reverse proxy that strips or overwrites the X-Forwarded-For header from untrusted sources.Exploit
Fix
Authentication Bypass by Spoofing
Improper Restriction of Excessive Authentication Attempts
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
9Router