CVE-2026-95520 RPM 堆缓冲区溢出漏洞
影响攻击者可利用恶意 RPM 包触发堆溢出,可能导致任意代码执行或进程崩溃
RPM 在处理不受信任的 RPM 包时存在堆缓冲区溢出漏洞。当解析符号链接条目且声明的 RPMTAG_LONGFILESIZES 值为 0xFFFFFFFFFFFFFFFF 时,iterReadArchiveNext() 中发生整数溢出,导致缓冲区分配被缩小为一个字节。随后攻击者可通过独立控制的 cpio 文件大小字段写入超出该分配范围的数据。
影响范围
受影响的具体 RPM 版本范围暂无公开信息,建议参考官方安全公告确认。
漏洞详情
该漏洞属于整数溢出引发的堆缓冲区溢出。解析符号链接条目时,超大文件大小值导致分配大小计算溢出,缓冲区被错误地缩小为一个字节。之后使用攻击者控制的 cpio 文件大小字段向该缓冲区写入数据,从而造成堆溢出。可通过 rpm2cpio、rpm2archive 及 rpm -qlvp 处理不受信任的包触发。
利用条件与风险
利用前提是用户或系统处理攻击者提供的恶意 RPM 包。实战中可能导致拒绝服务或潜在任意代码执行,风险较高。
修复建议
官方修复方案暂无公开信息,建议关注 RPM 官方安全更新并及时升级。临时缓解措施为避免使用 rpm2cpio、rpm2archive 或 rpm -qlvp 处理不受信任的 RPM 包。
A heap-based buffer overflow flaw was found in rpm. Parsing a symlink entry in an untrusted RPM package whose declared RPMTAG_LONGFILESIZES value is 0xFFFFFFFFFFFFFFFF causes an integer overflow in iterReadArchiveNext() that shrinks a buffer allocation to one byte, after which the payload’s independently-controlled cpio filesize field is used to write attacker-controlled data past the end of that allocation. This is reachable via rpm2cpio, rpm2archive, and rpm -qlvp on an untrusted package.