CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-85734

CVE-2026-85734: Brute-Force and CPU-Exhaustion DoS in LightRAG API /login Endpoint

Alon Barad
Alon Barad
Software Engineer

Sep 23, 2026·5 min read·3 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can execute high-speed brute-force attacks against LightRAG's /login endpoint to compromise administrative credentials, or concurrently flood the endpoint to exhaust CPU resources and cause a Denial of Service due to a lack of rate limiting and thread-blocking bcrypt executions.

LightRAG prior to version 1.5.5 does not implement rate limiting, lockout mechanisms, or throttling on its `/login` authentication endpoint. This allows unauthenticated remote attackers to perform rapid brute-force attacks to crack passwords and hijack active sessions. Furthermore, because the endpoint processed synchronous bcrypt verifications inside an asynchronous event loop, concurrent brute-force requests can easily exhaust server CPU resources, triggering an unauthenticated Denial of Service (DoS).

Vulnerability Overview

LightRAG is an open-source framework designed for retrieval-augmented generation. It exposes a web-based API endpoint at /login inside the lightrag/api/lightrag_server.py component to handle administrative and user authentication.

Prior to version 1.5.5, this authentication endpoint operated without any rate-limiting controls, failure counters, or account lockout mechanisms. The lack of throttling exposes the system's entry point to automated high-frequency brute-force attacks.

An unauthenticated remote attacker can exploit this design flaw to systematically guess passwords at maximum network speed. Successful credential recovery exposes the private data stored within LightRAG, including the internal knowledge graph, vector store indexes, and primary administrative configurations.

Root Cause Analysis

The fundamental flaw resides within lightrag/api/lightrag_server.py under the handler for the POST /login endpoint. The server parsed incoming authentication credentials and invoked the verify_password function without performing any intermediate state validation on the origin IP address or the requested username.

This behavior classifies as CWE-307: Improper Restriction of Excessive Authentication Attempts. Because the endpoint lacked a stateful history of failed attempts, it immediately processed every authentication request, verifying credentials against the stored password hashes.

Additionally, the verification process utilizes the CPU-bound bcrypt hashing function. In asynchronous Python frameworks such as FastAPI and Uvicorn, CPU-intensive operations executed synchronously inside the main event loop block the single thread. An attacker sending concurrent login requests forces the server to spend excessive clock cycles on bcrypt computations, starving the event loop and preventing the application from serving legitimate traffic.

Code Analysis

Before the remediation in version 1.5.5, the /login route directly called the blocking verification helper in the main thread without checking any rate-limiting state:

# Vulnerable Implementation
@app.post("/login")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
    # Blocking bcrypt execution in the main async thread
    password_ok = auth_handler.verify_password(form_data.username, form_data.password)
    if not password_ok:
        raise HTTPException(status_code=401, detail="Incorrect credentials")
    # Generate token...

The patch introduced in version 1.5.5 resolves both the lack of brute-force protection and the event-loop blocking issue. First, it implements a sliding-window memory tracker LoginRateLimiter that maintains failures per unique IP and username. Second, it shifts the CPU-bound bcrypt verification to a separate worker thread using asyncio.to_thread:

# Patched Implementation inside lightrag/api/lightrag_server.py
client_ip = request.client.host if request.client else "unknown"
rate_limit_key = f"{client_ip}:{username}"
 
# Pre-flight rate limit check
retry_after = login_rate_limiter.retry_after(rate_limit_key)
if retry_after is not None:
    raise HTTPException(
        status_code=429,
        detail="Too many failed login attempts. Please try again later.",
        headers={"Retry-After": str(int(retry_after) + 1)},
    )
 
# Non-blocking CPU execution on an auxiliary worker thread
password_ok = await asyncio.to_thread(
    auth_handler.verify_password, username, form_data.password
)
if not password_ok:
    login_rate_limiter.record_failure(rate_limit_key)
    raise HTTPException(status_code=401, detail="Incorrect credentials")

