{"items":[{"id":"NVI-00017692","kind":"vulnerability","title":"9router: Login brute-force protection bypass via spoofed X-Forwarded-For header","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-7cfm-pqrj-xgq7","CVE-2026-55501"],"plain_summary":"GitHub lists this reviewed advisory for 9router. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-484e2365254dce3634cdc326c1be9ba7"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-07-06T21:46:20.000Z","value":"7.3 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-484e2365254dce3634cdc326c1be9ba7"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-484e2365254dce3634cdc326c1be9ba7","url":"https://github.com/advisories/GHSA-7cfm-pqrj-xgq7","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-7cfm-pqrj-xgq7","publisher":"GitHub Advisory Database","observed_at":"2026-11-04T23:36:01.427Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-484e2365254dce3634cdc326c1be9ba7"],"technology":"9router","known_exclusions":[],"conditions_summary":"## Summary\n\nThe 9router dashboard login rate limiter derives the client identity from the attacker-controlled `X-Forwarded-For` HTTP header. When 9router 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 and receive a fresh rate-limit bucket every time.\n\nThis bypasses the dashboard brute-force protection and makes the login lockout mechanism ineffective.\n\n## Details\n\n| Component                    | File                              | Note                                                                        |\n| ---------------------------- | --------------------------------- | --------------------------------------------------------------------------- |\n| Dashboard login rate limiter | `src/lib/auth/loginLimiter.js`    | Uses `X-Forwarded-For` as the client identity without a trusted-proxy check |\n| Dashboard login route        | `src/app/api/auth/login/route.js` | Calls `checkLock()` and `recordFail()` using the spoofable client identity  |\n\n#### Vulnerable Code\n\n`src/lib/auth/loginLimiter.js`:\n\n```js\nexport function getClientIp(request) {\n  ","public_affected_ranges":["<= 0.4.71"]}],"null_published_at":"2026-11-05T19:10:21.452Z","source_updated_at":"2026-07-06T21:46:20.000Z","source_disclosed_at":"2026-07-06T21:46:20.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-04T23:36:01.427Z"}],"next_cursor":null,"snapshot_revision":"42594"}