Balancer黑客攻击深度解析与DeFi安全防护指南

本文深入分析Balancer v2遭受的1亿美元黑客攻击,揭示由四舍五入方向错误导致的漏洞根源,探讨DeFi生态系统安全演进历程,并提供包含模糊测试、形式化验证在内的全面安全防护方案。

Balancer黑客攻击分析与DeFi生态系统指导

TL;DR

  • 黑客攻击的根本原因是代码中存在多年的四舍五入方向问题
  • 当该漏洞最初引入时,区块链生态系统的威胁环境大不相同,算术问题并未被广泛认为是可能的攻击向量
  • 随着低悬果实攻击路径日益稀缺,攻击者变得更加复杂,将继续在DeFi协议中寻找新颖威胁,如算术边界情况
  • 全面的不变量文档和测试现在至关重要;简单的规则"四舍五入必须有利于协议"已不足以捕捉边界情况
  • 此事件凸显了针对性安全技术(如开发和维护模糊测试套件)和整体安全实践(包括监控和二级控制)的重要性

事件经过:理解漏洞

2025年11月3日,攻击者利用Balancer v2中的漏洞,在九个区块链网络上盗取了超过1亿美元。该攻击针对多个Balancer v2池,利用了四舍五入方向错误。

自11月3日得知攻击以来,Trail of Bits一直与Balancer团队密切合作,了解漏洞及其影响。我们独立确认Balancer v3未受此漏洞影响。

2021年审计:我们的发现与经验教训

2021年,Trail of Bits对Balancer v2进行了三次安全审查。在2021年4月的第一次审计期间审查的提交中并不存在此漏洞;然而,我们使用智能合约模糊测试工具Echidna发现了各种其他类似的四舍五入问题。作为报告的一部分,我们编写了一个附录(附录H),深入探讨了如何在代码库中管理四舍五入方向和精度损失。

2021年10月,Trail of Bits对Balancer的线性池进行了安全审查。在该审查期间,我们发现了线性池如何使用稳定数学库的问题。然而,该发现被标记为"未确定严重性"。

在审计时,我们无法明确确定已识别的四舍五入行为在配置的线性池中是否可利用。我们标记了此问题,因为我们在第一次审计中发现了类似问题,并建议实施全面的模糊测试,以确保所有算术运算的四舍五入方向符合预期。

我们现在知道周一被黑客攻击的可组合稳定池是利用我们在审计中报告的相同漏洞进行攻击的。我们在2022年9月对可组合稳定池进行了安全审查;然而,稳定数学库明确不在范围内。

上述案例说明了评估精度损失或四舍五入方向问题影响的困难。当模糊测试器首次识别出错误方向的1 wei精度损失时,可能看起来不显著,但在特定情况下,例如配置了特定参数的低流动性池,精度损失可能足够大而变得有利可图。

2021至2025年:生态系统如何演变

当我们2021年审计Balancer时,区块链生态系统的威胁环境与今天大不相同。特别是,整个行业并未将四舍五入和算术问题视为生态系统的重大风险。如果回顾2021年最大的加密黑客攻击,您会发现根本原因是不同的威胁:访问控制缺陷、私钥泄露(钓鱼)和前端攻击。

看看2022年,情况类似;那一年特别发生了巨大的黑客攻击,通过私钥泄露(钓鱼)或传统的智能合约漏洞耗尽了几个跨链桥。明确地说,在此期间,也发生了更多DeFi特定的攻击,如预言机价格操纵攻击。然而,这些攻击在当时被认为是新颖威胁,其他DeFi攻击(如涉及四舍五入问题的攻击)尚未广泛传播。

虽然这些四舍五入问题在当时不是最严重或最广泛的威胁,但我们的团队认为它们是一个重要但未被充分强调的风险。这就是为什么我们向Balancer报告了四舍五入问题的风险,并在2021年对Uniswap v3的审计中报告了类似问题。然而,我们必须进行自己的改进以应对这种日益增长的风险;例如,我们此后收紧了代码库成熟度评估的评级标准。在2021年Balancer的线性池被评为"中等"的地方,我们现在将没有全面四舍五入策略的代码库评为算术成熟度"弱"。

进入2023年和2024年,这些DeFi特定的攻击,特别是四舍五入问题,变得更加普遍。2023年,Hundred Finance协议因四舍五入问题被完全耗尽。相同的漏洞在各种协议中被多次利用,包括Sonne Finance,这是2024年最大的黑客攻击之一。这些更广泛的行业趋势也在我们当时的客户工作中得到验证,我们继续识别严重的四舍五入问题,这就是为什么我们在2023年开源了roundme,一个用于人工辅助四舍五入方向分析的工具。

