BRA代币被攻击事件分析
攻击背景
攻击者地址:0x67a909f2953fb1138bea4b60894b51291d2d0795
攻击合约地址:0x1FAe46B350C4A5F5C397Dbf25Ad042D3b9a5cb07
攻击tx:0x6759db55a4edec4f6bedb5691fc42cf024be3a1a534ddcc7edd471ef205d4047
通过blocksec的phalcon工具来分析攻击的tx
https://phalcon.blocksec.com/tx/bsc/0x6759db55a4edec4f6bedb5691fc42cf024be3a1a534ddcc7edd471ef205d4047
攻击过程分析
1.从dodo中借出1400 WBNB
2.将1000 WBNB换成10865 BRA
攻击合约收到10539 BRA,325 BRA发送回LP合约
查看下BRA的transfer方法,满足一定条件会有个tax
分别为转帐数量的3%
在这里是满足了sender==uniswapV2Pair&&!recipientAllow
recipientAllow的值为:
bool recipientAllow = ConfigBRA(BRA).isAllow(recipient);
3.将10539 BRA转到LP地址
4.调用skim()方法,to地址设置为LP地址
将多出来的10539 BRA再次发送到BRA-USDT的LP地址,LP地址共收到了10855 BRA
这是因为_tansfer函数中两个if都被满足,导致tax收了两次,导致增发
5.重复调用skim()增发BRA
6.调用swap方法,将增发的BRA换成USDT
7.将USDT换成WBNB,归还闪电贷
总结
此次攻击主要是在代币在转帐时没考虑到tax可能被收取两次的情况导致代币增发造成的。
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。