回到本次闪电贷攻击,让我们看看这一次的攻击者是如何实现「空手套白狼」的。
攻击者地址:
0x59c686272e6f11dC8701A162F938fb085D940ad3
以交易
0x8c93d6e5d6b3ec7478b4195123a696dbc82a3441be090e048fe4b33a242ef09d为例
round 0
先通过闪电贷借出10,000BNB。
用所有的的BNB去购买SURGE,根据当前价格,能买到1,896,594,328,449,690 SURGE。
获取的SURGE
调用sell函数卖出所获得的SURGE,卖出了9346个BNB。
因为sell函数是先转账后修改数据,且转账代码中存在重入漏洞。在攻击合约收到BNB时,SURGE合约的状态改变前(第595行代码),攻击合约可通过重入漏洞再次购买SURGE。
由于攻击合约每次都将所有BNB余额用于购买SURGE,合约的bnbAmount不变,而SURGE的代币总量_totalSupply未更新(仍为sell之前的数量),因此SURGE价格降低,导致攻击者可以买到更多的SURGE。
重复3次Round2、Round3,攻击者通过重入累积了大量的SURGE,之后将所有的SURGE全部卖出便可以获利。
这笔交易的最后,攻击合约卖了1,864,120,345,279,610,000 SURGE,获得了10327 BNB,最后将获利的297 BNB发送给攻击者地址。
在此类安全事件中,攻击者通常属于「空手套白狼」,先使用闪电贷获取大量资金,拥有了攻击的启动「砝码」后,再通过一系列手段出入各类抵押、借贷、交易等协议,在实现操纵、扭曲资产价格数据后,实施套利,最后归还「本金」。
Beosin媒体矩阵
新浪微博
weibo.com/u/6566884467
twitter.com/Beosin_com
Medium
medium.com/@Beosin
CSDN博客
blog.csdn.net/CDLianan
GitHub
github.com/Lianantech/VCA
Telegram
t.me/LiananTech_cn
t.me/LiananTech_en
知乎
https://www.zhihu.com/org/cheng-du-lian-an-ke-ji-28
https://www.facebook.com/profile.php?id=100026616589335
↙点击阅读全文
立刻直达官网
原文始发于微信公众号(成都链安):甜蜜一击?谁是幕后黑手?BSC链上XSURGE遭闪电贷攻击全解析