
DifuseHQ Kalmia CMS version 0.2.0 is vulnerable to user enumeration through distinguishable error responses in the /kal-api/auth/jwt/create authentication endpoint.
CVE ID: CVE-2025-65899
Product: DifuseHQ Kalmia CMS
Affected Version: 0.2.0
Vulnerability Type: Observable Response Discrepancy
Privileges Required: None
Allows unauthenticated attackers to enumerate valid usernames, enabling targeted password spraying, credential-stuffing, and account discovery attacks.
Pending maintainer approval - https://github.com/DifuseHQ/Kalmia/pull/34
Kalmia CMS version 0.2.0 contains a user enumeration vulnerability in its authentication mechanism. The application returns different error messages for invalid users (user_not_found) versus valid users with incorrect passwords (invalid_password). This observable response discrepancy allows unauthenticated attackers to enumerate valid usernames on the system, which can be leveraged for subsequent targeted attacks such as password spraying or social engineering.
/kal-api/auth/jwt/createThe authentication system fails to implement consistent error responses, revealing information about the existence of user accounts through different error messages:
{"message": "user_not_found"}{"message": "invalid_password"}This difference in responses allows attackers to distinguish between non-existent and valid user accounts.
The attacker attempts to authenticate with a non-existent username and observes the server response returning User not found.
Using Burp Suite to intercept and analyze the authentication request, the attacker confirms the server returns user_not_found for invalid usernames, indicating the user does not exist in the system.
When testing with a valid username but incorrect password, Burp Suite captures the server response showing invalid_password, confirming the username exists in the system.
Analysis of the backend authentication logic reveals the flawed implementation that returns different error messages:
user_not_foundinvalid_passwordThis sequential validation process creates the observable discrepancy that enables user enumeration.
The cve-2025-65899.py script automates the user enumeration process:
python cve-2025-65899.py <TARGET_URL> [OPTIONS]
url: Target Kalmia CMS base URL (required)-u, --user: Single username to test-p, --password: Password to use for testing (required)-w, --wordlist: Wordlist file for bulk user enumeration# Test if specific user exists
python cve-2025-65899.py http://target.com:2727 -u admin -p wrongpass
# Results:
# [+] Valid user: admin (if user exists)
# OR
# (no output if user doesn't exist)
# Enumerate users from wordlist
python cve-2025-65899.py http://target.com:2727 -w users.txt -p wrongpass
# Create a simple wordlist
echo -e "admin\nuser\nadministrator\ntest\nguest" > users.txt
Disclaimer: This information is provided for educational and defensive purposes only. Users are responsible for ensuring they have proper authorization before testing any systems.