CVE-2026-56681
Deferred Deferred - Pending Action

Authentication Bypass in 9Router via X-9r-Real-Ip Header

Vulnerability report for CVE-2026-56681, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-22

Last updated on: 2026-09-22

Assigner: GitHub, Inc.

Description

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 trust the client-supplied X-9r-Real-Ip header in src/dashboardGuard.js when isLocalRequest decides whether canAccessPublicLlmApi may skip API-key validation for /api/v1/* routes. A remote unauthenticated attacker can set X-9r-Real-Ip to 127.0.0.1 and be classified as a local client, including on the verified GET /api/v1/models route. This permits unauthorized use of the instance owner's configured LLM providers, consumption of paid credits, and enumeration of configured providers and models. This issue is fixed in version 0.5.6.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-22
Last Modified
2026-09-22
Generated
2026-09-22
AI Q&A
2026-09-22
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 3 associated CPEs
Vendor Product Version / Range
decolua 9router to 0.5.6 (exc)
decolua 9router to 0.5.4 (exc)
9router 9router 0.5.6

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-807 The product uses a protection mechanism that relies on the existence or values of an input, but the input can be modified by an untrusted actor in a way that bypasses the protection mechanism.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-56681 is an authentication bypass vulnerability in the 9router npm package affecting versions 0.5.4 and below. The issue occurs because the application trusts the client-supplied X-9r-Real-Ip HTTP header to determine if a request is local. Attackers can spoof this header to 127.0.0.1, tricking the system into treating their requests as local and bypassing API-key validation for public LLM API endpoints like /api/v1/models.

Detection Guidance

Check if your 9router instance is running a vulnerable version (0.5.4 or below) by inspecting the package version. Monitor HTTP headers in requests to /api/v1/models for the presence of the X-9r-Real-Ip header set to 127.0.0.1. Look for unauthorized API calls or unusual traffic patterns indicating exploitation attempts.

Impact Analysis

An attacker can exploit this to gain unauthorized access to your configured LLM providers, consume paid credits without permission, and enumerate your configured providers and models. This could lead to financial loss from unauthorized API usage and potential abuse of your upstream provider accounts.

Mitigation Strategies

Upgrade to version 0.5.6 or later immediately. Remove trust in the X-9r-Real-Ip header by modifying the isLocalRequest function to use a trusted source like req.socket.remoteAddress. Ensure the custom-server.js wrapper is always used to sanitize requests. Review and restrict access to /api/v1/* endpoints.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-56681. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart