fuzzland/ityfuzz

GitHub: fuzzland/ityfuzz

一个结合符号执行与模糊测试的超快智能合约安全检测工具,支持EVM和MoveVM,能自动生成漏洞利用脚本。

Stars: 1066 | Forks: 174

# 🍦 ItyFuzz ![Demo](https://ityfuzz.assets.fuzz.land/demo-out.png) [\[文档\]](https://docs.ityfuzz.rs) / [\[研究论文\]](https://dl.acm.org/doi/pdf/10.1145/3597926.3598059) / [\[Twitter\]](https://twitter.com/fuzzland_) / [\[Discord\]](https://discord.com/invite/qQa436VEwt) / [\[Telegram\]](https://t.me/fuzzland) ItyFuzz 是一个超快的 EVM 和 MoveVM 智能合约混合模糊测试器,它结合了符号执行和模糊测试,用于发现链下和链上智能合约中的漏洞。 ## 安装 ``` curl -L https://ity.fuzz.land/ | bash ityfuzzup ``` ## 示例 #### 对已部署的智能合约进行模糊测试 针对 Polygon 链上存在闪电贷 + 只读重入漏洞的[合约](https://polygonscan.com/address/0x5d6c48f05ad0fde3f64bab50628637d73b1eb0bb),生成完整的利用脚本以窃取资金。 ``` # 在第 35718198 个区块分叉 Polygon 并对合约进行模糊测试 ETH_RPC_URL=https://polygon-rpc.com ityfuzz evm\ -t 0xbcf6e9d27bf95f3f5eddb93c38656d684317d5b4,0x5d6c48f05ad0fde3f64bab50628637d73b1eb0bb\ -c polygon\ --flashloan\ --onchain-block-number 35718198\ --onchain-etherscan-api-key TR24XDQF35QCNK9PZBV8XEH2XRSWTPWFWT # <-- Get your own API key at https://polygonscan.com/apis if this one is rate limited ``` #### Foundry 不变性测试 运行定义在 `test/Invariant.sol` 中 `Invariant` 合约里的 Foundry 不变性测试。 ``` # 替代命令:forge test --mc test/Invariant.sol:Invariant ityfuzz evm -m test/Invariant.sol:Invariant -- forge test ``` 有关更多示例和用法,请查看[文档](https://docs.ityfuzz.rs)。 ## 性能 在大型现实世界智能合约项目中,ItyFuzz 发现了 126 个漏洞,而 Echidna 发现了 0 个,Mythril 发现了 9 个。详情请参阅[回测](https://docs.ityfuzz.rs/tutorials/exp-known-working-hacks)、[研究论文](https://dl.acm.org/doi/pdf/10.1145/3597926.3598059)和[发现的新漏洞](#bugs-found)。 在小型现实世界智能合约(ERC20、彩票等)上,ItyFuzz 使用学术界最先进的模糊测试器 SMARTIAN 所需时间的 1/30,获得了比其多 10% 的测试覆盖率。

在 Consensys 的 [Daedaluzz](https://github.com/Consensys/daedaluzz) 基准测试中,*不使用符号执行*的 ItyFuzz 比 Echidna 多发现 44% 的漏洞,比 Foundry 多发现 31% 的漏洞。ItyFuzz 也比 Echidna 快 2.5 倍,比 Foundry 快 1.5 倍。

## 功能特性 * **链分叉**,可在任意区块号对任意链上的合约进行模糊测试。 * **精准的漏洞利用生成**,针对精度丢失、整数溢出、资金窃取、Uniswap 对误用等情况。 * **重入支持**,具体利用潜在的重入机会以探索更多代码路径。 * **极速调度算法**,优先对更有可能存在漏洞的代码进行模糊测试。 * **符号执行**,生成比单纯模糊测试覆盖更多代码路径的测试用例。 * **闪电贷支持**,假设攻击者拥有无限资金以利用闪电贷漏洞。 * **清算支持**,在模糊测试期间模拟从流动性池买卖任意代币。 * **反编译支持**,用于对无源码合约进行模糊测试。 * **支持复杂的合约初始化**,可使用 Foundry 设置脚本、分叉 Anvil RPC 或提供 JSON 配置文件。 * 由最先进的模糊测试引擎 [LibAFL](https://github.com/AFLplusplus/LibAFL) 提供支持。 ## 发现的漏洞 精选的新发现漏洞: | 项目 | 漏洞 | 风险资产 | | --- | --- | --- | | BSC $rats NFT | 导致无限铸造的整数溢出 | $79k | | 9419 Token | 导致价格操纵的逻辑错误 | $35k | | BSC Mevbot | 未设防的 DPPFlashLoanCall | $19k | | FreeCash | 导致价格操纵的逻辑错误 | $12k | | 0xnoob Token | 导致价格操纵的逻辑错误 | $7k | | Baby Wojak Token | 导致价格操纵的逻辑错误 | $4k | | Arrow | 导致资金损失的错误仓位逻辑 | 审计期间发现 | ItyFuzz 可以在没有任何攻击先验知识的情况下,自动为超过 80% 的历史攻击生成利用脚本。 有关运行此前被攻击的协议,请参阅[回测](https://docs.ityfuzz.rs/tutorials/exp-known-working-hacks)。 ## 赞助与资助 * [Manifold Finance](https://www.manifoldfinance.com/) * [Sui](https://sui.io/)
标签:DeFi安全, EVM, Foundry, Fuzzing, MoveVM, Move语言, Solidity, Web3安全, 区块链安全, 可视化界面, 安全审计工具, 形式化验证, 智能合约安全, 混合模糊测试, 符号执行, 自动化漏洞利用, 覆盖率测试, 通知系统, 通知系统, 通知系统, 重入攻击检测, 链上监控, 闪电贷攻击