4个版本 (2个重大变更)

0.2.0 2023年9月7日
0.1.1 2023年8月2日
0.1.0 2023年7月26日
0.0.0 2023年3月31日

#11 in #acl

每月37次下载

MIT/Apache

405KB
10K SLoC

Cackle

为Rust的代码ACL检查器。

Cackle是一个分析你的crate的传递依赖的工具,以查看每个crate使用了哪些类型的API。

想法是查找那些使用了你认为是过度使用的API的crate。例如,一个描述中应该只是进行数据处理,但实际上使用了网络API的crate。

安装

目前Cackle只适用于Linux。有关详细信息,请参阅PORTING.md

cargo install --locked cackle

或者如果您想从git安装

cargo install --locked --git https://github.com/cackle-rs/cackle.git cackle

建议安装bubblewrap,因为它允许在沙盒中运行构建脚本(build.rs)和测试。

在具有apt的系统上,可以通过运行以下命令来完成:

sudo apt install bubblewrap

用法

从您的项目根目录(包含Cargo.toml的目录)运行:

cackle ui

这将交互式地引导您创建一个初始的cackle.toml文件。建议手动编辑您的cackle.toml文件。特别是,您应该查看您的依赖关系树,并考虑哪些crate导出了您想要限制的API。例如,如果您使用了一个提供网络API的crate,您应该在配置中声明这一点。有关详细信息,请参阅CONFIG.md

配置文件格式

请参阅CONFIG.md

局限性和注意事项

  • 进程宏可能会检测到它在Cackle下运行并生成不同的代码。
  • 即使没有进程宏,crate也可能仅在Cackle运行时使用的配置中未匹配的某些配置中只使用有问题的API。
  • 分析crate可能会执行该crate提供的任意代码。如果这令您担忧,则建议在沙盒中运行。
  • 此工具旨在补充并辅助手动审查第三方代码,而不是取代它。
  • 您的配置可能未将crate提供的API定义为属于您关心的某个类别。
  • 毫无疑问,一个决心使用API的人有无数种规避检测的方法。随着时间的推移,我们可能会尝试阻止这些规避,但到目前为止,你绝对应该假设规避是可能的。

尽管有这些限制,这又有什么意义呢?真正的目标是提高将问题代码无声地植入某些包中所需达到的标准。Cackle的使用不应取代你本应进行的任何手动依赖项代码审查。

它的工作原理

请参阅HOW_IT_WORKS.md

常见问题解答

常见问题解答

贡献

非常欢迎贡献。如果您想参与其中,请通过提交问题或发送电子邮件给David Lattimore(电子邮件地址在提交日志中)来联系。

许可证

本软件根据MIT许可证和Apache许可证(版本2.0)的条款分发。

请参阅LICENSE以获取详细信息。

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,都应如上所述双重许可,不附加任何额外条款或条件。

依赖项

~9–19MB
~286K SLoC