By checking the rate limiter before executing asyncio.to_thread, the application avoids the computational cost of bcrypt for blacklisted clients. This effectively mitigates the CPU-exhaustion denial-of-service vector.

Exploitation Methodology

An attacker can exploit this vulnerability using programmatic automated tools. The attack relies on sending repeated POST HTTP requests to the /login endpoint containing targeted username guesses and a credential dictionary.

The following simple proof-of-concept Python script demonstrates the lack of throttling on vulnerable targets:

import requests
import time
 
target_url = "http://localhost:8020/login"
credentials = {"username": "admin", "password": "wrong_password_attempt"}
 
for attempt in range(1, 20):
    start_time = time.time()
    response = requests.post(target_url, data=credentials)
    duration = time.time() - start_time
    print(f"Attempt {attempt}: Status {response.status_code} in {duration:.2f}s")

On a vulnerable host, all 20 requests return HTTP status 401 Unauthorized without any delay or lockouts. On a patched instance, attempts beyond the 5-request limit return HTTP status 429 Too Many Requests.

Impact Assessment

The impact of successful exploitation is critical. By successfully brute-forcing administrative credentials, an attacker obtains a valid JWT authorization token.

This token grants administrative access to LightRAG's central functionalities. Attackers can read sensitive internal corporate documents parsed by the engine, query the proprietary global knowledge graph, and perform arbitrary document uploads or deletions.

Furthermore, the accompanying availability impact is highly practical. Because the system can be forced to run intensive bcrypt operations continuously, an unauthenticated attacker can effectively lock the application server in a perpetual busy-loop, rendering the RAG platform completely unresponsive to integration workflows.

Remediation & Patch Completeness Assessment

To resolve this vulnerability, organizations must upgrade LightRAG to version 1.5.5 or higher. The patch introduces configurable parameters to adjust the login lockout thresholds:

  • LOGIN_MAX_FAILED_ATTEMPTS (Default: 5)
  • LOGIN_LOCKOUT_WINDOW_SECONDS (Default: 300.0)

While the sliding-window memory check resolves direct single-IP attacks, security teams must recognize its architectural limitations. Because the tracking dictionary is kept strictly in volatile RAM, restarting the container clears all lockouts. Additionally, in multi-process setups (such as Gunicorn running multiple Uvicorn workers), each worker maintains a separate state, multiplying the effective threshold by the worker count.

Furthermore, attackers operating from distributed botnets or rotating IP proxies can bypass the per-IP constraints. To completely secure the platform, deploy LightRAG behind a dedicated reverse proxy or Web Application Firewall (WAF) such as Nginx or Cloudflare. Configure rate-limiting rules directly at the proxy tier on the /login path to apply unified, persistent blocking policies.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.1/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Affected Systems

LightRAG API Server

Affected Versions Detail

Product
Affected Versions
Fixed Version
LightRAG
HKUDS
< 1.5.51.5.5
AttributeDetail
CWE IDCWE-307: Improper Restriction of Excessive Authentication Attempts
Attack VectorNetwork
CVSS Score9.1 (Critical)
ImpactAccount Takeover and CPU-Exhaustion DoS
Exploit StatusPoC available, easily automatable
CISA KEV StatusNo

MITRE ATT&CK Mapping

T1110Brute Force
Credential Access
CWE-307
Improper Restriction of Excessive Authentication Attempts

The program does not limit the number of times an actor can attempt to authenticate, which makes it susceptible to brute-force attacks.

Known Exploits & Detection

GitHubVulnerability verification detailed inside the official GHSA security advisory.

Vulnerability Timeline

Remediation commit pushed by developer to LightRAG repository.
2026-07-18
GitHub Security Advisory GHSA-frch-4w6v-q5xx published and LightRAG version 1.5.5 released containing the fix.
2026-09-22
Vulnerability registered in the National Vulnerability Database (NVD).
2026-09-22

