漏洞概述 该漏洞涉及在 函数中分配了一个固定大小为 128 字节的缓冲区,并将 的返回值(即完整的 OID 长度,而非实际写入的字节数)作为键长度传递给 。当 OID 字符串化超过 128 字节时,会导致 读取超出分配范围,从而引发堆溢出。 影响范围 此漏洞影响所有代码路径和所有 OpenBSD 版本,无需版本守卫即可消除堆溢出问题。 修复方案 修复方案包括两个步骤: 1. 两阶段 OBJ2objxt:首先探测长度,然后精确分配和格式化,使用 作为 的键长度,而不是 的返回值。 2. 在错误路径上减少引用计数:在 失败后,通过 减少引用计数,避免泄漏到 。 代码块