Artisan-Lab / RAP

Rust Analysis Platform
39 stars 14 forks source link

一些零散的疑问 #58

Closed zjp-CN closed 3 days ago

zjp-CN commented 1 month ago
  1. 我看到 alias_mop 测例能分析共享引用上存在别名,请问您是否计划用像 miri 一样定义别名模型来检测 aliasing violation UB?
  2. 我观察到 RAP 可以分析库代码,甚至会分析那些私有函数。对吗?
  3. 在 RAP 的 rap 目录中运行 cargo-rap,我遇到检测到了 uaf,而检测内存泄露时出现栈溢出。您能简要解释一下吗?

-F: 87576e3ab5d660193d523f087fb5ae2

-M: 3a04c06e610a3142fcdf8758ee969a2

  1. 我在 rap 代码上运行 clippy,得到四百多个警告。大部分可能只是由于 coder 不熟悉 Rust 编程范例,而不是因为代码具有致命错误。但如果可能的话,将来能处理掉它们。
error: could not compile `rap` (lib) due to 2 previous errors; 416 warnings emitted
VaynNecol commented 1 month ago

感谢对rap项目的关注 😊,我们会逐步修复反馈的部分问题。

  1. 团队正尝试引入不同的别名模型(如SVF的LCD),但这些模型可能与mop求解路径的方法冲突,未来考虑提供独立模块。
  2. 新版本的RAP取消了后端自定义编译器,SafeDrop已经不再是一个query,因此不再检测依赖库。
  3. RAP调用了compiler的metadata,同时调用了z3封装库,涉及ffi,不建议在RAP Workspace运行cargo-rap,这些误报将后续进行检测。
  4. -m参数的栈溢出问题为本周版本迁移导致,上个版本测试不存在该问题,后续会修复。
  5. 在项目测试和ci功能稳定前暂不处理clippy的问题,功能稳定后将来进行优化。
zjp-CN commented 1 month ago

谢谢回复。很看好 rap,以及后续提供的检测功能。

在第二点上,你的意思 rap 只检测 bin crate,而不检测 lib crate 吗?

我观察到 RAP 可以分析库代码,甚至会分析那些私有函数。

在这一条上,你可以重现我的观察结果:

cd tests/uaf_drop
mv src/main.rs src/lib.rs
cargo +nightly-2024-06-30 rap -F

截图_20241016083827

zjp-CN commented 1 month ago

继续第二个问题:这是一个复现的代码库,等价的复现命令是

cd tests/uaf_drop
mv src/main.rs src/lib.rs
echo "fn main() {}" > src/main.rs
cargo +nightly-2024-06-30 rap -F

那么会得到 lib.rs 上的两个重复的诊断输出(我猜是可能因为 Cargo 缓存或者增量编译)。

hxuhack commented 1 month ago

谢谢,这个看起来是cargo build时存在两个targets: lib和bin,导致自动构建时lib.rs会在bin和lib build时都被分析一次。如果把main.rs放在bin文件夹下就没问题了。

zjp-CN commented 3 days ago

没有疑问了,我要关闭这个。