ThreeBodyOF 攻击事件分析

事件背景

2023 年 1 月 12 日,BSC 上的 ThreeBodyOF 受到攻击,损失 1.76k BSC-USD。该项目方在 twitter 上的最后一次活跃是 2021 年 11 月 6 日。此次攻击中,攻击者借助闪电贷,窃取了合约中剩下的作为添加流动性奖励的token。

攻击地址交易信息

攻击合约地址:0xd838b8b3df060163e9eca4a5757ce457b04013c8

攻击者地址:0xec14b00a36869da8ea3acf93fffafd12aeea9993

受害者合约地址:0xa2a6e3aac7920cee5590350f03c24fd4918f9324

攻击交易:

  1. 0xfcaf5a5703b926a3cd98fdc37f85b61e877b13b65ec546355ae1000f4d066e5d 877.07 BSC-USD
  2. 0x14bdd0ae0f479f5d706d4535ff8c9dde831187ef15ed6fe36d29ae5a84a244c7 479.45 BSC-USD
  3. 0x813dac7f2b7738e39a52e6f01a50029cdcefd9b53f93471aba5ff45a0fadc9e6 411.42 BSC-USD

攻击过程

这里以攻击交易 0xfcaf5a5703b926a3cd98fdc37f85b61e877b13b65ec546355ae1000f4d066e5d 为例进行分析

  1. 利用闪电贷借出 217,456 BSC-USD,作为初始资金
  2. 向 Lp 池子添加流动性,并将 217,456 BSC-USD 交换为 9,504,199,652 Three-Body
  3. 将获得的 9,504,199,652 Three-Body 利用 transfer 发送给 PancakePair,再调用 skim 函数拿回这部分资金
  4. 攻击者重复进行第三个步骤大约两百次后, Lp 拥有了 16,557,126,455 Three-Body
  5. 攻击者再次调用 addLiqudity 函数大约两百次后,Lp 损失的 Three-Body,分别用来作为奖励发送给攻击者,和作为流动性发送给 PancakePair。此时攻击者的余额为 15,645,471,858 Three-Body,获得了 15,645,471,858-1,286,248,165=14,359,223,693 Three-Body 的收益
  6. 将所有的 Three-Body 交换为 218,333 BSC-USD
  7. 归还闪电贷,攻击者总收益为 218,333-217,456=877 BSC-USD

image-20230117175149200

image-20230117175326546

image-20230117175521163

攻击原因

  1. 每次转账时,会收取千分之五的手续费,作为奖励 mint 给 Lp 合约
  2. 每次添加流动性时,会将当前 Lp 合约所有 Three-Body 的百分之一作为奖励发放给流动性添加者
  3. 由于攻击者通过多次调用 addLiqudity 函数,获得了大量奖励,虽然 Three-Body 的价格由于流动性的增加有所下降,但是依然获得了一定的收益

image-20230118002546939

image-20230118002649787


ThreeBodyOF 攻击事件分析
http://sissice.github.io/2023/01/14/ThreeBodyOFAnalyse/
作者
Sissice
发布于
2023年1月14日
许可协议