麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

以太坊再爆高危漏洞!黑客增發(fā)ATN 1100萬枚token事件始末區(qū)塊鏈

區(qū)塊鏈大本營 2018-06-26 08:35
分享到:
導(dǎo)讀

5月11日,ATNToken遭受惡意攻擊,攻擊者利用DSAuth庫與ERC223搭配使用具有的混合漏洞,竊取了ATN的所有權(quán)。之后,攻擊者進(jìn)行了竊取代幣操作。這是一起嚴(yán)重的黑客攻擊事件,可以導(dǎo)致Token的供應(yīng)總量發(fā)生變化。

事情發(fā)生在5月中旬,ATN技術(shù)人員發(fā)現(xiàn)Token合約由于存在漏洞受到攻擊。不過ATN基金會隨后透露,將銷毀1100萬個ATN,并恢復(fù)ATN總量,同時將在主鏈上線映射時對黑客地址內(nèi)的資產(chǎn)予以剔除,確保原固定總量不變。

以下是事件還原。

事件回顧

2018年5月11日中午,ATN技術(shù)人員收到異常監(jiān)控報告,顯示ATN Token供應(yīng)量出現(xiàn)異常,迅速介入后發(fā)現(xiàn)Token合約由于存在漏洞受到攻擊。以下是黑客的攻擊操作以及利用合約漏洞的全過程。

攻擊

這次攻擊主要分為4步。首先,黑客利用ERC223方法漏洞,獲得提權(quán),將自己的地址設(shè)為owner:

image.png

第二,黑客在獲得owner權(quán)限后,發(fā)行1100w ATN到自己的攻擊主地址:

image.png

第三,黑客將owner設(shè)置恢復(fù),企圖隱藏蹤跡:

image.png

最后,黑客從主地址將偷來的黑幣分散到14個地址中:

image.png

利用合約漏洞

ATN Token合約采用的是在傳統(tǒng)ERC20Token合約基礎(chǔ)上的擴(kuò)展版本ERC223 ,并在其中使用了dapphub/ds-auth庫。采用這樣的設(shè)計是為了實現(xiàn)以下幾個能力:

天然支持Token互換協(xié)議,即ERC20Token與ERC20Token之間的直接互換。本質(zhì)上是發(fā)送ATN時,通過回調(diào)函數(shù)執(zhí)行額外指令,比如發(fā)回其他Token。

可擴(kuò)展的、結(jié)構(gòu)化的權(quán)限控制能力。

Token合約可升級,在出現(xiàn)意外狀況時可進(jìn)行治理。

單獨使用ERC223或者ds-auth庫時,

并沒有什么問題,但是兩者結(jié)合時,

黑客利用了回調(diào)函數(shù)回調(diào)了setOwner方法,

從而獲得高級權(quán)限。

ERC223轉(zhuǎn)賬代  碼如下:

image.png

當(dāng)黑客轉(zhuǎn)賬時在方法中輸入以下參數(shù):

image.png

from: 0x2eca25e9e19b31633db106341a1ba78accba7d0f——黑客地址;

to: 0x461733c17b0755ca5649b6db08b3e213fcf22546——ATN合約地址;

amount: 0

data: 0x0

custom_fallback: setOwner(address)

該交易執(zhí)行的時候,

receiver會被_to(ATN合約地址)賦值,

ATN 合約會調(diào)用_custom_fallback

即DSAuth中的setOwner(adddress)方法,

而此時的msg.sender變?yōu)锳TN合約地址,

owner_參數(shù)為_from(黑客地址)

ds-auth庫中setOwner代碼如下:

image.png

此時setOwner會先驗證auth合法性的,而msg.sender就是ATN的合約地址。

setOwner的modifier auth代碼如下:

image.png

通過利用這個ERC223方法與DS-AUTH庫的混合漏洞,黑客將ATN Token合約的owner變更為自己控制的地址。獲取owner權(quán)限后,黑客發(fā)起另外一筆交易對ATN合約進(jìn)行攻擊,調(diào)用mint方法給另外一個地址發(fā)行1100w ATN。

最后,黑客調(diào)用setOwner方法將權(quán)限復(fù)原 。

PS. 截至發(fā)稿前,ATN官方已聲稱:黑客將黑幣分散在14個不同的新地址中,而這些地址中并沒有ETH,暫時不存在立即轉(zhuǎn)賬到交易所銷贓的風(fēng)險。

