Executive brief
9Router, an AI-powered router and token management tool, contains a flaw in its login security system. Attackers can bypass the 'too many failed attempts' lockout mechanism by spoofing their network identity, allowing them to make unlimited password guesses. If successful, an attacker could gain full administrative control over the router, potentially exposing API keys and sensitive configuration data.
Technical details
A rate limit bypass exists in 9Router prior to version 0.4.80 due to improper client identity derivation. The `getClientIp` function in `src/lib/auth/loginLimiter.js` prioritizes the `X-Forwarded-For` HTTP header without verifying if the request originated from a trusted proxy. By rotating the value of this header in each request, a remote, unauthenticated attacker can ensure every login attempt is assigned to a fresh rate-limit bucket. This effectively bypasses the 5-attempt threshold and progressive lockout durations, enabling high-speed brute-force attacks against the dashboard. The vulnerability is remediated in version 0.4.80 by implementing a custom server that strips client-supplied forwarding headers and uses unspoofable socket IPs.
Affected products
- decolua 9router < 0.4.80
Timeline
- 2026-06-08: patched: Fix committed to repository
- 2026-06-13: advisory: Version 0.4.80 released
- 2026-06-20: advisory: GitHub Security Advisory published
- 2026-07-10: disclosed: CVE published to NVD