rustsec 6小时前 · 2026-09-29 01:13:58 · 1 阅读
RUSTSEC-2026-0302:stack-graphs 中的健全性缺陷
上报日期
2026年9月22日
签发日期
2026年9月22日
包
stack-graphs
(crates.io)
类型
INFO
非健全性(Unsound)
类别
关键词
#ffi
#extern-c
参考链接
已修复版本
无修复版本
不受影响的版本
<=0.0.2
stack_graphs::c::sg_stack_graph_free
>=0.0.3
描述
stack_graphs::c 是一个公共模块。从 0.0.3 到当前 crates.io 上的最新版本 0.14.1,其接受指针参数的入口点被定义为 pub extern "C" fn,而非 unsafe fn。这意味着安全 Rust 代码可以直接调用它们。
sg_stack_graph_free 使用 Box::from_raw 释放指针。如果传入 std::ptr::null_mut(),会立即导致未定义行为。其他 *_free 导出函数,以及解引用调用方传入指针或将其传递给 from_raw_parts 的获取器和修改器(如 sg_stack_graph_nodes、sg_stack_graph_add_edges 以及 src/c.rs 中其他接受指针参数的函数)也采用了相同的实现模式。不接受指针参数的构造器不在此问题范围内。
由于上游仓库已归档,无法在此提交修复,也不存在已修复的版本。健全性修复方案是将所有接受指针的导出函数改为 unsafe extern "C" fn,并添加安全性注释,说明指针必须非空且对于 free 函数而言,指针须来自对应的构造器。
该安全公告采用 CC0-1.0 许可证发布。
原始来源: rustsec