Solidity 合约漏洞,价值 38BNB 漏洞分析
1. 漏洞简介
https://twitter.com/NumenAlert/status/1626447469361102850
https://twitter.com/bbbb/status/1626392605264351235
2. 相关地址或交易
攻击交易:
https://bscscan.com/tx/0x146586f05a4513136deab3557ad15df8f77ffbcdbd0dd0724bc66dbeab98a962
攻击账号:0x187473cf30e2186f8fb0feda1fd21bad9aa177ca
攻击合约:0xd1b5473ffbadd80ff274f672b295ba8811b32538
被攻击合约:Starlink 0x518281f34dbf5b76e6cdd3908a6972e8ec49e345
3. 获利分析
4. 攻击过程&漏洞原因
查看攻击交易过程,发现攻击合约反复调用 Starlink. transfer 、Cake-LP. Skim、Cake-LP. Sync 这三个步骤,且调用完后查看了 Cake-LP、0xd1b5473ffbadd80ff274f672b295ba8811b32538 合约的 Starlink 余额。
从中可发现 Cake-LP 的 Starlink 余额正急剧减少,势必导致池子的价格失衡。查看原因发现,当调用池子 Cake-LP 的 skim 函数时,会将池子中的代币转给地址 0x9cbb175a448b7f06c179e167e1afeffb81e51dfa。
在多次重复操作后可查看到池子的 Starlink 代币数量仅为 558 单位,攻击者可以使用少量 Starlink 代币换取全部 WBNB 代币:
攻击者归还闪电贷,离场。