GHSA-q437-g7fv-2jvv: Lemur user-update path stores plaintext passwords
A vulnerability in Lemur before version 1.9.2 causes user password updates via the admin-only PUT /api/1/users/<id> endpoint to store passwords in plaintext instead of hashing them. This occurs because the bcrypt hashing function is only triggered on user creation (before_insert event) but not on updates (before_update event), and the update service does not explicitly hash passwords. As a result, plaintext passwords are persisted in the database, causing login failures and exposing credentials in the event of database compromise.
AI Analysis
Technical Summary
The Lemur application has a flaw in its user password update mechanism. The User model hashes passwords only on insert via a SQLAlchemy before_insert event listener, but no equivalent before_update listener exists. The update service assigns new passwords directly to the user.password field without hashing. Consequently, when an administrator changes a user's password through the PUT /api/1/users/<id> endpoint, the password is stored in cleartext in the database. This undermines the protection normally provided by bcrypt hashing, exposing plaintext credentials to attackers who gain database access. The issue affects versions prior to 1.9.2.
Potential Impact
Passwords changed via the affected admin endpoint are stored in plaintext, causing authentication failures since the login process expects bcrypt hashes. More critically, plaintext passwords in the database or backups allow attackers who exfiltrate this data to immediately use valid credentials without cracking hashes. This significantly increases the risk of credential compromise and lateral damage, especially since password resets are typically performed post-incident and users often reuse passwords across services.
Mitigation Recommendations
A fix is available by registering the password hashing function as a listener on both before_insert and before_update SQLAlchemy events to ensure all password changes are hashed. Alternatively, the update service can explicitly call the hash_password method after assigning a new password. The preferred fix is the event listener approach to cover all code paths. Additionally, a one-time migration should detect and remediate any plaintext passwords already stored by rotating those credentials, as they are considered compromised. Operators should check the vendor advisory or Lemur's official repository for patched versions and apply updates accordingly.
GHSA-q437-g7fv-2jvv: Lemur user-update path stores plaintext passwords
Description
A vulnerability in Lemur before version 1.9.2 causes user password updates via the admin-only PUT /api/1/users/<id> endpoint to store passwords in plaintext instead of hashing them. This occurs because the bcrypt hashing function is only triggered on user creation (before_insert event) but not on updates (before_update event), and the update service does not explicitly hash passwords. As a result, plaintext passwords are persisted in the database, causing login failures and exposing credentials in the event of database compromise.
CVSS v3.1
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The Lemur application has a flaw in its user password update mechanism. The User model hashes passwords only on insert via a SQLAlchemy before_insert event listener, but no equivalent before_update listener exists. The update service assigns new passwords directly to the user.password field without hashing. Consequently, when an administrator changes a user's password through the PUT /api/1/users/<id> endpoint, the password is stored in cleartext in the database. This undermines the protection normally provided by bcrypt hashing, exposing plaintext credentials to attackers who gain database access. The issue affects versions prior to 1.9.2.
Potential Impact
Passwords changed via the affected admin endpoint are stored in plaintext, causing authentication failures since the login process expects bcrypt hashes. More critically, plaintext passwords in the database or backups allow attackers who exfiltrate this data to immediately use valid credentials without cracking hashes. This significantly increases the risk of credential compromise and lateral damage, especially since password resets are typically performed post-incident and users often reuse passwords across services.
Mitigation Recommendations
A fix is available by registering the password hashing function as a listener on both before_insert and before_update SQLAlchemy events to ensure all password changes are hashed. Alternatively, the update service can explicitly call the hash_password method after assigning a new password. The preferred fix is the event listener approach to cover all code paths. Additionally, a one-time migration should detect and remediate any plaintext passwords already stored by rotating those credentials, as they are considered compromised. Operators should check the vendor advisory or Lemur's official repository for patched versions and apply updates accordingly.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-q437-g7fv-2jvv
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-55164"]
- Ecosystems
- ["PyPI"]
- Database Specific Severity
- MODERATE
- Cvss Version
- 3.1
Threat ID: 6a3ef7e527e9c79719032b46
Added to database: 06/26/2026, 22:06:29 UTC
Last enriched: 06/26/2026, 22:44:42 UTC
Last updated: 06/26/2026, 22:44:42 UTC
Views: 2
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.