大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

北京時(shí)間2021年4月28日,幣安智能鏈上區(qū)塊鏈項(xiàng)目 Uranium Finance 發(fā)推提醒用戶稱:Uranium 在流動(dòng)性遷移過程中被攻擊,涉及資金為 5000 萬美元。提醒用戶停止交易,目前團(tuán)隊(duì)正在與幣安安全團(tuán)隊(duì)聯(lián)系。

隨后公開了攻擊合約地址:0x2b528a28451e9853F51616f3B0f6D82Af8bEA6Ae

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

通付盾區(qū)塊鏈安全團(tuán)隊(duì)(SharkTeam)第一時(shí)間對(duì)此事件進(jìn)行了攻擊分析和技術(shù)分析,并總結(jié)了安全防范手段,希望后續(xù)的區(qū)塊鏈項(xiàng)目可以引以為戒,共筑區(qū)塊鏈行業(yè)的安全防線。

一、事件分析

通過分析,Uranium 項(xiàng)目合約中的漏洞出現(xiàn)在 UraniumPair.sol 合約中的 swap 函數(shù)中,這個(gè)漏洞會(huì)導(dǎo)致任何人可以隨意的轉(zhuǎn)出合約中的數(shù)字資產(chǎn),而只需要付出一點(diǎn)點(diǎn)的代價(jià)。

合約地址在推文中沒有公開,我們是從攻擊合約中找到的項(xiàng)目合約地址,具體流程如下:

首先查看攻擊合約的代碼發(fā)現(xiàn),這個(gè)合約的源碼沒有公開,通過反編譯查看其源碼。

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

通過幣安智能鏈瀏覽器查看最早的攻擊交易:

0x5a504fe72ef7fc76dfeb4d979e533af4e23fe37e90b5516186d5787893c37991

可得到攻擊者調(diào)用的合約方法為52f18fc3。這是合約方法編碼后的值,從反編譯代碼中尋找這個(gè)編碼后的合約方法,可以找到這個(gè)合約攻擊的項(xiàng)目方合約地址,也就是 Uranium 項(xiàng)目所在的地址:0xa943ea143cd7e79806d670f4a7cf08f8922a454f。

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

首先看一下出問題UraniumPair.sol合約中swap的代碼:

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

可以看到 swap 中,最后是一個(gè)10的8次方數(shù)和一個(gè)10的6次方數(shù)的比較,這是一個(gè)幾乎是恒等的判斷,這就意味著只要按照一定的套路不斷的執(zhí)行 swap 函數(shù),就可以清空這個(gè)合約中所有的數(shù)字資產(chǎn)。深究原因,我們看到UniswapV2Pair.sol的合約中的寫法是相同的,但是它是兩個(gè)10的6次方數(shù)字的比較。

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

所以可以知道造成這次事件的原因應(yīng)該是項(xiàng)目方更新升級(jí)這個(gè)合約的時(shí)候,忘記了將后面的1000的2次方改為10000的二次方。

二、通付盾區(qū)塊鏈安全知識(shí)課堂

本次攻擊事件中,主要原因在于項(xiàng)目方更新升級(jí)合約時(shí),改寫不夠全面,遺漏了重要的修改點(diǎn)。通付盾區(qū)塊鏈安全團(tuán)隊(duì)建議您,可以將1000這類在多處使用而且意義一致的常數(shù),可以聲明一個(gè)常量來使用,這樣調(diào)整起來就不會(huì)有疏漏。調(diào)整后應(yīng)該為:

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

這樣未來若有升級(jí)的需求,直接調(diào)整 Num 的值即可,就不會(huì)再出現(xiàn)遺漏修改,導(dǎo)致安全事故。同時(shí),在項(xiàng)目上線之前請(qǐng)專業(yè)的智能合約審計(jì)機(jī)構(gòu)進(jìn)行嚴(yán)格的審計(jì),保障智能合約和數(shù)字資產(chǎn)安全。

三、通付盾智能合約審計(jì)服務(wù)

區(qū)塊鏈智能合約安全關(guān)系用戶的財(cái)產(chǎn)安全,至關(guān)重要!在區(qū)塊鏈項(xiàng)目開發(fā)和運(yùn)營的各個(gè)階段適時(shí)引入合適的安全工具和服務(wù),為用戶的數(shù)字資產(chǎn)和項(xiàng)目安全發(fā)展提供保障已成為行業(yè)共識(shí)。通付盾作為國內(nèi)領(lǐng)先的區(qū)塊鏈安全服務(wù)提供商,為開發(fā)者提供智能合約審計(jì)服務(wù)。

n 智能合約自動(dòng)化審計(jì)在通付盾云平臺(tái)上為用戶提供智能合約進(jìn)行自動(dòng)化審計(jì)服務(wù)。運(yùn)用符號(hào)執(zhí)行、形式化驗(yàn)證等智能合約分析技術(shù),覆蓋高級(jí)語言、虛擬機(jī)、區(qū)塊鏈、業(yè)務(wù)邏輯四個(gè)層面一百多項(xiàng)安全風(fēng)險(xiǎn)檢測(cè)項(xiàng),保障智能合約安全運(yùn)行。

大意失荊州-- Uranium Finance合約升級(jí)漏洞事件分析

n 通付盾也為客戶提供高級(jí)別的區(qū)塊鏈安全服務(wù),區(qū)塊鏈安全專家團(tuán)隊(duì)7*24小時(shí)為智能合約提供全生命周期的安全保障,服務(wù)包括:VIP安全審計(jì)服務(wù)、VIP合規(guī)審計(jì)服務(wù)、安全事故應(yīng)急響應(yīng)等。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )