CVE-2024-57648
Executive Summary
CVE-2024-57648 is a denial-of-service (DoS) vulnerability in the itc_set_param_row component of OpenLink Virtuoso Open-Source Edition version 7.2.11. An attacker can trigger this issue by sending crafted SQL statements, causing the database server to crash or become unresponsive. No CVSS score, EPSS probability, or public exploit code has been published as of this analysis. The vendor has not released an official patch, and no OSV or GitHub advisory data is available.
This vulnerability is not related to any package ecosystem (NPM, PyPI, Go, Ruby) and does not involve a WordPress plugin or component.
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
- CVSS Score: 0.0 (No vector assigned)
- Attack Vector (AV): Network (likely)
- Attack Complexity (AC): Low (likely)
- Privileges Required (PR): None (likely)
- User Interaction (UI): None (likely)
- Scope (S): Unchanged
- Confidentiality (C): None
- Integrity (I): None
- Availability (A): High
- Threat Level: Medium (due to DoS impact and lack of patch)
Deep Dive & Mechanics
The vulnerability resides in the itc_set_param_row function within the Virtuoso SQL engine. This function is responsible for setting parameter rows during query execution. By sending a specially crafted SQL statement that exploits improper input validation or memory handling in this component, an attacker can cause a segmentation fault or infinite loop, leading to a denial of service.
The exact root cause is not publicly documented, but based on similar CVEs in Virtuoso (e.g., CVE-2023-48957), it likely involves a buffer overflow, null pointer dereference, or integer overflow when processing malformed SQL parameters.
Vulnerable vs. Patched Code
No patched version is available. The vulnerable code path is in itc_set_param_row within the Virtuoso source tree (likely in libsrc/Wi/ or virtuoso-opensource/libsrc/). Without a patch, the only mitigation is to restrict SQL access or apply network-level filtering.
Exploitation & Lab Setup
Red Team
No public exploit code exists. To reproduce the DoS, an attacker would need to craft a SQL statement that triggers the vulnerable code path. Example (hypothetical):
-- Hypothetical crafted SQL to trigger DoS
SELECT itc_set_param_row('malformed', REPLICATE('A', 999999));
Lab Setup:
- Install Virtuoso Open-Source 7.2.11 on a Linux VM.
- Start the server with default configuration.
- Connect via
isqlor ODBC. - Execute the crafted SQL statement.
- Observe server crash or hang.
Blue Team
- Monitor for unusual SQL statements containing long strings or unexpected function calls.
- Use database audit logs to detect repeated failed queries.
- Implement rate limiting on database connections.
- Deploy WAF rules to block SQL injection patterns.
Indicators of Compromise (IOCs)
- Log Entries: Virtuoso error logs showing segmentation faults or "out of memory" errors.
- Network Traffic: SQL queries with abnormally large parameter values.
- Process Behavior:
virtuoso-tprocess crashes or enters infinite loop (high CPU usage). - File System: Core dump files in the Virtuoso data directory.
Detection Engineering
YARA Rule
rule CVE_2024_57648_Virtuoso_DoS {
meta:
description = "Detects crafted SQL statements targeting itc_set_param_row in Virtuoso"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-57648"
strings:
$sql1 = "itc_set_param_row" ascii wide nocase
$sql2 = "REPLICATE" ascii wide nocase
$sql3 = "CHAR(" ascii wide nocase
condition:
any of ($sql*) and filesize < 10KB
}
Sigma Rule
title: CVE-2024-57648 Virtuoso DoS via Crafted SQL
id: 8a3f7c2e-1b5d-4a9e-8c6f-0d2e3f4a5b6c
status: experimental
description: Detects SQL queries attempting to exploit itc_set_param_row in Virtuoso
author: Valters IT
date: 2025-04-10
logsource:
category: database
product: virtuoso
detection:
selection:
Query|contains: 'itc_set_param_row'
condition: selection
falsepositives:
- Legitimate use of itc_set_param_row with normal parameters
level: high
Suricata Rule
alert tcp $EXTERNAL_NET any -> $HOME_NET 1111 (msg:"CVE-2024-57648 Virtuoso DoS Attempt"; flow:to_server,established; content:"itc_set_param_row"; nocase; content:"REPLICATE|20|"; distance:0; within:100; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Restrict network access to the Virtuoso server (port 1111 by default) using firewall rules.
- Short-term: Disable the
itc_set_param_rowfunction if not required, or apply input validation at the application layer. - Long-term: Monitor the OpenLink website for an official patch. Consider migrating to a supported database if no patch is released.
- Workaround: Use a reverse proxy or WAF to filter SQL statements containing suspicious patterns.
Valters IT