本文介绍了使用Wake的Manually Guided Fuzzing (MGF)技术来发现智能合约中的抢跑漏洞。通过分析合约逻辑、使用Python进行测试以及简化测试流程,MGF能够有效地揭示潜在的安全问题,文章通过两个具体的案例,展示了如何利用MGF发现盐值碰撞和ERC-721通证铸造中的抢跑漏洞,并强调了在测试中考虑各种边缘情况的重要性。
智能合约中的抢跑(Front-running)漏洞可能会构成严重的安全威胁。在本文中,我们将展示 Wake 的手动引导模糊测试 (Manually Guided Fuzzing, MGF) 如何使用差异模糊测试技术来发现此类漏洞。
手动引导模糊测试 (MGF) 是一种差异模糊测试,它:
让我们看看在使用 CREATE2 部署合约时可能发生的漏洞。如果 salt 计算被操纵,则可能发生地址冲突。
这是一个具有多个部署路径的场景:
当一个部署路径可以生成与另一个部署路径相同的 salt 时,就会出现漏洞,从而允许攻击者抢跑部署。
creation_nonce
creation_nonce
是用户可控的要发现这些漏洞,请尝试操纵变量以查找不同部署路径之间的相似之处。
例如,你可以设置 Path1 的 creation_nonce
以匹配 Path2 的 salt 计算。
现在,让我们检查一下用于用户管理的 ERC-721 pass 合约。
Token 是不可转让的,并且任何人都可以为任何地址调用 mint
函数。因此,如果地址已经持有 pass,则根据设计,铸造会失败。
这种设置创造了抢跑的机会。攻击者可以使用他们自己的 affiliator 为受害者的地址铸造 pass,这会导致阻止受害者并将其永久链接到攻击者的联盟费用。
为了最大程度地利用你的测试,请遵循以下原则:
并使用以下七步方法:
使用 Wake 进行手动引导模糊测试是一种发现抢跑漏洞的强大方法。
通过像攻击者一样思考并系统地测试边缘情况,MGF 可以帮助你发现传统测试可能遗漏的安全问题。
立即开始使用 Wake 进行手动引导模糊测试。
- 原文链接: ackee.xyz/blog/uncoverin...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!