時(shí)間:2023-06-13|瀏覽:232
根據(jù)交易記錄顯示,攻擊者利用主攻擊合約C1(0x632942c9BeF1a1127353E1b99e817651e2390CFF)對應(yīng)ola.finance系列合約進(jìn)行攻擊。
跟蹤其主要調(diào)用過程和代碼,發(fā)現(xiàn)ola.finance項(xiàng)目核心憑證代幣使用了ERC677模塊。如果轉(zhuǎn)賬的目標(biāo)地址是合約,則會調(diào)用目標(biāo)地址的Fallback函數(shù),這便成為本次攻擊點(diǎn)的切入點(diǎn)。
攻擊者利用C1合約創(chuàng)建攻擊合約C2(0xBcc8a610bd35C2981025Fe32a5aDc2FB9b6b3B01),并利用閃電貸借出515個(gè)WETH,然后將這部分WETH發(fā)送至C2合約。接著,C2合約利用步驟1獲得的515WETH發(fā)送至合約ola_oWETH(0x139Eb08579eec664d461f0B754c1F8B569044611)進(jìn)行質(zhì)押,以換取25,528.022oWETH。
C2再利用25,528.022oWETH向ola_oWBTC合約(0x3882bA8bD0E8AbAf56F86e6744b103dAB6a9ba4C)借出20個(gè)WBTC,并在轉(zhuǎn)賬時(shí)利用ERC677的轉(zhuǎn)賬函數(shù)進(jìn)行重入,將屬于自己的25,528.022oWETH和20WBTC轉(zhuǎn)賬至C1。
C1合約利用步驟3獲取到的25,528.022oWETH在ola_oWETH合約上進(jìn)行贖回,獲取514.99WETH。接下來,C1再次創(chuàng)建C3合約(0x1B1d76C9AFd990080b950894E9f6230b151D0dE7),并將步驟3中獲取到的20WBTC發(fā)送至C3合約。
C3合約重復(fù)步驟2、3的操作,利用20WBTC進(jìn)行質(zhì)押,并在borrow時(shí)再次利用重入獲得100個(gè)WETH。最終完成攻擊,歸還閃電貸516.648WETH(共獲利98WETH和19.99WBTC)。
值得一提的是,前面所述流程是本次事件的首次攻擊,并借助了閃電貸作為基礎(chǔ)資金,而后續(xù)則是以本次獲利后的資金作為基礎(chǔ)資金,反復(fù)執(zhí)行上述2-3步驟進(jìn)行多次攻擊,最終獲利約為467萬美金。
對此,成都鏈安團(tuán)隊(duì)建議: