CVE-2025-60357
Executive Summary
CVE-2025-60357 is a critical NoSQL injection vulnerability discovered in AhnLab EPP Management version 1.0.14.32-6249. The flaw resides in the eventlog/agentEvent/list endpoint, allowing an unauthenticated attacker to inject malicious NoSQL queries. Successful exploitation could lead to unauthorized data access, privilege escalation, or complete compromise of the EPP management server. As of this report, no official patch has been released, and no public proof-of-concept (PoC) code is available. The vulnerability is classified under CWE-943 (Improper Neutralization of Special Elements in Data Query Logic).
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
CVSS Breakdown & Threat Level
While a CVSS vector is not officially assigned, based on the nature of the vulnerability and the attack vector, a reasonable assessment is:
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The vulnerable component is the only one affected.
- Confidentiality (C): High (H) – Potential to read all data in the database.
- Integrity (I): High (H) – Potential to modify or delete data.
- Availability (A): High (H) – Potential to disrupt service.
Estimated CVSS Score: 9.8 (Critical)
Threat Level: Critical. The vulnerability is remotely exploitable without authentication, and the affected product is a central management console for endpoint protection, making it a high-value target for attackers.
Deep Dive & Mechanics
The vulnerability is a NoSQL injection in the eventlog/agentEvent/list endpoint. NoSQL databases (like MongoDB) are susceptible to injection when user-supplied input is not properly sanitized and is directly used in database queries. In this case, the endpoint likely accepts JSON or query parameters to filter or paginate event logs. An attacker can manipulate these parameters to inject operators like $ne, $gt, $regex, or $where to alter the query logic.
For example, a typical request might look like:
POST /eventlog/agentEvent/list
Content-Type: application/json
{"agentId": "some_value"}
An attacker could inject:
{"agentId": {"$ne": ""}}
This would return all records where agentId is not empty, effectively bypassing any intended filtering.
More critically, the attacker could use $where to execute arbitrary JavaScript within the database, potentially leading to remote code execution or data exfiltration.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable code pattern.
Vulnerable Code (Conceptual):
// Vulnerable endpoint handler
app.post('/eventlog/agentEvent/list', (req, res) => {
const query = req.body; // Directly using user input
db.collection('events').find(query).toArray((err, docs) => {
if (err) throw err;
res.json(docs);
});
});
Patched Code (Conceptual):
// Patched endpoint handler
app.post('/eventlog/agentEvent/list', (req, res) => {
// Sanitize input - only allow specific fields
const allowedFields = ['agentId', 'eventType', 'timestamp'];
const sanitizedQuery = {};
for (const field of allowedFields) {
if (req.body[field] && typeof req.body[field] === 'string') {
sanitizedQuery[field] = req.body[field];
}
}
db.collection('events').find(sanitizedQuery).toArray((err, docs) => {
if (err) throw err;
res.json(docs);
});
});
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Deploy a vulnerable instance of AhnLab EPP Management v1.0.14.32-6249 in an isolated environment.
- Use a tool like Burp Suite or Postman to interact with the API.
Exploitation Steps:
- Identify the vulnerable endpoint:
POST /eventlog/agentEvent/list - Send a benign request to understand the expected format:
{"agentId": "test"} - Attempt NoSQL injection by manipulating the JSON payload:
This should return all events.{"agentId": {"$ne": ""}} - For data extraction, use
$regexto brute-force values:{"agentId": {"$regex": "^a"}} - For more advanced exploitation, attempt to use
$whereto execute JavaScript:
If successful, this confirms code execution capability.{"$where": "this.agentId.length > 0"}
Blue Team (Defensive)
Detection:
- Monitor for unusual JSON payloads containing MongoDB operators (
$ne,$gt,$regex,$where, etc.). - Alert on requests to
/eventlog/agentEvent/listwith non-standard content types or unusually large payloads. - Implement Web Application Firewall (WAF) rules to block NoSQL injection patterns.
Mitigation:
- Immediately restrict network access to the EPP management console to trusted IPs only.
- If possible, disable the vulnerable endpoint or implement input validation at the application layer.
- Monitor logs for any signs of exploitation.
Indicators of Compromise (IOCs)
- Network:
- HTTP POST requests to
/eventlog/agentEvent/listwith JSON payloads containing MongoDB operators. - Unusual response sizes from the endpoint (e.g., returning all records instead of filtered ones).
- HTTP POST requests to
- Host:
- Unexpected database queries in MongoDB logs.
- Unauthorized data exports or modifications.
- File:
- No specific file-based IOCs identified.
Detection Engineering
YARA Rule
rule NoSQL_Injection_AhnLab_EPP {
meta:
description = "Detects NoSQL injection attempts against AhnLab EPP Management"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-60357"
strings:
$json_operator1 = "$ne"
$json_operator2 = "$gt"
$json_operator3 = "$regex"
$json_operator4 = "$where"
$json_operator5 = "$nin"
$endpoint = "/eventlog/agentEvent/list"
condition:
any of ($json_operator*) and $endpoint
}
Sigma Rule
title: NoSQL Injection Attempt Against AhnLab EPP Management
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects HTTP requests to the vulnerable endpoint with NoSQL injection patterns
author: Valters IT
date: 2025-04-01
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/eventlog/agentEvent/list'
cs-content-type: 'application/json'
keywords:
- '$ne'
- '$gt'
- '$regex'
- '$where'
- '$nin'
condition: selection and keywords
falsepositives:
- Legitimate use of MongoDB operators in rare cases
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-60357 - NoSQL Injection Attempt Against AhnLab EPP Management"; flow:to_server; content:"POST"; http_method; content:"/eventlog/agentEvent/list"; http_uri; content:"$ne"; http_client_body; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the affected system: Disconnect the AhnLab EPP Management server from the internet and restrict network access to only trusted internal IPs.
- Apply input validation: If possible, implement a reverse proxy or WAF to sanitize incoming JSON payloads, stripping out any MongoDB operators.
- Monitor for exploitation: Review logs for any signs of unauthorized access or data exfiltration.
Long-term Fix:
- Vendor Patch: Await an official patch from AhnLab. Contact their support for an ETA.
- Upgrade: Once a patched version is released, upgrade immediately.
- Code Review: If you have access to the source code, implement proper input validation and parameterized queries.
Workaround:
- Disable the
eventlog/agentEvent/listendpoint if it is not critical for operations. - Implement strict API key authentication for all endpoints.
Valters IT
DevSecOps & Cyber Threat Intelligence Expert
Report generated for CVE-2025-60357
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.