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

曲速未來 :以太坊智能合約設(shè)計(jì)缺陷之條件競爭區(qū)塊鏈

區(qū)塊鏈安全檔案 2018-09-11 04:39
分享到:
導(dǎo)讀

智能合約安全咨詢公司曲速未來表示:開發(fā)者在進(jìn)行代碼開發(fā)時常常傾向于認(rèn)為代碼會以線性的方式執(zhí)行,而且他們忽視了并行服務(wù)器會并發(fā)執(zhí)行多個線程,這就會導(dǎo)致意想不到的結(jié)果。

前言

智能合約安全咨詢公司 曲速未來 表示:2016年11月29號,有人在一篇文章中提到到了一個在ERC20標(biāo)準(zhǔn)中存在的隱患問題,條件競爭。

首先了解一個定義——競爭條件是什么?條件競爭漏洞是一種服務(wù)器端的漏洞,由于服務(wù)器端在處理不同用戶的請求時是并發(fā)進(jìn)行的,因此,如果并發(fā)處理不當(dāng)或相關(guān)操作邏輯順序設(shè)計(jì)的不合理時,將會導(dǎo)致此類問題的發(fā)生。

開發(fā)者在進(jìn)行代碼開發(fā)時常常傾向于認(rèn)為代碼會以線性的方式執(zhí)行,而且他們忽視了并行服務(wù)器會并發(fā)執(zhí)行多個線程,這就會導(dǎo)致意想不到的結(jié)果。

線程同步機(jī)制確保兩個及以上的并發(fā)進(jìn)程或線程不同時執(zhí)行某些特定的程序段,也被稱之為臨界區(qū)(critical section),如果沒有應(yīng)用好同步技術(shù)則會發(fā)生“競爭條件”問題。

在很多系統(tǒng)中都會包含上傳文件或者從遠(yuǎn)端獲取文件保存在服務(wù)器的功能(如:允許用戶使用網(wǎng)絡(luò)上的圖片作為自己的頭像的功能),下面是一段簡單的上傳文件釋義代碼:

這段代碼看似一切正常,先通過copy($GET['src'],$GET['dst'])將文件從源地址復(fù)制到目的地址,然后檢查$GET['dst']的安全性,如果發(fā)現(xiàn)$GET['dst']不安全就馬上通過unlink($_GET['dst'])將其刪除。但是,當(dāng)程序在服務(wù)端并發(fā)處理用戶請求時問題就來了。如果在文件上傳成功后但是在相關(guān)安全檢查發(fā)現(xiàn)它是不安全文件刪除它以前這個文件就被執(zhí)行了那么會怎樣呢?

假設(shè)攻擊者上傳了一個用來生成惡意shell的文件,在上傳完成和安全檢查完成并刪除它的間隙,攻擊者通過不斷地發(fā)起訪問請求的方法訪問了該文件,該文件就會被執(zhí)行,并且在服務(wù)器上生成一個惡意shell的文件。至此,該文件的任務(wù)就已全部完成,至于后面發(fā)現(xiàn)它是一個不安全的文件并把它刪除的問題都已經(jīng)不重要了,因?yàn)楣粽咭呀?jīng)成功的在服務(wù)器中植入了一個shell文件,后續(xù)的一切就都不是問題了。

由上述過程我們可以看到這種“先將猛獸放進(jìn)屋,再殺之”的處理邏輯在并發(fā)的情況下是十分危險的,極易導(dǎo)致條件競爭漏洞的發(fā)生。

介紹

這里舉一個approve函數(shù)中會出現(xiàn)的比較典型的例子,approve一般用于授權(quán),比如授權(quán)別人可以取走自己的多少代幣,整個流程是這樣的:

1.用戶A授權(quán)用戶B 100代幣的額度

2.用戶A覺得100代幣的額度太高了,再次調(diào)用approve試圖把額度改為50

3.用戶B在待交易處(打包前)看到了這筆交易

4.用戶B構(gòu)造一筆提取100代幣的交易,通過條件競爭將這筆交易打包到了修改額度之前,成功提取了100代幣

5.用戶B發(fā)起了第二次交易,提取50代幣,用戶B成功擁有了150代幣

想要理解上面這個條件競爭的原理,首先我們得對以太坊的打包交易邏輯有基礎(chǔ)認(rèn)識。

