舍入误差:小问题引发的大型攻击

文章讨论了 DeFi 领域中由于 Solidity 缺乏原生浮点数支持而导致的舍入误差漏洞,并剖析了 Hope Lending、Cauldrons 和 Hundred Finance 等平台遭受攻击的案例,强调了智能合约中数学运算精度的重要性。文章还提出了通过代码审计、实施安全数学库、持续监控和分析等方法来缓解这些漏洞的策略,呼吁 DeFi 社区提高警惕,加强安全措施。

在软件开发领域,舍入误差曾经只是一个小问题,但现在已经成为了去中心化金融(DeFi)生态系统中突出的漏洞。传统上,在科学计算等领域可以管理这些计算差异,但在区块链技术这种以精确性为驱动的世界中,它们具有了新的重要性。浮点运算固有的局限性(它逼近实数)与区块链对绝对精度的要求相冲突,从而将舍入误差转化为重大威胁。

这篇博客着眼于舍入误差作为 DeFi 中的一个关键利用向量的出现——现在是第二大被利用的漏洞,仅次于被盗私钥。通过强调近期复杂的攻击,我们探讨了这些漏洞的性质、它们对 DeFi 的影响,以及对增强生态系统抵御数字威胁能力的强大缓解策略的迫切需求。

舍入误差在 DeFi 中的影响

DeFi 的独特挑战主要源于 Solidity 本身缺乏对浮点运算的本地支持,导致其依赖于整数除法。这一局限性至关重要,因为智能合约(DeFi 服务的支柱)需要精确执行以维护区块链的完整性——不可变性、透明性和安全性。即使舍入误差造成的轻微计算错误也可能导致重大的财务差异。一旦发生漏洞利用,区块链交易的不可变性意味着它无法轻易纠正,通常会导致不可逆转的经济损失。

Hope Lending 黑客事件:一种趋势的序幕

2023 年 10 月发生的 Hope Lending 黑客事件导致了 85.1 万美元的损失,它突显了舍入误差在区块链社区内造成的重大威胁。该事件远非孤立事件;它预示着一系列令人担忧的复杂攻击,这些攻击针对的是各种 DeFi 平台上类似的漏洞。随后的违规行为影响了 Channels、Radiant、Wise Lending 和 Abracadabra 等实体,总共造成了数百万美元的损失。这些事件凸显了一个令人担忧的趋势:攻击者正在利用智能合约中缺乏数学精度来策划大规模盗窃。

在 Hope Lending 的案例中,攻击者利用闪电贷来操纵 Hope.money 的借贷池,Hope.money 是一整套去中心化金融服务,涵盖借贷、交换和治理功能。该漏洞利用的关键在于 HopeLend 协议借贷池中的一个漏洞,特别是在销毁存款凭证的过程中。不正确的整数除法导致了截断误差,导致销毁的凭证少于所需数量。这造成了一个差异,攻击者利用该差异在单个区块交易中耗尽多个借贷池,从而显著放大了 hETHwBTC 借贷池内的折扣率,值得注意的是,在攻击发生之前,该借贷池一直处于非活动状态,没有资金。

有趣的是,最初的攻击者并没有直接从这次漏洞利用中获利。一位抢跑者在内存池中检测到攻击者的交易,复制了攻击方法并首先成功执行了该方法,获利 527 ETH。这一曲折为该事件增加了一个额外的复杂层面,不仅展示了识别和利用此类漏洞所需的技术诀窍,还展示了区块链漏洞利用的竞争性和机会主义性质。

利用 Cauldron:债务计算错位案例

Cauldron 是一个 DeFi dapp,用于促进加密资产的借贷,它成为了一个漏洞的受害者,该漏洞利用了其“cauldron v4”合约中的舍入错误。攻击者操纵了债务计算机制,特别是弹性值(实际借款金额)和基值(稳定债务表示)之间的同步过程。该缺陷允许在弹性值为零但基值不为零时利用舍入误差,导致在 Ethereum 上盗取价值 650 万美元的 MIM 代币。这次攻击不仅凸显了准确债务表示的重要性,还凸显了微小舍入差异的灾难性潜力。

Hundred Finance 黑客事件:操纵和舍入误差

同样,Hundred Finance 也遭受了一次攻击,攻击者操纵了 hWBTC 合约中的汇率,并因 redeemUnderlying 函数中的舍入误差而加剧。通过捐赠大量的 WBTC,攻击者能够影响汇率,从而利用 Solidity 版本的漏洞和 hWBTC 资产没有借款人的情况。这种操纵使得仅用极少的 hWBTC 就能够赎回不成比例的 WBTC,从而突显了与舍入误差和汇率操纵相关的细微风险。

正如你通过查看这些漏洞利用所看到的,很明显,舍入误差不仅仅是计算上的疏忽,而是可能导致 DeFi 生态系统中重大财务损失的重大漏洞。这些事件阐明了智能合约逻辑、数学运算的精度以及等待利用任何漏洞的攻击者的机会主义性质之间复杂的相互作用。每次漏洞利用都提供了关于智能合约设计和实施中准确性、警惕性和全面安全措施重要性的重要经验。

缓解和预防策略

这些事件中反复出现的主题突显了 DeFi 项目迫切需要采取积极的姿态,以识别和缓解舍入误差和其他漏洞。让我们探讨可以防止类似漏洞利用的可行策略。

  • 代码审计和形式验证: 由经验丰富的审计员进行的全面审查可以发现隐藏的错误,包括那些与舍入误差相关的错误,并在它们被利用之前发现。
  • 实施安全数学库: 虽然安全数学库对于防止溢出和下溢至关重要,但在 Solidity 中解决舍入误差需要更复杂的解决方案。项目应考虑高级库,例如 PRB Maths Library,它提供定点数学运算,有助于在 Solidity 的约束内安全地逼近浮点运算。这些工具对于执行准确的数学计算和降低舍入误差的风险至关重要。
  • 持续监控和分析: 部署监控异常活动和分析整个生态系统中发现的新漏洞的工具可以提供早期预警。
  • 教育社区: 提高开发者和用户对安全最佳实践和常见漏洞的认识,可以营造更安全的环境。

通过从过去的事件中学习并实施这些强大的安全措施,DeFi 社区不仅可以防范舍入误差,还可以防范广泛的漏洞,从而确保去中心化金融的未来增长和稳定性。

结论

近期针对 DeFi 协议的复杂攻击突显了区块链社区内对警惕性、严格安全实践和持续教育的迫切需求。通过从这些事件中学习并实施强大的安全措施,开发者可以更好地保护他们的项目免受类似漏洞的侵害,从而捍卫 DeFi 的未来。

采取区块链安全的下一步行动

有兴趣更深入地了解智能合约安全的世界吗?我们最新的 智能合约审计 课程专为开发者、安全专业人员和区块链爱好者设计,他们渴望加强对保护 DeFi 协议免受漏洞侵害的理解。

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

0 条评论

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