CVE-2024-57644
Executive Summary
CVE-2024-57644 is a denial-of-service (DoS) vulnerability in the itc_hash_compare component of OpenLink Virtuoso Open-Source version 7.2.11. An attacker can exploit this issue by sending crafted SQL statements, causing the database server to crash or become unresponsive. The vulnerability has a CVSS score of 0.0 (placeholder) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public proof-of-concept or patch is available.
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 database, which is distributed as a standalone binary package. It is not an NPM, PyPI, Go, or Ruby package. Users should verify the integrity of their Virtuoso installation and monitor for official updates from OpenLink.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (placeholder – no official vector assigned)
- 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 and lack of patch)
Deep Dive & Mechanics
The vulnerability resides in the itc_hash_compare function within the Virtuoso SQL engine. This function is used for comparing hash values during query execution. By sending specially crafted SQL statements, an attacker can trigger an infinite loop, memory exhaustion, or a null-pointer dereference, leading to a denial of service.
The exact mechanism involves manipulating the hash comparison logic to cause an unhandled exception or resource exhaustion. Since the function is called during normal SQL operations, any authenticated or unauthenticated user (depending on configuration) can exploit this by submitting malicious queries.
Vulnerable vs. Patched Code
No patched version is available. The vulnerable code is in the itc_hash_compare component of Virtuoso Open-Source v7.2.11. A patch would likely involve adding input validation, bounds checking, or exception handling to prevent the DoS condition.
Vulnerable code snippet (hypothetical):
int itc_hash_compare(void *a, void *b) {
// No bounds checking on input lengths
while (*a && *b) {
if (*a != *b) return 0;
a++; b++;
}
return 1;
}
Patched code snippet (hypothetical):
int itc_hash_compare(void *a, void *b, size_t len_a, size_t len_b) {
size_t min_len = (len_a < len_b) ? len_a : len_b;
for (size_t i = 0; i < min_len; i++) {
if (a[i] != b[i]) return 0;
}
return 1;
}
Exploitation & Lab Setup
Red Team
To exploit this vulnerability, an attacker would send a crafted SQL query that triggers the itc_hash_compare function with malicious input. Example:
-- Crafted query to cause DoS
SELECT * FROM sys_users WHERE hash = REPEAT('A', 1000000);
This query may cause the server to hang or crash due to excessive memory allocation or infinite loop.
Lab Setup:
- Install Virtuoso Open-Source v7.2.11 on a test VM.
- Start the Virtuoso server and connect via
isql. - Execute the crafted SQL statement.
- Observe server crash or unresponsiveness.
Blue Team
To detect exploitation attempts, monitor for:
- SQL queries with extremely long strings or unusual patterns.
- Sudden spikes in CPU or memory usage on the Virtuoso server.
- Repeated connection attempts followed by server crashes.
Detection:
- Enable SQL query logging in Virtuoso.
- Use network monitoring to detect anomalous SQL traffic.
- Implement rate limiting on SQL connections.
Indicators of Compromise (IOCs)
- Network: SQL queries containing
REPEAT('A',or similar long string patterns. - System: High CPU/memory usage by the
virtuoso-tprocess. - Logs: Virtuoso error logs showing "out of memory" or "hash compare failed" messages.
- File: Core dumps from the Virtuoso process.
Detection Engineering
YARA Rule
rule CVE_2024_57644_Virtuoso_DoS {
meta:
description = "Detects crafted SQL queries targeting CVE-2024-57644"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-57644"
strings:
$sql1 = "REPEAT(" ascii nocase
$sql2 = "hash_compare" ascii nocase
$sql3 = "itc_hash" ascii nocase
condition:
any of ($sql*) and filesize < 10KB
}
Sigma Rule
title: CVE-2024-57644 Virtuoso DoS Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SQL queries with long strings targeting Virtuoso hash_compare
author: Valters IT
date: 2025-04-10
logsource:
category: application
product: virtuoso
detection:
selection:
Query|contains:
- 'REPEAT('
- 'hash_compare'
- 'itc_hash'
condition: selection
falsepositives:
- Legitimate use of REPEAT function with small strings
level: high
Suricata Rule
alert tcp any any -> any 1111 (msg:"CVE-2024-57644 Virtuoso DoS Attempt"; flow:to_server,established; content:"REPEAT("; nocase; content:"hash_compare"; nocase; distance:0; within:100; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Restrict network access to the Virtuoso server to trusted IPs only.
- Short-term: Monitor for official patches from OpenLink. If none available, consider disabling the
itc_hash_comparefunction if possible. - Long-term: Upgrade to a patched version once released. Implement input validation and query sanitization.
- Workaround: Use a web application firewall (WAF) to block SQL queries containing suspicious patterns.
Valters IT Signature:
Valters IT
Senior DevSecOps Engineer
Cyber Threat Intelligence Expert