CVE-2025-25183 | vLLM using built-in hash() from Python 3.12 leads to predictable hash collisions in vLLM prefix cache

vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Maliciously constructed statements can lead to hash collisions, resulting in cache reuse, which can interfere with subsequent responses and cause unintended behavior. Prefix caching makes use of Python's built-in hash() function. As of Python 3.12, the behavior of hash(None) has changed to be a predictable constant value. This makes it more feasible that someone could try exploit hash collisions. The impact of a collision would be using cache that was generated using different content. Given knowledge of prompts in use and predictable hashing behavior, someone could intentionally populate the cache using a prompt known to collide with another prompt in use. This issue has been addressed in version 0.7.2 and all users are advised to upgrade. There are no known workarounds for this vulnerability.

Published: 2025-02-07 Last update: 2025-07-01 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2025-25183 is rated Low Risk (29.7/100): CVSS Low severity, with medium exploitation likelihood (EPSS 0.32%). Mandatory action: Monitor for updates and reassess as exploit intelligence or EPSS changes.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2025-25183

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-03-28 0.36% 0.32% -0.04%
2 2026-03-19 0.31% 0.36% +0.05%
3 2026-03-18 0.31%

Full EPSS history (5 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2025-25183

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
2.6 3.1 LOW
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:L/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:L)
A normal user session is enough; they don’t have to be admin.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:N)
Service keeps running; no real outage angle.
1.2 1.4 [email protected]

Weakness enumeration for CVE-2025-25183

GitHub Security Advisory for CVE-2025-25183

GHSA-rm76-4mrf-v9r8 · Severity: low · Ecosystem: pip — vLLM uses Python 3.12 built-in hash() which leads to predictable hash collisions in prefix cache

OS Trackers for CVE-2025-25183

vendor priority summary link
redhat low https://access.redhat.com/security/cve/CVE-2025-25183

Affected software / configurations for CVE-2025-25183

Vendor Product Version Raw CPE
vllm vllm < 0.7.2 cpe:2.3:a:vllm:vllm:*:*:*:*:*:*:*:*

References for CVE-2025-25183

cvelogic Threat Intelligence