DFX Finance 舍入误差漏洞修复审查

  • Immunefi
  • 发布于 2023-06-06 15:10
  • 阅读 19

一名白帽黑客在DFX Finance中发现了一个由于EURS代币的非标准十进制值引起的舍入误差漏洞。通过利用这个漏洞,攻击者可以通过多次存款操作,在每次攻击中获利约172欧元或190 USDC。DFX Finance在收到报告后迅速采取措施修复了该漏洞,没有用户资金损失,并向白帽黑客支付了100,000 USDT的赏金。

概要

2023年4月28日,一位化名为perseverance的白帽通过Immunefi向DFX Finance提交了一个严重漏洞,该漏洞是由于EURS token的非标准小数位数值(两位小数)导致的舍入错误。在提交时,有$237,143的资金存在于易受攻击的池中,并面临被恶意黑客窃取的风险。

然而,DFX Finance在收到perseverance的报告后,迅速采取措施修复了该漏洞。没有用户资金损失。此漏洞仅限于EURS token,并未影响DFX当前支持的任何其他token。

DFX Finance向白帽支付了100,000 USDT的赏金。

Immunefi很高兴能够通过我们的平台促成此次负责任的披露。我们的目标是通过激励黑客负责任地披露漏洞,并换取干净的资金和声誉,从而使web3更安全。

此漏洞修复审查由Immunefi triage处理员Alejandro Muñoz-McDonald撰写。

DFX Finance 简介

DFX Finance是一个去中心化的外汇(FX)协议。DFX Finance创建了一个去中心化的市场,用户可以在其中交换与各种外币Hook的非美元稳定币,例如CADC、EUROC、XSGD等。这些类型的交易所通常还会激励流动性提供者通过提供存款收益来提供资金。

该设计使用自动做市机制(AMM),以允许交易所去中心化地运作。AMM根据bonding curve交换token,该曲线会根据Chainlink的真实世界价格feed动态调整。每种货币都与USDC配对,USDC在DFX AMM中的所有其他稳定币之间被视为桥梁货币。

[图片]

与从订单簿中匹配买家和卖家的点对点模型相比,AMM允许这些稳定币通过AMM以无需许可的方式直接交易。DFX协议主要有两个部分:Assimilators和Curve。Assimilators允许AMM处理不同价值的货币对,同时还集成了报告的相应货币的预言机价格。Curve允许使用动态费用、价格缩放和更多对bonding curve进行自定义参数化。

去中心化交易所

在处理不同价值的货币对时,Assimilators是必不可少的,这对于DFX协议来说至关重要,因为所有资产都与USDC配对。AssimilatorV2合约负责将所有金额转换为numeraire,或用于整个协议计算的基本值。DFX Finance维护与Curve集成的assimilators,以向池提供成比例的流动性。当用户希望向池提供流动性以获得其稳定币的收益时,他们会调用Curvepool上的deposit函数,并获得流动性提供者(LP)token作为回报,代表他们存入的基础资产的比例。

当用户存入EURS时,该函数会检查存款金额是否大于零,然后将大部分逻辑委托给库调用ProportionalLiquidity.proportionalDeposit

proportionalDeposit函数中,curvepool调用AssimilatorV2合约intakeNumeraireLPRatio来计算要从用户那里转移的相应欧元金额,该金额基于传递给该函数的LP比率,在第145行计算。

intakeNumeraireLPRatio函数中处理了存款转移,并且流动性从用户转移到合约后,proportionalDeposit函数会铸造代表用户在池中所占份额的LP token数量。最后,deposit函数返回存款和铸造的份额的值。

漏洞分析

DFX Finance的合约包含一个漏洞,该漏洞源于AssimilatorV2合约上第145行中的转移金额的计算。当_rate超过分子值时,就会出现问题,从而导致整数除法,从而导致从用户那里转移零个token。尽管转移了零个token,但用户仍然会收到curve token,这些token代表他们在curve池中的一部分。为了利用这一点,攻击者将存入极少量的token,导致转移的金额为零,同时仍然收到铸造的curve token,以换取少量“存入”的token。

通常,token至少有六位小数,这会将潜在利润限制为低于交易gas费的金额。但是,Polygon网络上的EURStoken只有两位小数。通过利用EURS token并在单个交易中重复存入少量金额(大约10,000次),攻击者可以通过提取铸造的curve token来产生大约172欧元或190 USDC的攻击利润。在提交时,易受攻击的池的余额为$237,143美元,攻击者可以通过连续攻击逐步获得池的更大份额来窃取这些资金。

概念验证 (PoC)

Immunefi团队准备了以下PoC来演示该漏洞。

漏洞修复

DFX Finance通过部署新版本的AssimilatorV2合约并添加require语句来修复了该问题,该语句检查要从用户处转移的金额是否大于零。现有的Curve池已迁移为使用新的Assimilator。

致谢

我们要感谢perseverance的出色工作,并负责任地披露了如此重要的错误。还要感谢DFX Finance团队,他们迅速响应了该报告并修复了该错误。

如果你想开始漏洞赏金,我们为你准备好了。查看Web3安全库,并开始在Immunefi上获得奖励——Immunefi是web3的领先漏洞赏金平台,拥有世界上最大的支付。

如果你对自己的技能感到满意,并想看看是否能在代码中找到漏洞,请查看DFX Finance的漏洞赏金计划。

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

0 条评论

请先 登录 后评论
Immunefi
Immunefi
The leading bug bounty platform for blockchain with the world's largest bug bounties.