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

WF曲速區:Solidity中的重入漏洞分析區塊鏈

曲速未來安全區 2018-08-08 21:55
分享到:
導讀

Soildity作為編寫智能合約的語言,已經被廣泛的應用。但同時,開發者和用戶也得到了慘痛的教訓,智能合約的安全問題層出不窮。因此,區塊鏈安全公司WF曲速未來總結了一些常見的Solidity安全問題。前車之鑒,后車之師,希望后來者能有所警惕。

前言

Soildity 作為編寫智能合約的語言,已經被廣泛的應用。但同時,開發者和用戶也得到了慘痛的教訓,智能合約的安全問題層出不窮。

因此,區塊鏈安全公司WF曲速未來總結了一些常見的Solidity安全問題。前車之鑒,后車之師,希望后來者能有所警惕。

重入漏洞介紹

重入漏洞,按照表面意思就是可以重復進入。在以太坊的智能合約中,向為外部地址發送ETH需要調用外部合約的代碼。黑客通過劫持外部調用,從而重復進入以太坊智能合約的轉賬函數進行轉賬。

代碼分析

首先是以太坊的智能合約的轉賬函數

假如賬戶有10個幣,你要轉9個出去。肯定是可以的,你要轉11個,就不行。因為你沒有11個。所以此處要轉9個出去肯定是可以的。因為10>=9。最后一步就是減去你賬戶中的9個幣了。此時賬戶里面只有1個幣了。

看看黑客如何進行攻擊的:

 .

攻擊者首先構造一個惡意合約Mallory,將Mallory部署之后,攻擊者調用withdraw函數向Mallory合約捐贈一點以太幣。看似沒什么問題。

但是withdraw函數中的msg.sender.call.value(amout)()執行之后,由于轉賬 操作特性 ,會在轉賬結束之后自動調用Mallory 的 fallback函數,于是再次調用 withdraw函數。因為此時credit中并未更新額度,所以依然可以正常取款,便陷入遞 歸循環,每次都提取DAO中的一部分以太幣到Mallory合約中。

在這里,我們上面分析過了,我們是先進行轉賬再進行扣款的。那么這樣有什么壞處呢?也就是說,如果在轉賬處一直循環卡住了,那么扣款就不會執行。但是轉賬操作會一直執行

相關事件

2016年6月以太幣組織 The DAO 被攻擊,攻擊者利用兩個代碼漏洞創建子合約提取了360萬個以太幣。接下來我們詳細分析一下這個事件

從splitDAO代碼開始

函數調用者只能是TokenHolder。不能是ether賬戶。這里沒什么問題,符合預期

splitDAO的代碼有點長,我們看到如下的代碼

在這里是計算需要支付的金額,然后調用createTokenProxy函數。我們需要記住這點。根據BLOG 2,在DAO.sol中,function splitDAO函數有這樣一行:

合約中,為msg.sender記錄的dao幣余額歸零、扣減dao幣總量totalSupply等等都發生在將發回msg.sender之后,這里是在Blog 1中指出的一個典型“反模式”。

接下來看withdrawRewardFor函數。目前github中所見最新代碼并非部署于Ethereum livenet的代碼:

paidOut[_account] = reward 在原來代碼里面放在payOut函數調用之后,最新github代碼中被移到了payOut之前。再看payOut函數調用。rewardAccount的類型是ManagedAccount,在ManagedAccount.sol中可以看到:

_recipient.call.value()() 這個函數調用時,轉賬_amount個Wei,call調用默認會使用當前剩余的所有gas,此時call調用所執行的代碼步驟數可能很多,基本只受攻擊者所發消息的可用的gas限制。

把這些拼起來,黑客的攻擊手法就浮現了:

我們現在可以建立一個攻擊合約。

創建一個錢包,調用splitDAO多次,直到到達合約的gas limit,或者stack limit。

創建一個分割提案到一個新的錢包地址。

等待7天。

調用splitDAO

調用了兩次splitDAO,withdrawRewardFor也調用了兩次,并且兩次都是成功。成功竊取ether。

區塊鏈安全公司WF曲速未來 表示:作為已經有過被利用先例的漏洞,開發者在編寫合約時應更小心一些。

合約 調用 函數 代碼 轉賬
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 四虎影院久久 | 男人和女人日 | 脱女学小内内摸出水网站免费 | 精品一区二区三区视频日产 | 国产免费看黄的私人影院 | 国产高清免费午夜在线视频 | 亚洲图片 自拍偷拍 | 99久久精品自在自看国产 | 二次元美女互摸隐私互扒 | 久久久久免费视频 | 亚洲精品一区二区三区中文字幕 | 国产精品特黄毛片 | 色播导航 | 美国复古性xxxx | 亚洲H成年动漫在线观看不卡 | 亚洲黄网站wwwwww | zoomkool最新版 | 午夜国产精品福利在线观看 | 国内精品九一在线播放 | 91av俱乐部| 国产精品久久久免费视频 | 大香人蕉免费视频75 | 国产yw193.㎝m在线观看 | 精品老司机在线视频香蕉 | 成人影院在线观看视频 | 91sao在线看片水片 | 久久re视频精品538在线 | 成人伊人亚洲人综合网站222 | 成人免费毛片一区二区三区 | 秋霞啪啪片| 亚州在线播放 | 青草青草久热精品视频在线网站 | 国产精品反差婊在线观看 | 色老妇 | 亚洲尿尿 | 亚洲成A人片在线观看中文L | 色综合 成人| 99re在线精品视频免费 | 亚洲电影成人 成人影院 | 轻轻操在线视频 | 欧美艳星kagneyiynn |