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次下载
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