# vLLM 使用 Python 3.12 内置的 hash() 函数导致 vLLM 前缀缓存中出现可预测的哈希碰撞问题
## 概述
vLLM 是一个用于大规模语言模型 (LLM) 的高性能和内存高效的推理和服务引擎。恶意构造的语句可能导致哈希碰撞,从而导致缓存复用,并干扰后续响应,引发意外行为。
## 影响版本
该漏洞影响 vLLM 0.7.2 之前的版本。
## 细节
前缀缓存利用了 Python 内置的 `hash()` 函数。从 Python 3.12 开始,`hash(None)` 的行为变为一个可预测的常量值。这使得利用哈希碰撞变得更为可行。如果发生碰撞,会导致使用由不同内容生成的缓存。攻击者可以利用已知的提示语和可预测的哈希行为,故意填充缓存,使用与正在使用的其他提示语发生碰撞的提示语。
## 影响
该问题已在 v0.7.2 版本中得到解决,所有用户应升级。目前没有已知的工作绕过此漏洞的方法。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: [Core] Improve hash collision avoidance in prefix caching by russellb · Pull Request #12621 · vllm-project/vllm · GitHub -- 🔗来源链接
标签: x_refsource_MISC
标题: vLLM using built-in hash() from Python 3.12 leads to predictable hash collisions in vLLM prefix cache · Advisory · vllm-project/vllm · GitHub -- 🔗来源链接
标签: x_refsource_CONFIRM
标题: gh-99540: Constant hash for _PyNone_Type to aid reproducibility (GH-9… · python/cpython@432117c · GitHub -- 🔗来源链接
标签: x_refsource_MISC