本文由开发者Alex The Entreprenerd撰写,介绍了他在EVM开发中的经历及对抗区块链安全漏洞的努力。文章详细介绍了他的项目Recon,这是一种帮助开发者编写和运行不变性测试的工具,同时描述了两个重大的安全攻击案例,强调了不变性测试在预防未来攻击中的重要性。
4
1
我是 Alex The Entreprenerd,自 2019 年以来一直在 EVM 上进行开发,曾与 BadgerDAO 合作推出 eBTC,构建多个 Yield Strategies,其中之一被 Yearn 用于生产,还有多个小型 Open Source Contributions。
我在 Code4rena、Spearbit 和 Sherlock 通报漏洞,并在 Velodrome V2、Optimism、Tapioca、Ethos、Chainlink、Pool Together 等项目中发现漏洞。
我写这篇文章是为了分享我们在 Recon 的工作,希望能帮助项目交付更安全、经过更彻底审查的代码,让 Invariant Testing 对所有开发者可用。
Recon 帮助你编写和运行不变性测试。
我们提供一个免费的不变性测试脚手架工具,帮助开发者快速构建不变性测试。
构建你的处理程序,所有 Open Source Foundry 仓库免费
我们还提供一个付费服务,云端运行不变性测试,我们称之为 Recon Pro。
我们已经向 eBTC 和 Centrifuge 等项目提供了此服务,以帮助加强他们的安全性。
Recon Pro 可分享的作业页面
由于我的工作,我已经逆向工程了过去几年发生的大多数漏洞。
我将讲述两个我个人经历的项目被攻击的故事,以及这如何促使我建立 Recon。
在 2022 年,捐赠攻击是一个相对新颖的攻击方式。
Elasticswap 的代码库由我自 2021 年以来合作的组织 Code4rena 进行了审查。
脆弱的代码行- 来源: https://quillaudits.medium.com/decoding-elastic-swaps-850k-exploit-quillaudits-9ceb7fcd8d1a
攻击者发现,通过捐赠一些代币,他们能够说服 AMM 提供比预期更多的价值,导致损失 85 万美元。
一次简单的捐赠攻击导致了这一结果。
怎么会没有人尝试过这个?
是否有办法将其自动化?
Euler V1 经过多次安全审查,并在谈论有关 TWAP 预言机和隔离借贷的风险方面,提出了更成熟的方法。
我的很多同事正在使用 Euler,许多同行也直接或作为集成尽职调查的一部分进行了 Euler 的安全审查。
著名的是,Euler 由于一个小的变动,被成功利用,该变动是在不经意间添加的。
导致 Euler 漏洞的新函数- 来源: https://medium.com/coinmonks/decoding-euler-finances-197-million-exploit-quillaudits-c70fed910d2c
这一小的变动允许自我清算,当与动态调用者溢价结合时,使得利用者能够从自己的清算中获利。
回过头来看漏洞的细节,我相信并仍然认为主要问题是缺乏覆盖。
对该变动的审查是一项简短的、孤立的审查,而不是我们称之为 Security Contest 的审查,在这个活动中,数十名甚至数百名专业白帽黑客竞争着寻找最独特的漏洞。
在实施之前,没有足够的目光关注这一变更。
尽管漏洞看起来非常复杂,但可以通过一个全局属性捕捉到:“没有直接行动应使账户可清算”。
这项检查将允许模糊测试工具做它最擅长的事情,尝试随机操作,并向你展示它能够产生的结果。
正是基于这两起事件,我决定做点什么。
最初,我为 Foundry 编写了自己的代码生成工具,它会设置一些自动化调用,然后检查在该序列结束时攻击者是否有价值增长。
代码生成工具的示例输出
这能够在几个小时内找到 Elasticswap 漏洞,而无需任何调整(仅依靠暴力破解),也能够在进行少量调整后在几分钟内找到漏洞。
通过暴力破解找到 Elasticswap 漏洞
我永远无法通过这个工具再现 Euler 漏洞,生成成千上万行优化不良的示例代码太复杂了,因为我还有白天的工作。
然而,当我看到 Antonio 对不变性测试的研究时,这种情况发生了改变。
Antonio 是一名安全研究人员,拥有开发背景,并对 Open Source 充满 热情,他举办了多场以不变性测试为重点的研讨会:
通过观察不变性测试的工作方式,很明显,我正在创造一个工程质量差的 Echidna 版本,Echidna 是来自 Trail of Bits 的 经过多次考验的开源不变性测试工具。
那时,Antonio 创建了 Fuzzy,作为在云中运行模糊测试工具的方式,他还想出了将不变性测试编写为在 Foundry 中可调试的方法,这意味着你可以获得以下两者的最佳体验:
尽可能快速发现损坏的属性
在 Foundry 中便捷舒适的调试
基于这两个关键理念,我们构建了 Recon。
在过去五个月中,Recon 已经历了多次演变,我们很高兴终于与你分享它。
所有 Open Source Foundry 项目可以免费创建不变性测试,并可以通过我们的开源项目 Create-Chimera-App 本地运行不变性测试。
到目前为止,Recon 已被 150 多名 Solidity 开发者和安全研究人员尝试,我们在我们的云平台上运行了超过 800 个模糊测试作业。
我分享这些是希望我们能从过去的错误中吸取教训,并相信通过增加不变性测试,能够防止大量的漏洞。
Recon 统计数据,来自主页
如果你想尝试 Recon,可以访问:
如果你有具体问题或想与我们合作,可以通过推特联系我:
https://twitter.com/GalloDaSballo
在接下来的几个月里,我们将继续致力于 Recon,目标是帮助开发者编写更安全的代码,并防止现实世界的漏洞。
启动于 10 个月前
Recon 帮助你构建和运行不变性测试
订阅
通过订阅,我同意 Substack 的 使用条款,并确认其 信息收集通知 和 隐私政策。
- 原文链接: getrecon.substack.com/p/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!