CVE-2026-33298llama.cpp在b7824版本前的ggml_nbytes函数中存在整数溢出漏洞。攻击者可构造特制的GGUF文件,导致计算张量大小时发生回绕,从而绕过内存校验并触发堆缓冲区溢出,最终可能导致远程代码执行。
该漏洞的核心在于ggml_nbytes函数在计算张量所需的内存大小时未能防止整数溢出。攻击者通过精心设计GGUF文件中的张量维度(例如设置极大的元素数量),使得计算出的总字节数超过数据类型的上限而发生回绕(如从Exabytes级别回绕至MB级别)。这导致函数返回一个远小于实际需求的尺寸值。应用程序依据该错误值通过内存检查并分配堆内存,但在后续读写操作时,由于实际数据量远超分配空间,导致堆缓冲区溢出。攻击者可利用此缺陷覆盖关键内存结构,进而控制程序执行流,实现远程代码执行。