CVE-2024-57638
Executive Summary
CVE-2024-57638 is a denial-of-service (DoS) vulnerability in the dfe_body_copy component of OpenLink Virtuoso Open-Source v7.2.11. An attacker can trigger a crash or resource exhaustion by sending crafted SQL statements, leading to service unavailability. No public proof-of-concept (PoC) or patch is currently available. The vulnerability has a CVSS score of 0.0 (unscored) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time.
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 OpenLink Virtuoso Open-Source package, which is distributed as source code and pre-built binaries. Users should monitor the official repository for patches and verify the integrity of downloaded packages using checksums.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (Unscored)
- Attack Vector: Network (likely)
- Attack Complexity: Low (likely)
- Privileges Required: None (likely)
- User Interaction: None (likely)
- Scope: Unchanged (likely)
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
- Threat Level: Medium (due to DoS potential, but low exploitation probability)
Deep Dive & Mechanics
The vulnerability resides in the dfe_body_copy function within the Virtuoso SQL engine. This function is responsible for copying data between internal structures during SQL statement processing. By sending a specially crafted SQL statement, an attacker can cause a memory corruption or infinite loop, leading to a denial of service.
The exact mechanism is not publicly documented, but based on the component name (dfe_body_copy), it likely involves improper handling of large or malformed data during query execution. The vulnerability is triggered via SQL statements, meaning an attacker with network access to the Virtuoso server (typically port 8890 for HTTP/SOAP or 1111 for ODBC/JDBC) can exploit it.
Vulnerable vs. Patched Code
No patch is currently available. The vulnerable code is in the dfe_body_copy function of Virtuoso Open-Source v7.2.11. A patched version would likely include bounds checking or input validation to prevent the crash.
Vulnerable code (conceptual):
void dfe_body_copy(DFE_BODY *src, DFE_BODY *dst) {
// No bounds checking on src->length
memcpy(dst->data, src->data, src->length);
}
Patched code (conceptual):
void dfe_body_copy(DFE_BODY *src, DFE_BODY *dst) {
if (src->length > MAX_BODY_SIZE) {
// Handle error
return;
}
memcpy(dst->data, src->data, src->length);
}
Exploitation & Lab Setup
Red Team
- Setup: Deploy Virtuoso Open-Source v7.2.11 on a Linux VM (e.g., Ubuntu 22.04).
- Craft SQL: Use a SQL client to send a crafted statement that triggers the vulnerability. Example (conceptual):
SELECT * FROM (SELECT 1 UNION SELECT REPLICATE('A', 1000000)) AS t; - Execute: Run the statement repeatedly to cause a DoS.
- Monitor: Observe server crash or unresponsiveness.
Blue Team
- Detection: Monitor for unusual SQL queries with large payloads or repeated failures.
- Mitigation: Restrict network access to Virtuoso ports (8890, 1111) using firewalls.
- Response: If DoS occurs, restart the Virtuoso service and analyze logs for the offending query.
Indicators of Compromise (IOCs)
- Network: Repeated SQL queries with large data payloads (e.g., >1MB) to port 8890 or 1111.
- Logs: Virtuoso error logs showing crashes in
dfe_body_copyor memory allocation failures. - System: High CPU/memory usage by the
virtuoso-tprocess, followed by process termination.
Detection Engineering
YARA Rule
rule CVE_2024_57638_Virtuoso_DoS {
meta:
description = "Detects SQL statements targeting dfe_body_copy in Virtuoso"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-57638"
strings:
$sql1 = "SELECT" nocase
$sql2 = "UNION" nocase
$sql3 = "REPLICATE" nocase
$large = /[A-Za-z0-9]{1000,}/ // Large payload
condition:
all of ($sql*) and #large > 5
}
Sigma Rule
title: CVE-2024-57638 Virtuoso DoS via Crafted SQL
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects SQL queries with large payloads targeting Virtuoso
author: Valters IT
logsource:
category: application
product: virtuoso
detection:
selection:
Query|contains: 'REPLICATE'
Query|length: > 10000
condition: selection
falsepositives:
- Legitimate large data imports
level: high
Suricata Rule
alert tcp any any -> any 8890 (msg:"CVE-2024-57638 Virtuoso DoS Attempt"; flow:to_server,established; content:"SELECT"; nocase; content:"REPLICATE"; nocase; pcre:"/[A-Za-z0-9]{1000,}/"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Restrict network access to Virtuoso ports (8890, 1111) using firewalls or iptables.
- Short-term: Monitor for unusual SQL queries and implement rate limiting.
- Long-term: Apply patches from OpenLink when available. Consider upgrading to a newer version.
- Workaround: Disable the
dfe_body_copyfunction if possible (not recommended without vendor guidance).
Report generated by Valters IT DevSecOps & CTI Division