梅林矿池当天被攻击了两次,我们只分析第一次攻击,因为第二次攻击的方法太沙雕了
北京时间UTF+8 14点30分,bsc生态链上的defi机枪池-merlin发生了黑客大量铸造梅林代币,然后抛售,导致梅林币价短时间内在50u-25u之间上下窜动。根据tg项目群里的相关消息,对此次事件进行了追踪和研究。先抛出攻击者的地址:
https://bscscan.com/address/0x400fa7edd10d480f034113f5e81bc1bb78c162fa
攻击者确实是获取了大量梅林代币,然后到1inch上转换成大量cake,再把cake跨链转账成eth进行跑路。
根据获取大量梅林的交易记录txn hash进行查询。
https://bscscan.com/tx/0x8e20a1118a669d03b66c5eca2d937646bd855a998afb1e94b94ff6303456ff97
攻击者通过某种方式,在0x00黑洞地址铸币了大量的梅林,且同时也获得了大量的cake。
从tx交易最开始的记录可以看到,本身的一开始的cake数量并不是很多。
结合这类攻击的手法,向前后两条token交易进行查验,我们发现:
攻击者第一步是out一部分cake出去,随后进行了一个操作,从合约地址in了merl代币和cake,因为in的merl代币和cake的tx hash是同一个,所以可以认为是一个合约执行的。
打开这笔out的详细交易记录:
攻击者从自己的钱包把cake转移到一个合约地址里。。。
0x758c6c9731ee68ad278f8c2f2f27b84acb092649
接着根据tg群里有人传出的一张图。
从合约源码里可以比较直观的看到,铸币的梅林是根据cake的数量按一定比例生成的,而cake是从当前合约余额里取的。所以原因大概就是质押后,你获得的收益cake是在某个钱包(合约)里的。然后他简单的取当前钱包(合约)里的余额cake来算merl要增发多少。谁知道这些cake是 攻击者发给合约的,不是收益出来的。
根据某次攻击进行收益率判断:
冲进去2457cake,返还给1720cake,然后也一并还了1351的merl,但是merl价格比cake高,损失2457-1720=737个cake,但是获得了1351的merl,merl在30-40u,cake是20u以下,
然后把1351的merl用1inch换成cake,看最后变成1351merl变1669cake,减去737,也就是说他一次攻击大约能获益本金一半的cake。按此等比差,多次进行操作,最后形成一个巨大的数量。我追溯了攻击者最开始的成本:180个cake,当时市值2w3软妹币,最后获取大约250eth,价值500w软妹币,仅仅只是手动花了1小时的时间。
在debank上看更加直观
区块链的defi产品的安全还是需要任重而道远啊。这是我自己参与的第三个矿池被攻击的案例了。