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

曲速未來 :智能合約攻擊分析之SafeMath使用不當(dāng)區(qū)塊鏈

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

智能合約安全咨詢公司曲速未來提醒:在編寫智能合約的時(shí)候需要注意的一個(gè)主要的安全特性:防止溢出和下溢。為了防止這些情況,OpenZeppelin建立了一個(gè)叫做SafeMath的庫(kù)(library),默認(rèn)情況下可以防止這些問題。

智能合約安全咨詢公司 曲速未來 提醒:在編寫智能合約的時(shí)候需要注意的一個(gè)主要的安全特性:防止溢出和下溢。為了防止這些情況,OpenZeppelin建立了一個(gè)叫做SafeMath的庫(kù)(library),默認(rèn)情況下可以防止這些問題。

什么是溢出(overflow)?

假設(shè)我們有一個(gè)uint8, 只能存儲(chǔ)8 bit數(shù)據(jù)。這意味著我們能存儲(chǔ)的最大數(shù)字就是二進(jìn)制11111111(或者說十進(jìn)制的2^8-1 =255).

來看看下面的代碼。最后 number 將會(huì)是什么值?

在這個(gè)例子中,我們導(dǎo)致了溢出—雖然我們加了1,但是number出乎意料地等于0了。

下溢(underflow)也類似,如果你從一個(gè)等于0的uint8減去1, 它將變成255 (因?yàn)閡int是無符號(hào)的,其不能等于負(fù)數(shù))。

使用 SafeMath

不過在我們使用之前……什么叫做庫(kù)?

一個(gè)庫(kù)是Solidity中一種特殊的合約。其中一個(gè)有用的功能是給原始數(shù)據(jù)類型增加一些方法。

比如,使用SafeMath庫(kù)的時(shí)候,我們將使用using SafeMath for uint256這樣的語法。SafeMath庫(kù)有四個(gè)方法—add,sub,mul,以及 div。

以太坊虛擬機(jī)EVM定義無符號(hào)整數(shù)為uint256,可以表示一個(gè)256位的大整數(shù),但并沒有提供溢出的檢測(cè)機(jī)制。OpenZeppline是一個(gè)第三方智能合約庫(kù),實(shí)現(xiàn)了一套SafeMath庫(kù)來檢測(cè)溢出。其代碼如下:

SafeMath使用內(nèi)建的require或assert來檢查運(yùn)算是否發(fā)生溢出,如果發(fā)生了溢出,require和assert中包含的代碼會(huì)使該事務(wù)回滾。但有些開發(fā)者不能完全理解SafeMath模版代碼,導(dǎo)致合約代碼中仍然存在漏洞。

1.攻擊案例:UCN (0x6EF5B9ae723Fe059Cac71aD620495575d19dAc42)

UCN是一個(gè)智能合約DApp應(yīng)用。合約代碼在SafeMath庫(kù)中注釋assert語句,因此SafeMath函數(shù)等同于直接進(jìn)行算術(shù)運(yùn)算,沒有任何安全檢查。并且在transferFrom函數(shù)中,注釋中聲明sub函數(shù)是安全的,不知道這是開發(fā)人員的疏忽還是故意留下的后門。

由于sub函數(shù)等同于算術(shù)運(yùn)算,balances[_from] = balances[_from].sub(_value); 存在整數(shù)下溢漏洞,可以使得賬戶余額變成一個(gè)極大值。

2.攻擊案例:EMVC(0xd3F5056D9a112cA81B0e6f9f47F3285AA44c6AAA)

EMVC合約代碼在SafeMath庫(kù)中使用了一個(gè)自定義的assert來代替內(nèi)建的assert。在assert函數(shù)中,如果參數(shù)assertion為false則直接return,并沒有進(jìn)行異常處理。因此SafeMath函數(shù)等同于直接進(jìn)行算術(shù)運(yùn)算,沒有任何安全檢查。

攻擊者可以使用transfer函數(shù)設(shè)置任意賬戶余額為任意值。

總結(jié)

智能合約安全咨詢公司 曲速未來 提醒:當(dāng)智能合約要實(shí)現(xiàn)更多功能時(shí),代碼會(huì)相應(yīng)變得更加復(fù)雜,與ERC20標(biāo)準(zhǔn)代碼的差異也越來越大,因而潛在的漏洞面貌更加多樣。為了保證智能合約的安全,除遵循安全開發(fā)原則、按照“Check Lists”進(jìn)行基線檢查外,還需要實(shí)施更深入細(xì)致的審計(jì)。

SafeMath 合約 代碼 溢出 使用
分享到:

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


主站蜘蛛池模板: 干妞网免费视频 | 五月婷婷丁香在线视频 | 国产大秀视频一区二区三区 | 亚州中文字幕 | 范冰冰a级一级特级毛片 | 国产精品国产色综合色 | 我的青梅竹马是消防员2季未增删免费 | 蜜桃免费| 9久re热视频这里只有精品 | 久久免费看少妇级毛片蜜臀 | 国产精品露脸国语对白河北 | 四虎永久视频 | 日韩综合一区 | 69re在线观看| 精品视频一区在线观看 | 手机看片黄色 | 韩国三级hd中文字幕李采潭 | 四虎精品永久免费 | 亚洲成人一区二区 | 全弄乱纶小说 | 欧美成人免费观看bbb | 美女尿口照片 | 故意短裙公车被强好爽在线播放 | 毛片在线免费视频 | www.一区| 毛片免费在线视频 | 亚洲日本在线观看网址 | 亚洲成综合 | 玩50岁四川熟女大白屁股直播 | 欧美va免费精品高清在线 | 国产片自拍 | 高清一区高清二区视频 | 日韩精品亚洲一级在线观看 | 亚洲视频在线一区二区 | zoz.zzz色| 国产色司机在线视频免费观看 | gogort人体的最新网站 | 国产成人影院 | 欧美国产日韩1区俺去了 | 四虎影院2022 | 动漫a级片 |