← 文章 / 编程开发
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

评论 (0)