0x1 事件背景
零時(shí)科技區(qū)塊鏈安全情報(bào)平臺(tái)監(jiān)控到消息,北京時(shí)間 2022年6月6日 Binance 鏈上 Discover 智能合約遭到閃電貸攻擊。零時(shí)科技安全團(tuán)隊(duì)及時(shí)對(duì)此安全事件進(jìn)行分析。
0x2 攻擊者信息
攻擊者錢包:
0x446247bb10B77D1BCa4D4A396E014526D1ABA277
攻擊者合約:
0x06b912354b167848a4a608a56bc26c680dad3d79
0xfa9c2157cf3d8cbfd54f6bef7388fbcd7dc90bd6
攻擊交易:
0x8a33a1f8c7af372a9c81ede9e442114f0aabb537e5c3a22c0fd7231c4820f1e9
0x1dd4989052f69cd388f4dfbeb1690a3f3a323ebb73df816e5ef2466dc98fa4a4
ETHpledge合約:
0xe732a7bD6706CBD6834B300D7c56a8D2096723A7
0x3 攻擊分析
攻擊者主要的攻擊交易流程:
通過(guò)PancakeSwap閃電貸分別借款 2100枚 USD 和 19810 枚 USD。
將 2000 枚 USD 轉(zhuǎn)移至 ETHpledge 合約0xe732a。ETHpledge 合約返回 62,536 枚 Discover。
將 19,810 枚 USD 歸還閃電貸至 BSC-USD-Discover。
將 62,536 枚 Discover 換取USD,獲得 16,336 枚 USD。
歸還 2,100 枚 閃電貸借款,將剩余的 USD 兌換為 BNB,獲利離場(chǎng)。
0x4 漏洞細(xì)節(jié)
ETHpledge.team
ETHpledge.pledgein方法作用是,調(diào)用者轉(zhuǎn)入U(xiǎn)SDT資金后收到一定比例的Discover代幣,這里轉(zhuǎn)入U(xiǎn)SDT資金在pledgein方法執(zhí)行,接收Discover代幣的邏輯在ETHpledge.team方法實(shí)現(xiàn),獲取價(jià)格邏輯在ETHpledge.getprice方法實(shí)現(xiàn)。
漏洞解析
攻擊者調(diào)用ETHpledge.pledgein方法之前通過(guò)閃電貸借到大量USDT資金,使得 usdt.balanceOf 資金變少,之后調(diào)用ETHpledge.pledgein方法將少量USDT轉(zhuǎn)入,隨后調(diào)用ETHpledge.getprice方法獲取價(jià)格,由于usdt.balanceOf 減少,所以_price變小,_swapprice變小,最終轉(zhuǎn)賬數(shù)量的curTamount變量增大。從而兌換的Discover代幣數(shù)量增加。
在兌換了大量Discover代幣后,攻擊者隨后迅速歸還了數(shù)量較多的一筆USDT閃電貸借款。隨后使用Discover代幣正常兌換出較多的USDT。
0x5 資金流向
目前黑客已將獲利的 49 枚 BNB 轉(zhuǎn)移至 Tornado.Cash混幣平臺(tái)。
0x6 總結(jié)
此次攻擊事件主要通過(guò)閃電貸資金控制價(jià)格,導(dǎo)致兌換數(shù)量波動(dòng),對(duì)于此類安全事件,建議不要使用外部可控的資金數(shù)量來(lái)獲取價(jià)格,避免閃電貸攻擊影響官方及用戶資產(chǎn),此外合約上線前應(yīng)進(jìn)行全面安全審計(jì),將可能發(fā)生的安全風(fēng)險(xiǎn)規(guī)避掉。