/ data / vuln / llama-cpp / CVE-2026-27940.yaml
CVE-2026-27940.yaml
 1  info:
 2    name: llama-cpp
 3    cve: CVE-2026-27940
 4    summary: llama.cpp mem_size 计算整数溢出导致堆缓冲区溢出,可通过恶意 GGUF 文件触发任意代码执行
 5    details: >-
 6      llama.cpp 是基于 C/C++ 的 LLM 模型推理引擎。b8146 构建版本之前,gguf.cpp 中的
 7      gguf_init_from_file_impl() 函数在 mem_size 计算中存在整数溢出漏洞。CVE-2025-53630
 8      虽然为 ctx->size 的逐次累加添加了溢出检查,但最终的 mem_size 计算公式
 9      (n_tensors+1)*ggml_tensor_overhead() + ctx->size 未加防护。当 ctx->size 接近
10      SIZE_MAX 时(可通过两个大型 I8 张量实现,各次累加均通过 CVE-2025-53630 检查),
11      最终加法产生整数回绕,导致堆分配大小偏小。后续的 fread() 调用将 528+ 字节的攻击
12      者可控数据写入缓冲区边界之外。通过将分配大小调整到 glibc tcache 范围内,可将此漏
13      洞升级为完整的任意代码执行(通过 system(/bin/sh) 获取 root shell)。攻击向量为本
14      地(AV:L),需诱导用户加载恶意 GGUF 模型文件。该漏洞是对同一函数中 CVE-2025-53630
15      修复的绕过。目前无公开 PoC,利用成熟度为 LOW。
16    cvss: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
17    severity: HIGH
18    security_advise: 将 llama.cpp 升级至 b8146 或更高构建版本。修复版本在 gguf_init_from_file_impl() 的 mem_size 计算中增加了溢出防护,防止 ctx->size 接近 SIZE_MAX 时的整数回绕。同时应避免加载来自不可信来源的 GGUF 模型文件。
19    references:
20    - https://github.com/ggml-org/llama.cpp/security/advisories/GHSA-3p4r-fq3f-q74v
21    - https://nvd.nist.gov/vuln/detail/CVE-2026-27940
22  rule: version < "b8146"
23  references:
24  - https://github.com/ggml-org/llama.cpp/security/advisories/GHSA-3p4r-fq3f-q74v
25  - https://nvd.nist.gov/vuln/detail/CVE-2026-27940