llama.cpp 项目发布了 b11000 版本,解决了 RPC 服务器中的一个关键安全漏洞。该修复解决了一个使用后释放(use-after-free)错误,该错误允许未经身份验证的远程客户端通过操纵缓存的计算图来实现远程代码执行。

  • 之前的实现在 GRAPH_RECOMPUTE 操作期间按设备缓存计算图,以避免重新发送张量数据。
  • 这些缓存节点持有指向后端缓冲区的直接指针;如果缓冲区通过 FREE_BUFFER 被释放,随后的重新执行将访问悬空指针。
  • 攻击者可以通过 ALLOC_BUFFER 和 SET_TENSOR 命令重塑内存块,以泄露 libc 地址并劫持缓冲区接口 vtable。
  • 该补丁在 free_buffer() 中丢弃所有缓存的计算图,导致客户端在下一次调用时回退到 GRAPH_COMPUTE。

此更新防止了针对 llama.cpp RPC 服务器的远程代码执行利用,且无需任何协议或 API 更改。