當前位置:
首頁 > 最新 > 淺析AMR智能合約批量轉賬溢出漏洞

淺析AMR智能合約批量轉賬溢出漏洞

日前,互聯網爆出AMR合約存在高危安全風險的交易,該合約存在批量轉賬溢出漏洞,當合約實現批量轉賬功能時,容易在計算通證增加量時發生溢出漏洞,BUGX.IO安全團隊經過研究分析發現,同類漏洞仍在以太坊裡面部分存在。

以下為漏洞分析過程:

原理

totalTokensToTransfer+=tokens[i];這一句溢出,溢出後,totalTokensToTransfer變小了,從而繞過了assert(balances[msg.sender]>totalTokensToTransfer);的判斷,這樣就能花極少的token,任意增加目標地址的token。

看到攻擊者的攻擊行為:

https://etherscan.io/tx/0xd4ee42c454941fccb5d03f6155e288f28cc00473ba927ee4b19ad4e2bfc68b68

可以看到這兩個 tokens 值都是 uint256 最大值的一半,兩個加起來剛好溢出變為 0。

漏洞復現


「0x14723a09acff6d2a60dcdf7aa4aff308fddc160c」,1

使用 可以查看到 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c 有 balances 為 1

這裡需要兩個地址,一個是攻擊者,另一個為其它地址,這裡設置 0 地址就行。

執行 multiTransfer 就行。

[「0x14723a09acff6d2a60dcdf7aa4aff308fddc160c」,」0x0000000000000000000000000000000000000000」],[「57896044618658097711785492504343953926634992332820282019728792003956564819968」,」57896044618658097711785492504343953926634992332820282019728792003956564819968」]


可以看到攻擊者餘額已經變得非常大。

修復方案


進一步探索

在對以太坊上做進一步探索的時候,我們發現批量轉賬功能或者批量充值功能的實現主要有以下幾種形式:

此功能在構造函數中實現,只有部署的時候能夠使用,所以不可利用。


即使有漏洞,但受到管理者許可權控制,所以一般不可利用。


我們看到了不少這種形式的寫法,通過 的增加,溢出後繞過了 的檢測。

漏洞影響範圍

研究此漏洞原理後,我們使用自研的審計系統」以太坊衝擊波」,對以太坊上的合約進行整體監測,發現了以下合約均存在此漏洞。

資料


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

360追日團隊邊亮:上可逐日追兇,下可乘風破浪
第三方開發者可以訪問Gmail郵件?Google回應

TAG:FreeBuf |