Description
LightRAG provides simple and fast retrieval-augmented generation. Prior to 1.5.5, verify_password in lightrag/api/passwords.py compares plaintext AUTH_ACCOUNTS password values with Python's == operator. The comparison can return after the first mismatching byte, creating response-time differences based on password length and matching prefixes. A network attacker with sufficiently low-latency access can repeatedly query the /login endpoint and use the timing oracle to recover a plaintext-configured password character by character. Deployments using bcrypt-prefixed password values are not affected by this comparison path. This issue is fixed in version 1.5.5.
Published: 2026-09-22
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: Password Disclosure
Action: Apply Patch
AI Analysis

Impact

The bug is a timing side‑channel in LightRAG’s password verification. Prior to version 1.5.5, the code compared stored plaintext passwords to user input with Python's == operator, which can terminate early on the first mismatching byte. This creates measurable differences in response time that reveal how many leading bytes of the password match the supplied reference. An attacker can exploit this oracle to recover a plaintext‑configured password one character at a time. The impact is the disclosure of credentials that are stored in cleartext, potentially giving the attacker full access to the associated account and the system as a whole.

Affected Systems

The vulnerability affects the LightRAG application produced by HKUDS. Any deployed instance running a version earlier than 1.5.5 is vulnerable. Accounts that store passwords as bcrypt‑prefixed values are not impacted because they do not use the insecure comparison path. Deployments that use plain‑text stored passwords or other non‑bcrypt hashes are exposed.

Risk and Exploitability

The CVSS score of 5.9 indicates moderate severity. EPSS data is not available, and the issue is not listed in the CISA KEV catalog. The attack vector can be inferred as a network‑based attack: a remote attacker who can reach the /login endpoint with low latency can repeatedly query it and measure response times to narrow down the correct password. The flaw does not require any privileged access or local code execution; it simply leverages the timing difference during authentication.

Generated by OpenCVE AI on September 22, 2026 at 17:37 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade LightRAG to version 1.5.5 or later, which replaces the insecure comparison with a constant‑time function.
  • For existing accounts that store plaintext passwords, rehash them using a bcrypt‑prefixed scheme or another secure salted hash function before the next login attempt.
  • If an upgrade cannot be performed immediately, disable or isolate the /login endpoint until the upgrade is applied to prevent timing‑based queries from external observers.

Generated by OpenCVE AI on September 22, 2026 at 17:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 22 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Hkuds
Hkuds lightrag
Vendors & Products Hkuds
Hkuds lightrag

Tue, 22 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description LightRAG provides simple and fast retrieval-augmented generation. Prior to 1.5.5, verify_password in lightrag/api/passwords.py compares plaintext AUTH_ACCOUNTS password values with Python's == operator. The comparison can return after the first mismatching byte, creating response-time differences based on password length and matching prefixes. A network attacker with sufficiently low-latency access can repeatedly query the /login endpoint and use the timing oracle to recover a plaintext-configured password character by character. Deployments using bcrypt-prefixed password values are not affected by this comparison path. This issue is fixed in version 1.5.5.
Title LightRAG: Plaintext Passwords Compared Without Constant-Time Function
Weaknesses CWE-208
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-22T16:16:36.326Z

Reserved: 2026-09-04T14:45:10.648Z

Link: CVE-2026-85725

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-09-22T17:17:27.203

Modified: 2026-09-22T17:17:27.330

Link: CVE-2026-85725

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-22T17:30:18Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy