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