免责声明:今日财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。
    卡 Bug 自己给自己「开工资」?Daoswap 攻击事件分析
    2022-09-07 14:10:00 pv / 分享快讯

    北京时间2022年9月5日,CertiK审计团队监测到Daoswap由于挖矿奖励大于交换过程中收取的费用以及缺乏验证,允许用户将邀请者地址设置为自己,在一次攻击中损失了58万USDT。

    攻击步骤

    ① 攻击者合约从12个地址中共闪电贷到了218万美元。

    ② 攻击者合约使用DAORouter将所有闪电贷到的USDT交换为DAO代币。在交换过程中,攻击者合约以两种方式从SwapToEarn获得DAO代币作为奖励:

    a.代币奖励:这是为换取代币的用户准备的。

    b.邀请者奖励:攻击者在调用函数时可以任意设置一个“邀请者”地址,相当于推荐人也可以获取奖励。在这种情况下,攻击者合约将邀请者地址设置为自己。

    ③ 攻击者合约用同样的方法将所有DAO代币换回USDT,再次获得这两种奖励。

    ④ 攻击者合约多次重复步骤②和③。因为攻击者收到了DAO代币作为奖励,所以他每次都能获得更多的USDT。

    ⑤ 攻击者合约偿还了所有借贷资金,并将剩余的USDT金额转移给攻击者。

    合约漏洞

    DAOSwap包含一个“swap-mining”的奖励,其实现方式如下。

    在函数_swap中调换之后,可调用SwapToEarn.sol中的函数swapCall。

    在函数swapCall中,DAO代币被转移给用户和邀请者,二者的地址都是通过参数传递的。

    当函数在_swap中被调用时,我们可以看到用户被设置为信息发送者msg.sender,而邀请者则来自于输入参数。

    邀请者地址可以是任何地址,因为这个地址没有设置检查。攻击者能够将邀请者设为自己,并得到了额外的奖励。

    值得注意的是,攻击者作为邀请者得到的奖励约占总奖励的20%。即使不允许攻击者将邀请人地址设置为自己,攻击者仍然可以从交易中获利。

    6次交易的总利润约为581,254 USDT。

    相关交易

    交易①:

    https://bscscan.com/tx/0x414462f2aa63f371fbcf3c8df46b9a64ab64085ac0ab48900f675acd63931f23

    交易②:https://bscscan.com/tx/0x6c859ae624002e07dac39cbc5efef76133f8af5d5a4e0c42ef85e47d51f82ae0

    交易③:

    https://bscscan.com/tx/0x3b1d631542eb91b5734e3305be54f305f26ab291b33c8017a73dcca5b0c32a1b

    交易④:https://bscscan.com/tx/0xa7fdefcd80ba54d2e8dd1ab260495dca547993019d90f7885819bb4670b65bad

    交易⑤:

    https://bscscan.com/tx/0xf1368418344e21a1a09a2c1770ea301bf109ca3b387a59a79242a27d709195a7

    本文地址: - 今日财经

    免责声明:本文仅代表作者本人观点,与今日财经立场无关。本站所有内容不构成投资建议,币市有风险、投资请慎重。