介绍Recon:简化的不变性测试

  • Recon
  • 发布于 2024-05-22 20:31
  • 阅读 27

本文由开发者Alex The Entreprenerd撰写,介绍了他在EVM开发中的经历及对抗区块链安全漏洞的努力。文章详细介绍了他的项目Recon,这是一种帮助开发者编写和运行不变性测试的工具,同时描述了两个重大的安全攻击案例,强调了不变性测试在预防未来攻击中的重要性。

4

1

我是 Alex The Entreprenerd,自 2019 年以来一直在 EVM 上进行开发,曾与 BadgerDAO 合作推出 eBTC,构建多个 Yield Strategies,其中之一被 Yearn 用于生产,还有多个小型 Open Source Contributions

我在 Code4renaSpearbitSherlock 通报漏洞,并在 Velodrome V2、Optimism、Tapioca、Ethos、Chainlink、Pool Together 等项目中发现漏洞。

我写这篇文章是为了分享我们在 Recon 的工作,希望能帮助项目交付更安全、经过更彻底审查的代码,让 Invariant Testing 对所有开发者可用。

介绍 Recon

Recon 帮助你编写和运行不变性测试。

我们提供一个免费的不变性测试脚手架工具,帮助开发者快速构建不变性测试。

构建你的处理程序,所有 Open Source Foundry 仓库免费

我们还提供一个付费服务,云端运行不变性测试,我们称之为 Recon Pro。

我们已经向 eBTCCentrifuge 等项目提供了此服务,以帮助加强他们的安全性。

Recon Pro 可分享的作业页面

为什么

由于我的工作,我已经逆向工程了过去几年发生的大多数漏洞。

我将讲述两个我个人经历的项目被攻击的故事,以及这如何促使我建立 Recon。

ELASTIC SWAP

在 2022 年,捐赠攻击是一个相对新颖的攻击方式。

Elasticswap 的代码库由我自 2021 年以来合作的组织 Code4rena 进行了审查。

脆弱的代码行- 来源: https://quillaudits.medium.com/decoding-elastic-swaps-850k-exploit-quillaudits-9ceb7fcd8d1a

攻击者发现,通过捐赠一些代币,他们能够说服 AMM 提供比预期更多的价值,导致损失 85 万美元。

一次简单的捐赠攻击导致了这一结果。

怎么会没有人尝试过这个?

是否有办法将其自动化?

EULER

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://getrecon.xyz/

如果你有具体问题或想与我们合作,可以通过推特联系我:

https://twitter.com/GalloDaSballo

在接下来的几个月里,我们将继续致力于 Recon,目标是帮助开发者编写更安全的代码,并防止现实世界的漏洞。


订阅 Recon

启动于 10 个月前

Recon 帮助你构建和运行不变性测试

订阅

通过订阅,我同意 Substack 的 使用条款,并确认其 信息收集通知隐私政策

  • 原文链接: getrecon.substack.com/p/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Recon
Recon
江湖只有他的大名,没有他的介绍。