---
id: CVE-2026-56682
title: 9Router is an AI router & token saver
summary: >-
  9Router is an AI router & token saver. Prior to 0.5.6, 9Router deployments
  that allow requests to reach Next.js without the sanitizing custom-server.js
  wrapper use the client-supplied X-9r-Real-Ip value as the bucket key in
  getClientIp, …
severity: medium
cvss: 5.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'
cwe:
  - CWE-307
  - CWE-807
vendor: decolua
product: 9router
affected:
  - 9router < 0.5.6
patched:
  - 9router 0.5.8
published: '2026-09-22'
updated: '2026-09-22'
sourceUpdated: '2026-09-22T18:17:15.100'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-56682'
references:
  - url: >-
      https://github.com/decolua/9router/commit/efd20be8d81ef2e256a7037f3aa78e6b567b5fd3
    label: security-advisories@github.com
  - url: 'https://github.com/decolua/9router/releases/tag/v0.5.6'
    label: security-advisories@github.com
  - url: 'https://github.com/decolua/9router/security/advisories/GHSA-32gc-64m7-hj7v'
    label: security-advisories@github.com
  - url: 'https://github.com/decolua/9router/security/advisories/GHSA-32gc-64m7-hj7v'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: 'https://github.com/advisories/GHSA-32gc-64m7-hj7v'
tags:
  - nvd
  - cve.org
  - exploit-available
  - ghsa
  - npm
aliases:
  - GHSA-32gc-64m7-hj7v
ecosystem: npm
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-09-22T17:22:54.716257Z'
ingestedAt: '2026-09-22T17:07:07.377Z'
epss: 0.00468
epssPercentile: 0.37857
---

## Overview

9Router is an AI router & token saver. Prior to 0.5.6, 9Router deployments that allow requests to reach Next.js without the sanitizing custom-server.js wrapper use the client-supplied X-9r-Real-Ip value as the bucket key in getClientIp, checkLock, and recordFail in src/lib/auth/loginLimiter.js for POST /api/auth/login. A remote unauthenticated attacker can rotate the header on every password guess so each request uses a new failed-attempt bucket and the five-attempt progressive lockout never returns HTTP 429. This permits unthrottled password guessing against the dashboard login and can lead to an administrative session if the password is recovered. This issue is fixed in version 0.5.6.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-56682)

Affected packages:

- `9router <= 0.5.4`

Patched in:

- `9router 0.5.8`

Source: https://github.com/advisories/GHSA-32gc-64m7-hj7v