簡單來說就是

1.只有當(dāng)交易被打包進(jìn)區(qū)塊時,他才是不可更改的

2.區(qū)塊會優(yōu)先打包gasprice更高的交易

所以當(dāng)用戶B在待打包處看到修改的交易時,可以通過構(gòu)造更高gasprice的交易來競爭,將這筆交易打包到修改交易之前,就產(chǎn)生了問題。

以下代碼就存在條件競爭的問題

影響范圍

使用Haotian平臺智能合約審計(jì)功能可以準(zhǔn)確掃描到該類型問題。

基于Haotian平臺智能合約審計(jì)功能規(guī)則,我們對全網(wǎng)的公開的共39548 個合約代碼進(jìn)行了掃描,其中共24791個合約涉及到這類問題。

截止2018年8月10日為止,我們發(fā)現(xiàn)了22981個存在approve條件競爭的合約代碼,其中15325個合約仍處于交易狀態(tài),其中交易量最高的10個合約情況如下:

修復(fù)方式

關(guān)于這個問題的修復(fù)方式討論很多,由于這屬于底層特性的問題,所以很難在智能合約層面做解決,在代碼層面,我們建議在approve函數(shù)中加入

將這個條件加入,在每次修改權(quán)限時,將額度修改為0,再將額度改為對應(yīng)值。

在這種情況下,合約管理者可以通過日志或其他手段來判斷是否有條件競爭發(fā)生,從風(fēng)控的角度警醒合約管理者注意該問題的發(fā)生。范例代碼如下:

總結(jié)

智能合約安全咨詢公司 曲速未來 表示:條件競爭是個比較特殊的問題,這里的條件競爭涉及到了智能合約底層實(shí)現(xiàn)邏輯,本身打包邏輯存在條件競爭,我們無法在代碼層面避免這個問題,但對于開發(fā)者來說,比起無緣無故的因?yàn)樵搯栴}丟失代幣來說,更重要的是合約管理者可以監(jiān)控到每一筆交易的結(jié)果,所以我們加入置0的操作來提醒合約管理者、代幣持有者該問題,盡量避免這樣的操作發(fā)生。這里 曲速未來 再次建議所有的開發(fā)者重新審視自己的合約代碼,檢查是否存在設(shè)計(jì)缺陷問題,避免不必要的麻煩以及安全問題。

本文內(nèi)容由 曲速未來安全咨詢公司編譯,轉(zhuǎn)載請注明。 曲速未來提供包括主鏈安全、交易所安全、交易所錢包安全、DAPP開發(fā)安全、智能合約開發(fā)安全等相關(guān)區(qū)塊鏈安全咨詢服務(wù)。

問題 合約 競爭 條件 代碼
分享到:

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ǔ)充。


主站蜘蛛池模板: 亚洲六月丁香六月婷婷色伊人 | 男人晚上适合偷偷看的污污 | 精品欧美日韩一区二区三区 | 午夜一个人在线观看完整版 | 国产 日韩 欧美 综合 | 私人影院在线免费观看 | 毛片一级毛片 | 全日本爽视频在线 | 国产主播福利在线观看 | 国产v日韩v欧美v精品专区 | 精品国产理论在线观看不卡 | 亚洲天堂色图 | 教师系列 大桥未久在线 | 国内精品伊人久久大香线焦 | 国产日韩一区二区 | se在线播放 | 女教师被学生糟蹋三天 | 日韩在线视频在线 | 欧美性高清另类videosex死尸 | 香港三级浴室女警官 | 亚洲福利一区二区精品秒拍 | 亚洲精品视频观看 | 日韩中文字幕视频在线观看 | 俺去俺来也www色官网免费的 | 出轨同学会免费观看 | 被强上后我成瘾了小说 | 天天爱天天插 | 初尝黑人巨大h文 | 日本免费不卡在线一区二区三区 | 175m美女被网友灌醉啪啪玩脚 | 二次元美女互摸隐私互扒 | 久久国产36精品色熟妇 | 99自拍网| 91精品国产综合久久消防器材 | 9久re在线观看视频精品 | 好爽视频 | 无码区国产区在线播放 | 热辣小秘书办公室 | aaaaa特级毛片 | 精品麻豆国产 | 外国xxx|