去中心化审计平台 Code4rena 在即将推出的 DittoETH 算法稳定币平台补丁中发现了一个漏洞。该漏洞将允许存入大量代币的用户赚取超额利润,增加协议中的坏账,并最终损害其生存能力。
这一发现意味着该漏洞不会添加到 DittoETH 的生产版本中,因为它已在较新的测试版本中通过缓解措施被删除。
Web3 教育公司 Rare Skills 的星探 Block 在 X 上报告了这一发现。
根据其文件,Code4rena 是一个众包审计平台。参与者分为三组:赞助商、看守和评委。
赞助商是 Web3 协议,提供奖品以换取漏洞的发现。典狱长相互竞争以发现漏洞以换取奖金。法官裁决发起人和看守者之间关于漏洞是否真实以及其严重程度的争议。
Code4rena 声称它不举办“漏洞县”比赛,它声称这涉及“尽快找到最大的 [漏洞] 的竞赛”。相反,“每个付出努力并发现有效的东西的人都会得到回报。
根据 Block 的说法,该漏洞是由 Code4rena 典狱长あああああ(日语中的“aaaaa”)发现的。DittoETH 团队最初不相信该漏洞是真实的,但后来在 Aaaaa 提供进一步证据后放弃了反对意见。
该漏洞包括向 DittoETH 的 yDUSD 金库中的储户分配稳定币奖励的机制存在错误。
用户可以将协议的原生稳定币 dUSD 添加到此保险库中以获得收益。此收益来自在实际代币价格与 oracle 提供的价格相差时在平台上产生的“折扣费用”。该系统的目的是激励流动性提供者在市场承压时期增加流动性。
尽管名称中包含“fee”一词,但任何人都不需要支付折扣费用。相反,它们作为新铸造的代币支付并发送到 yDUSD 金库。每当发生这种情况时,平台的相应债务也会与该金额成正比地增加。
典狱长发现,“matchIsDiscounted”函数中的数学缺陷可能会从少量交易量中产生大量债务,这与协议仅在市场压力时期支付这些费用的预期设计相矛盾。
Block 在他们的报告中指出,“关键是,只有当贴现金额超过总债务的某个阈值时,才会发生第 6-9 步。当它们确实发生时,它们会根据系统的整个债务产生新的债务,而不仅仅是贴现金额。这就是漏洞的根本原因所在,因为小额贴现交易可能导致不成比例的巨额新债务产生和代币铸造。
7 月 15 日,Aaaaa 在该项目的 github 上发布了对漏洞利用的解释。作为回应,DittoETH 团队成员和至少一名 Code4rena 法官最初声称,攻击者将无法制造坏账,因为其他成员会加入资金池并“稀释”攻击者的收益。
然而,Aaaaa 回答说,攻击者不能被稀释,因为 [d] eposits 不会影响股票可以索取多少资产。
Aaaaa 还在 Foundry 中编写了一个测试,模拟了攻击和“其他用户在保险库中存入了大量资金”。他们邀请团队成员在自己的设备上运行测试。
据报道,测试显示攻击者获利 20,454.54 美元,为协议创造了等于该金额的新债务。据推测,这种攻击可能会重复以获得更大的收益。
7 月 12 日,评委 Hans Friesse 将提交的内容标记为“令人满意”,表明 Aaaaa 将获得该奖项团队。DittoETH 代表也放弃了他们的反对意见,表示“nvm 这是有效的,很好的发现!
审计涉及协议代码的非生产副本。但是,如果错过了这个漏洞,它可能会被部署到区块链上并在野外被利用。
如果在部署漏洞之前没有发现漏洞,DeFi 漏洞可能是毁灭性的。4 月,Ronin 游戏网络桥在升级引入新漏洞后被耗尽了 980 万美元。今年 3 月,DeFi 平台 Unizen 的用户因攻击者发现平台生产副本中的“批准”漏洞而损失超过 200 万美元。