References & Sources

  • [1]GHSA-frch-4w6v-q5xx
  • [2]LightRAG Pull Request 3424
  • [3]Fix Commit 135bc90
  • [4]LightRAG Release v1.5.5
  • [5]NVD CVE-2026-85734 Details

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•39 minutes ago•CVE-2026-85725
5.9

CVE-2026-85725: Observable Timing Side-Channel Vulnerability in HKUDS LightRAG

HKUDS LightRAG prior to version 1.5.5 is vulnerable to multiple timing side-channels (CWE-208) in its API authentication layer. The password verification logic in `lightrag/api/passwords.py` compares plaintext administrative credentials using Python's short-circuiting equality operator (`==`). Additionally, `lightrag/api/auth.py` terminates authentication early on non-existent usernames, creating an observable latency difference compared to computationally expensive bcrypt comparisons on valid accounts. Together, these allow remote unauthenticated attackers with low-latency network access to enumerate valid usernames and extract plaintext passwords character by character.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 3 hours ago•CVE-2026-85740
7.1

CVE-2026-85740: Server-Side Request Forgery (SSRF) Guard Bypass via IPv6 Transition Wrappers in LightRAG

A security vulnerability in HKUDS/LightRAG prior to v1.5.5 allows authenticated attackers to bypass the native markdown image downloader guard. The system fails to normalize IPv6 transition wrappers (such as NAT64, IPv4-compatible, and 6to4 blocks) encapsulating internal IPv4 addresses. Python's ipaddress library evaluates these wrappers as globally routable, but hosting environments running NAT64/DNS64 routing decapsulate and route the requests to internal resources.

Alon Barad
Alon Barad
6 views•5 min read
•about 4 hours ago•CVE-2026-86062
6.1

CVE-2026-86062: Stored Cross-Site Scripting (XSS) in HKUDS LightRAG WebUI Chat Renderer

HKUDS LightRAG, an open-source retrieval-augmented generation (RAG) framework, is vulnerable to Stored Cross-Site Scripting (XSS) in its WebUI chat rendering component prior to version 1.5.5. Unsanitized document content ingested into the vector database can propagate through the LLM response pipeline and execute malicious HTML or active JavaScript payloads inside the administrator's WebUI session. Because the application stores sensitive access keys in browser storage, successful exploitation allows complete API token extraction and administrative session hijacking.

Alon Barad
Alon Barad
8 views•7 min read
•about 5 hours ago•CVE-2026-94462
7.1

CVE-2026-94462: Broken Access Control in Spree Store API v3 Cart Association

An Insecure Direct Object Reference (IDOR) vulnerability exists in Spree open-source e-commerce solution versions 5.4.0 through 5.4.3 and 5.5.0 through 5.5.3. An authenticated attacker can predict or enumerate guest cart identifiers generated via Sqids and associate them with their own account. This unauthorized association leaks sensitive customer personally identifiable information (PII) and disrupts the checkout flow of active guest sessions.

Alon Barad
Alon Barad
8 views•6 min read
•about 6 hours ago•CVE-2026-77633
7.1

CVE-2026-77633: Storage-quota Time-of-Check to Time-of-Use (TOCTOU) Race Condition in Cloudreve

Cloudreve before version 4.18.0 contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its storage-quota verification logic. Authenticated attackers with basic write access can trigger multiple parallel upload sessions to bypass their storage limits, leading to host disk space exhaustion and Denial of Service.

Alon Barad
Alon Barad
5 views•7 min read
•about 7 hours ago•CVE-2026-77637
3.8

CVE-2026-77637: Privilege Scope Bypass in Cloudreve Administrative Tools

CVE-2026-77637 is a privilege scope bypass vulnerability in Cloudreve. It allows authenticated clients possessing read-only administrative credentials to access sensitive administrative tool endpoints that should require write-level permissions.

Amit Schendel
Amit Schendel
5 views•6 min read