内容提要
GGUF文件格式是用于存储和加载GGML库模型权重的二进制文件格式。GGUF格式最近在分发训练好的机器学习模型方面变得流行,并成为Llama-2中使用模型的常用格式之一。GGML库在解析输入文件时存在内存损坏漏洞,攻击者可以利用这些漏洞通过提供精心制作的gguf文件在受害者计算机上执行代码。已修复这些漏洞,并可从提交6b14d73中获取补丁。
延伸解读
漏洞影响范围与利用条件
这些漏洞影响所有使用GGML库解析GGUF文件的场景,包括llama.cpp、Python llm模块和ctransformers等。攻击者可通过提供精心构造的GGUF文件触发内存损坏,进而执行任意代码。由于GGUF格式在Llama-2等模型分发中流行,开发者和用户从不可信来源加载模型时面临风险。
漏洞技术根源:缺乏边界检查
根本原因是GGML库在解析文件时未对用户输入进行充分验证。例如,KV计数、张量计数、字符串长度和数组元素数量等字段均未检查,导致整数溢出和堆溢出。此外,数组索引未做界限检查,可能越界访问GGUF_TYPE_SIZE数组,引发整数回绕。这些缺陷使得攻击者能控制堆内存布局。
修复与缓解措施
Databricks与GGML.ai团队合作,已在提交6b14d73中修复所有6个CVE。用户应更新到包含该补丁的版本。在无法立即升级的情况下,应避免加载来源不明的GGUF文件,并关注模型分发渠道的可信度。长期来看,机器学习模型格式的安全审查需加强。
Q&A
GGUF文件格式是什么?
GGUF文件格式是一种用于存储和加载GGML库模型权重的二进制文件格式。
GGUF格式的安全漏洞有哪些?
GGUF格式存在多个内存损坏漏洞,包括未检查的KV计数、读取字符串类型时的堆溢出等。
如何修复GGUF文件格式的漏洞?
这些漏洞已通过提交6b14d73修复,用户可以从该提交中获取补丁。
GGUF格式在机器学习模型中有什么应用?
GGUF格式在分发训练好的机器学习模型方面变得流行,尤其是在Llama-2中。
GGML库的内存损坏漏洞是如何被利用的?
攻击者可以通过提供精心制作的gguf文件,利用GGML库在解析输入文件时的内存损坏漏洞执行代码。
GGUF格式的解析过程中存在哪些潜在风险?
解析过程中存在多个潜在的内存溢出漏洞,可能导致整数溢出和恶意软件分发。