freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Caracal:一款功能强大的Starknet智能合约静态分析工具
2023-11-15 22:41:49


关于Caracal

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

功能介绍

1、提供了检测工具,支持检测存在安全漏洞的Cairo代码;

2、提供了输出打印工具,支持输出和报告检测到的信息;

3、支持进行污染分析;

4、数据流分析框架;

5、支持在Scarb项目中轻松使用和运行;

工具安装

预编译源码

广大研究人员可以直接访问该项目的【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 caracal

cargo install --path . --profile release --force

工具使用

查看检测工具:

caracal detectors

查看输出打印工具:

caracal printers

独立文件使用

如需使用独立的Cario文件,你需要有一个本地Cairo编译器代码。下列命令可以运行检测工具:

caracal detect path/file/to/analyze
caracal 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/dir
caracal 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开源许可证协议。

项目地址

Caracal:【GitHub传送门

# 静态分析 # 区块链安全 # 智能合约 # 智能合约审计 # 智能合约安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录