CVE-2026-9149libsolv库中存在堆缓冲区溢出漏洞。该漏洞源于`repo_add_solv`函数处理特制`.solv`文件时,未正确验证负大小值,导致内存分配不足及越界写入。攻击者可诱导受害者解析恶意文件,引发拒绝服务。
该漏洞位于libsolv库的`repo_add_solv`函数中,属于典型的内存破坏类漏洞。其根本原因在于解析特定格式的`.solv`元数据文件时,程序缺乏对输入数据中“大小”字段的边界检查。当攻击者构造一个包含负大小值的恶意`.solv`文件时,`repo_add_solv`函数会直接使用该值进行内存分配。由于负值被错误地处理或直接传递,导致分配的堆内存块远小于实际所需的数据大小。随后,程序执行数据拷贝操作时,写入的数据量超过了分配的缓冲区边界,从而触发堆缓冲区溢出。这种越界写入不仅会破坏堆内存结构,导致应用程序异常终止(DoS),在特定条件下还可能被利用来执行任意代码,尽管根据CVSS分析,其主要影响体现为服务可用性的丧失。