Caracal:一款功能强大的Starknet智能合约静态分析工具
2023-12-7 18:56:29 Author: FreeBuf(查看原文) 阅读量:6 收藏

 关于Caracal 

Caracal是一款功能强大的Starknet智能合约静态分析工具,广大安全研究人员或区块链技术人员可以使用该工具来对Starknet智能合约执行静态分析。

 功能介绍 

1、提供了检测工具,支持检测存在安全漏洞的Cairo代码;
2、提供了输出打印工具,支持输出和报告检测到的信息;
3、支持进行污染分析;
4、数据流分析框架;
5、支持在Scarb项目中轻松使用和运行;

 工具安装 

预编译源码

广大研究人员可以直接访问该项目的【Releases页面:https://github.com/crytic/caracal/releases】直接下载预编译的Caracal源码。如果你想要使用Cairo v1.x.x编译器的话,请使用v0.1.x版本的源代码,如果使用的是Cairo v2.x.x编译器的话,请使用v0.2.x版本的源码。

源码构建

首先,广大研究人员需要在本地设备上安装并配置好Rust编译器和Cargo,然后就可以直接使用下列命令从git构建源码了:
cargo install --git https://github.com/crytic/caracal --profile release --force
(向右滑动,查看更多)
除此之外,我们还可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/crytic/caracal
(向右滑动,查看更多)
然后切换到项目目录中,执行下列命令完成项目代码构建:
cd caracalcargo install --path . --profile release --force

(向右滑动,查看更多)

 工具使用 

查看检测工具:
caracal detectors
查看输出打印工具:
caracal printers

独立文件使用

如需使用独立的Cario文件,你需要有一个本地Cairo编译器代码。下列命令可以运行检测工具:
caracal detect path/file/to/analyzecaracal detect path/file/to/analyze --corelib path/to/corelib/src
(向右滑动,查看更多)
运行打印输出工具:
caracal print path/file/to/analyze --printer printer_to_use --corelib path/to/corelib/src
(向右滑动,查看更多)

Cairo项目

如果的Cairo项目中有多个文件跟合约,你可能需要使用--contract-path来指定目标合约。下列命令可以运行检测工具:
caracal detect path/to/dircaracal detect path/to/dir --contract-path token::myerc20::... token::myerc721::...
(向右滑动,查看更多)
运行打印输出工具:
caracal print path/to/dir --printer printer_to_use

(向右滑动,查看更多)

Scarb

如果你的项目使用了Scarb,你则需要将下列内容添加到Scarb.toml中:
[[target.starknet-contract]]sierra = true[cairo]sierra-replace-ids = true
然后将Scarb.toml文件所在目录的路径在运行检测工具时使用参数传递给Caracal:
caracal detect path/to/dir
运行打印输出工具:
caracal print path/to/dir --printer printer_to_use

(向右滑动,查看更多)

 检测工具 

编号
检测器
影响
Cairo版本
1
controlled-library-call
1 & 2
2
unchecked-l1-handler-from
1 & 2
3
felt252-unsafe-arithmetic
1 & 2
4
reentrancy
1 & 2
5
read-only-reentrancy
1 & 2
6
unused-events
1 & 2
7
unused-return
1 & 2
8
unenforced-view
1
9
unused-arguments
1 & 2
10
reentrancy-benign
1 & 2
11
reentrancy-events
1 & 2
12
dead-code
1 & 2
13
array-use-after-pop-front
1 & 2
其中的Cario版本列表示检测器支持的Cario编译器版本。

 输出打印工具 

cfg:将每一个函数的CFG导出至一个.dot文件中;
callgraph:将函数调用图导出至一个.dot文件中;

 许可证协议 

本项目的开发与发布遵循AGPL-3.0开源许可证协议。

 项目地址 

Caracalhttps://github.com/crytic/caracal
FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......
扫码添加小蜜蜂微信回复“加群”,申请加入群聊


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651250292&idx=4&sn=1ccf0fd2eb69b66b5388bd4bfc464102&chksm=bd1d4cff8a6ac5e977724f9f1df705cdbcacf614f6940689d287e8cb381b35edd240b872c84f&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh