CVE-2026-41678rust-openssl库0.10.78之前版本存在严重越界写入漏洞。`aes::unwrap_key()`函数因断言条件反转,在处理特定大小的缓冲区时会写入缓冲区末尾之外,导致内存破坏,攻击者可利用此漏洞造成拒绝服务或潜在的代码执行。
该漏洞源于`aes::unwrap_key()`函数中错误的边界检查逻辑。正确的逻辑应确保输出缓冲区`out`足够大(即`out.len() >= in_.len() - 8`),但实际代码错误地使用了反转的条件`out.len() + 8 <= in_.len()`。这意味着只有当输出缓冲区小于或等于最小所需大小时,函数才会通过检查。当传入较小的缓冲区时,函数会向`out`缓冲区末尾之外的内存区域写入`in_.len() - 8 - out.len()`字节的数据。由于这是一个公共的安全函数调用,该越界写入可能导致内存损坏、应用程序崩溃或任意代码执行。