现在,在2025年,算术和正确精度比以往任何时候都更加关键。导致2021年和2022年最大黑客攻击的缺陷,如私钥泄露,继续发生并仍然是重大风险。然而,很明显,区块链和DeFi生态系统的几个方面已经成熟,攻击也相应地变得更加复杂,特别是对于像Uniswap和Balancer这样的主要协议,这些协议在过去几年中经过了彻底的测试和审计。

2025年防止四舍五入问题

在2025年,四舍五入问题比以往任何时候都更加关键,保护免受这些问题的最强大方法如下:

不变量文档

DeFi协议应投入资源记录所有与精度损失和四舍五入方向相关的不变量。每个不变量必须使用非正式证明或解释进行防御。规范不变量"四舍五入必须有利于协议"不足以捕捉在多操作用户流中可能发生的边界情况。最好在产品设计和开发阶段开始记录这些不变量,并使用代码审查与研究人员合作验证和扩展此列表。可以使用roundme等工具来识别每个算术操作所需的四舍五入方向以维护不变量。

以下是一些可用于不变量测试系统的优秀资源和示例:

  • 我们2021年为Balancer v2的工作在附录H中包含固定点四舍五入指南。本指南涵盖四舍五入方向识别、幂四舍五入和其他有用的四舍五入指导
  • 我们2024年与Curvance的工作是记录四舍五入行为然后使用模糊测试验证的优秀代表
  • 遵循我们《构建安全合约》的指南,了解安全开发工作流程和确定安全属性

全面的单元和集成测试

捕获的不变量应随后驱动全面的测试套件。单元和集成测试应导致100%覆盖率。使用slither-mutate和necessist等解决方案的变异测试可以帮助识别单元和集成测试套件中的任何盲点。我们今年早些时候还写了一篇关于如何有效使用变异测试的博客文章。

我们2025年为CAP Labs的工作在附录D中包含关于如何设计有效测试套件的广泛指导,该套件彻底单元、集成和模糊测试系统的不变量。

使用模糊测试进行全面的不变量测试

一旦所有关键不变量被记录,需要使用强大的模糊测试活动进行验证。根据我们的经验,模糊测试是此类不变量测试最有效的技术。

要了解模糊测试器如何工作以及如何利用它们测试DeFi系统,您可以阅读我们的模糊测试器Echidna和Medusa的文档。

使用形式化验证进行不变量测试

使用形式化验证为不变量测试获得进一步保证。这些工具可以与模糊测试非常互补。例如,形式模型的限制或抽象是深入模糊测试的优秀候选。

DeFi生态系统的四个经验教训

此事件为整个DeFi社区提供了关于构建和维护安全系统的重要经验教训:

1. 数学和算术在DeFi协议中至关重要

有关如何最好保护系统的指导,请参阅以上部分。

2. 维护模糊测试套件并用最新威胁情报通知它

虽然智能合约可能是不可变的,但测试套件不应如此。我们观察到的常见问题是协议将开发模糊测试套件,但在某个时间点后未能维护它。例如,函数可能向上取整,但未来的代码更新可能要求此函数现在向下取整。具有正确不变量的维护良好的模糊测试套件将有助于识别函数现在正在错误的方向四舍五入。

除了防止代码更改的保护之外,测试套件还应随着最新威胁情报而发展。每次发生新颖黑客攻击时,这都是可以改进自己测试套件的情报。如Sonne Finance事件所示,特别是对于这些算术问题,相同的错误(或其变体)被多次利用是很常见的。您应养成响应每个新颖事件重新访问测试套件的习惯,以识别可能存在的任何差距。

3. 设计强大的监控和警报系统

在发生安全事件时,必须拥有能够快速警报可疑行为并通知相关利益相关者的自动化系统。系统的设计也对其有效应对威胁的能力有重大影响。例如,系统是否可暂停、可升级或完全去中心化将直接影响在事件情况下可以做什么。

4. 使用二级控制减轻攻击影响

即使DeFi协议是高保证软件,但即使是像DeFi协议这样的高保证软件也必须接受一些风险。然而,接受风险时必须有减轻其影响的二级控制。在没有任何控制的情况下纯粹接受风险在高保证系统中很少见;每个接受风险的决定后应跟随一个问题:“如果我们接受此风险是错误的,我们如何保护自己?”

即使是像DeFi协议这样的高保证软件也必须接受一些风险,但这些风险在接受时必须具有在利用时减轻其影响的二级控制。今年早些时候,我们写了关于使用二级控制减轻私钥风险的文章,解释了速率限制、时间锁、暂停监护人和其他二级控制如何通过未识别类型的攻击减少安全事件风险和黑客攻击的爆炸半径。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计