真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

10年積累的成都網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有湖南免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、漏洞概述

以太坊智能合約的含義就是一組代碼(函數(shù))和數(shù)據(jù)(合約的狀態(tài)),它們位于以太坊區(qū)塊鏈的一個(gè)特定地址上。智能合約一般使用solidity語(yǔ)言編寫。

Morpheus Network與世界上一些大型航運(yùn)、海關(guān)和銀行公司協(xié)商,通過(guò)利用區(qū)塊鏈的智能合約技術(shù)建立一個(gè)全面服務(wù)的、全球性的、自動(dòng)化的、開放的供應(yīng)鏈平臺(tái)和一個(gè)集成的加密貨幣支付系統(tǒng) ,發(fā)布基于以太坊的 MorphToken。

2018年6月22日,Morpheus Network 發(fā)公告稱將發(fā)布新的智能合約,以更新目前含有漏洞的合約代碼。新的Token名稱為MRPH,新舊Token以1:1兌換。

隨后,知道創(chuàng)宇404區(qū)塊鏈安全研究團(tuán)隊(duì)開始漏洞應(yīng)急,通過(guò)分析MorphToken合約代碼和交易歷史,確定該漏洞是由于大小寫編碼問題,錯(cuò)誤的將Owned合約的構(gòu)造函數(shù)Owned的首字母小寫,使之成為了一個(gè)普通函數(shù)owned,任何以太坊賬戶均可調(diào)用該函數(shù)奪取合約的所有權(quán),進(jìn)一步實(shí)現(xiàn)盜幣等系列非法操作。隨即我們發(fā)布了相關(guān)應(yīng)急報(bào)告,同時(shí)我們也注意到BCSEC安全團(tuán)隊(duì)發(fā)布了相關(guān)的分析文檔。

在后續(xù)的研究中,我們發(fā)現(xiàn)早在2017年8月29日,Github上就有人提到了這種因構(gòu)造函數(shù)缺失導(dǎo)致的合約安全漏洞問題。該漏洞目前影響包括MorphToken、B2X、DoubleOrNothingImpl等多個(gè)智能合約。

二、漏洞原理

在MorphToken的合約代碼里:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code 可以明顯的看到相關(guān)大小寫編寫錯(cuò)誤:

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

以太坊智能合約中的構(gòu)造函數(shù)主要用于初始化,如:確定合約的所有者,并且只會(huì)在合約部署時(shí)運(yùn)行。在小于0.4.22版本的solidify編譯器語(yǔ)法要求中,構(gòu)造函數(shù)的名稱應(yīng)該和合約名稱保持一致。如果程序員在編寫合約時(shí)將構(gòu)造函數(shù)名稱寫錯(cuò),那么原本的構(gòu)造函數(shù)將成為任何人都可以調(diào)用的普通函數(shù)。漏洞示例代碼及在Remix-ide中的復(fù)現(xiàn)結(jié)果如下:

0x01 漏洞合約部署

下圖中,Bank合約繼承自O(shè)wned合約。在Owned合約中,由于錯(cuò)誤的編碼,將構(gòu)造函數(shù)名稱寫錯(cuò),owned函數(shù)成為了一個(gè)普通函數(shù)。可以看到,Bank合約部署后,由于缺少構(gòu)造函數(shù),初始化時(shí)owner為0x0000000000000000000000000000000000000000。

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

0x02 漏洞現(xiàn)場(chǎng)還原

任何以太坊賬戶都可以調(diào)用Bank合約繼承自O(shè)wned合約的owned函數(shù),更改Bank合約的owner變量,從而使合約所有權(quán)發(fā)生轉(zhuǎn)移。

如下如所示,0x14723a09acff6d2a60dcdf7aa4aff308fddc160c這個(gè)賬戶調(diào)用了Bank合約的owned函數(shù)后,可以看到Bank合約的owner變成了0x14723a09acff6d2a60dcdf7aa4aff308fddc160c。同理,攻擊者也可以利用這個(gè)漏洞提權(quán),實(shí)施一系列惡意操作。

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

三、漏洞影響評(píng)估

我們使用內(nèi)部的以太坊智能合約審計(jì)系統(tǒng)對(duì)以太坊主鏈上所有30000+公開智能合約進(jìn)行了自動(dòng)化審計(jì),確認(rèn)受該大小寫編碼漏洞影響的共計(jì)16個(gè),以下為統(tǒng)計(jì)結(jié)果:

(受漏洞影響程度取決于合約的邏輯,具體代碼審計(jì)結(jié)果可聯(lián)系知道創(chuàng)宇404區(qū)塊鏈安全研究團(tuán)隊(duì))

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞    

理論上在合約部署后,由于編碼錯(cuò)誤引起的構(gòu)造函數(shù)缺失,owner默認(rèn)值會(huì)變?yōu)?x0000000000000000000000000000000000000000,這樣合約中涉及到owner的函數(shù)調(diào)用都會(huì)異常,合約所有者應(yīng)該能及時(shí)發(fā)現(xiàn)漏洞才是。然而MorphToken這種市值幾百萬(wàn)美金的代幣,因?yàn)楹霞s存在這個(gè)編碼漏洞而被盜幣。通過(guò)分析Morph Token源代碼,我們得到了答案。MorphToken繼承了Owned合約,但是自己實(shí)現(xiàn)了構(gòu)造函數(shù)。就是說(shuō),是父合約向外留了一個(gè)“后門”。    

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

另一種情況,如果合約中沒有涉及owner權(quán)限的函數(shù)調(diào)用,那么即使攻擊者盜取了合約所有權(quán),也沒有任何用處。上表B2X合約中就是這種情況。

總體來(lái)說(shuō),受漏洞影響的合約數(shù)量不多,屬于被MorphToken帶著“火”了一把的漏洞。

事實(shí)上,很多安全漏洞都來(lái)源于程序員的粗心編碼,智能合約這種部署后即不可更改的更應(yīng)加強(qiáng)代碼審計(jì)。

四、防護(hù)方案

0.4.22版本以后的solidity編譯器引入了constructors關(guān)鍵字,以替代低版本的將合約名作為構(gòu)造函數(shù)名的語(yǔ)法,從而避免程序員編碼錯(cuò)誤。強(qiáng)烈建議采用最新版本編譯器。

如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁(yè)名稱:如何從以太坊MorphToken事件看智能合約構(gòu)造函數(shù)大小寫編碼錯(cuò)誤漏洞
瀏覽路徑:http://weahome.cn/article/pjeidi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部