漏洞是怎么造成的?

這次事件主要是利用了開發(fā)者對以太坊底層函數(shù)call、callcode、delegatecall的不當(dāng)使用造成的。

call、callcode、delegatecall是以太坊智能合約編寫語言Solidity提供的底層函數(shù),用來與外部合約或者庫進(jìn)行交互。不當(dāng)?shù)氖褂脮斐珊車?yán)重的后果。

例如,以下情況:

image.png

上述例子中,call函數(shù)的調(diào)用地址(如上圖中的_spender參數(shù))是可以由用戶控制的,攻擊者可以將其設(shè)置為合約自身的地址,同時call函數(shù)調(diào)用的參數(shù)(如上圖中的_extraData參數(shù))也是可以由用戶任意輸入的,攻擊者可以調(diào)用任意函數(shù)。

攻擊者利用上述操作,偽造成合約賬戶進(jìn)行惡意操作,可能造成如下影響:

繞過權(quán)限檢查,調(diào)用敏感函數(shù),例如setOwer;

竊取合約地址持有的代幣;

偽裝成合約地址與其他合約進(jìn)行交互;

因此,在編寫合約時,此類函數(shù)使用時需要對調(diào)用參數(shù)的安全性進(jìn)行判定,建議謹(jǐn)慎使用。

怎樣避免此類漏洞

為了避免此類漏洞,我們提醒開發(fā)者應(yīng)注意以下幾點。

謹(jǐn)慎使用call、delegatecall等底層函數(shù)。此類函數(shù)使用時需要對調(diào)用參數(shù)進(jìn)行限定,應(yīng)對用戶輸入的call調(diào)用發(fā)起地址、調(diào)用參數(shù)做出嚴(yán)格限定。比如,call調(diào)用的地址不能是合約自身的賬戶地址,call調(diào)用的參數(shù)由合約預(yù)先限定方法選擇器字符串,避免直接注入bytes可能導(dǎo)致的惡意call調(diào)用。

對于一些敏感函數(shù),不要將合約自身的賬戶地址作為可信地址。

準(zhǔn)備修復(fù)措施,增加Guard合約禁止回調(diào)函數(shù)向ATN合約本身回調(diào)。

增加黑名單合約,隨時凍結(jié)黑客地址。

合約無小事

綜合上文的分析,我們認(rèn)為,call函數(shù)的使用一定要小心,在智能合約開發(fā)中盡量避免call函數(shù)的使用,如果使用需要對其相關(guān)參數(shù)進(jìn)行嚴(yán)格的限定。另一方面,智能合約在部署之前應(yīng)進(jìn)行安全審計,比如代碼的形式化驗證等。

合約的安全審計,僅依靠開發(fā)者的經(jīng)驗和能力總有隱患,過去業(yè)內(nèi)的幾次合約漏洞事件也說明了這個問題,開發(fā)者務(wù)必要引起重視。

合約 地址 ATN 函數(shù) 黑客
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。


專題報道

主站蜘蛛池模板: 亚洲精品中文 | 亚洲26uuuu最新地址 | 国产福利一区二区精品视频 | 精品欧美一区二区三区在线观看 | 精品AV无码一二三区视频 | 天天狠天天透天干天天怕处 | 日本b站一卡二不卡三卡四卡 | 欧美在线视频一区二区 | 精品9e精品视频在线观看 | nxgx国产| 欧美日韩1区 | www.精品在线 | 欧美人与物videos另类3d | 男人的天堂comwww | 884hutv四虎永久7777 | 互换身体全集免费观看 | 免费看男女污污完整版 | 欧美特黄三级在线观看 | 地址二地址三2021变更 | 精品一区二区三区在线视频观看 | 亚洲天堂成人在线观看 | 我与岳乱短篇小说 | 精品福利一区 | 肥奶丰熟肥妇 | 日韩精品视频在线播放 | 香港论理午夜电影网 | 日本免费一区二区三区四区五六区 | 麻豆性视频 | 经典三级四虎在线观看 | 日产精品一卡2卡三卡4乱码久久 | 日本啊v在线观看 | 色欲麻将| 草久社区 | 操美女网址| 欧美不卡一区二区三区 | 久久久免费观成人影院 | 青涩体验在线观看未删减 | 2048论坛永久入口 原创合集 | 夫妻性生活免费在线观看 | 欧美人鲁交大全 | 1024人成网站色 |