← 文章 / 编程开发
rustsec 5小时前 · 2026-09-29 02:43:34 · 1 阅读

RUSTSEC-2026-0301: Vulnerability in stack_collections

报告时间 2026 年 9 月 22 日 发布时间 2026 年 9 月 22 日 受影响包 stack_collections (crates.io) 类型 漏洞 分类 关键词 #double-free(二次释放) #unwind-safety(展开安全) 参考链接 已修复版本
  • >=0.3.3
不受影响版本
  • <0.3.0

描述

概述

StackVec::retain 原先要等内部循环执行完毕才会把新长度写入 self.len。如果 retain 谓词或被移除元素的 Drop 实现在循环结束前发生 panic,栈展开过程中 self.len 仍保持 retain 之前的原始值,导致 0..len 范围内残留一个已复制或已销毁的元素。随后 StackVec 自身的 Drop 会再次处理该槽位,引发二次 drop(对持有堆内存的类型则造成 double-free)。

影响

该漏洞影响 StackVec<T, CAP>::retain,前提是 T 实现了 Drop,且谓词或被移除元素的析构函数可能 panic,并且构建启用了栈展开(panic = "unwind")。no_std 或 panic = "abort" 的构建不会触发此问题,因为不会发生栈展开。

修复

已在 0.3.3 中通过防展开安全的回移守卫机制修复,与 alloc::vec::Vec::retain 采用的方案一致。

本公告基于 CC0-1.0 许可证发布。

原始来源: rustsec

评论 (0)