DFS事件 漏洞分析

1、DFS漏洞简介

https://twitter.com/CertiKAlert/status/1608788290785665024

2、相关地址或交易

查看dex交易信息:

攻击交易: https://bscscan.com/tx/0xcddcb447d64c2ce4b3ac5ebaa6d42e26d3ed0ff3831c08923c53ea998f598a7c 攻击合约:0x87bfd80c2a05ee98cfe188fd2a0e4d70187db137 攻击账号:0xb358bfd28b02c5e925b89ad8b0eb35913d2d0805 被攻击合约:DFS 0x88eBFd7841D131BCeab3e7149217aa8e36985a40

3、获利分析

4、攻击过程&漏洞原因

查看攻击交易过程,发现池子中的DFS代币数量在调用skim后变多,注意skim的接收地址为DFS-LP自身:

查看DFS代币的合约代码,分析转账过程:

  • 转账时先通过if (to == address(pair) || from == address(pair) ) 判断是否满足条件,from、to的地址都是pair,因而满足条件:
  • 判断 if (takeFee && !exclusiveFromFee[from]) 是否满足,查看合约值为true,不满足,跳过发送方代币扣款步骤,直接执行 _balance[to] = _balance[to].add(amount); 增加接收方的代币余额:

6.pn

  • 重复此步骤,可一直增加DFS-LP池子中的DFS代币。
  • 攻击者最后其实可直接执行swap()函数获取BSC-USD代币,无需再通过transfer()转移给DFS-LP池子。
全部评论(0)