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: < 1% Very Low
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 solution or workaround provided in the CVE record.

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
Source ID Title
Github GHSA Github GHSA GHSA-c759-cx9p-mrwq lightrag-hku: Plaintext Passwords Compared Without Constant-Time Function
History

Sat, 26 Sep 2026 00:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


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-25T23:43:12.253Z

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

Link: CVE-2026-85725

cve-icon Vulnrichment

Updated: 2026-09-25T23:43:07.863Z

cve-icon NVD

Status : Deferred

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

Modified: 2026-09-26T00:16:37.513

Link: CVE-2026-85725

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-22T17:45:17Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy