开源llama.cpp Releases·原文 2026年10月9日

llama.cpp发布b11529,修复ggml_acc负偏移导致的越界写

llama.cpp版本b11529修复了ggml_acc_impl中将size_t偏移量窄化为int32_t时未做范围检查的问题,该问题可导致负偏移经符号扩展后绕过边界断言,在目标缓冲区下方发生越界写。

AI解读:该修复针对ggml中的ggml_acc_impl函数:它把size_t类型的偏移量窄化为int32_t之前没有检查是否超出int32_t范围,因此较大的偏移量可能截断为负的int32_t。

据发布说明描述,前向过程中该负值会被符号扩展成一个巨大的size_t,使边界断言因回绕而失效,从而允许在目标缓冲区下方发生越界写。

修复方式是在窄化之前先检查偏移量,与ggml_set_impl中已有的检查保持一致,对应PR #30135。

b11529同时发布了覆盖macOS/iOS、Linux、Android、Windows、openEuler与UI的多平台预编译产物;其中macOS Apple Silicon的KleidiAI版本和openEuler构建标注为DISABLED。

llama.cpp发布构建b11529,包含针对ggml的越界写修复:ggml_acc_impl在把size_t偏移量窄化为int32_t时没有检查是否放得下,较大的偏移量可能截断成负的int32_t(PR #30135)。

发布说明称,前向过程中该负值被符号扩展为巨大的size_t,边界断言因此回绕失效,结果是在目标缓冲区下方发生越界写。修复做法是在窄化之前先检查偏移量,与ggml_set_impl中已有的同类检查保持一致。

触发条件在偏移量的窄化环节

问题出在ggml_acc_impl对偏移量的处理:size_t转为int32_t前缺少范围检查,只有偏移量大到截断为负值时才可能触发后续的越界写路径。发布说明将其与ggml_set_impl的已有检查对照,说明该修复是补齐同一类校验。

  • 涉及函数:ggml_acc_impl(ggml_acc的实现)
  • 问题类型:size_t偏移量窄化为int32_t未检查,大偏移量截断为负值
  • 后果:符号扩展成巨大size_t使边界断言回绕失效,造成目标缓冲区下方越界写
  • 修复:在窄化前检查偏移量,对齐ggml_set_impl的既有检查
  • 对应PR:#30135

b11529的发布范围与不可用项

该版本同时提供跨平台预编译产物,集中列出的是下载入口而非功能变更。发布页明确标注部分构建被禁用:macOS Apple Silicon(arm64)的KleidiAI enabled版本链接到PR #23780 并标记DISABLED;openEuler构建链接到PR #23705 并标记DISABLED。

  • 可用平台覆盖:macOS/iOS、Linux(Ubuntu x64/arm64/s390x,含CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL FP32/FP16等构建)、Android、Windows、UI
  • Linux arm64有Snapdragon构建,涵盖CPU、Adreno GPU、Hexagon NPU,并附有setup guide
  • Android arm64提供CPU版与Snapdragon(CPU、Adreno GPU、Hexagon NPU)版
  • Windows提供CPU、OpenCL Adreno、CUDA 12.4/13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0等构建
  • 标记为DISABLED:macOS Apple Silicon(arm64,KleidiAI enabled,PR #23780)、openEuler全部构建(PR #23705)
  • 发布方未在说明中给出该漏洞的实际利用案例或影响范围评估

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观