WF曲速未來:智能合約攻擊分析之龐氏代幣合約漏洞區(qū)塊鏈
WF曲速未來表示:以太坊智能合約中混雜進(jìn)了不少龐氏騙局合約,他們向投資者承諾,如果你向某合約投資一筆以太坊,它就會(huì)以一個(gè)高回報(bào)率回贈(zèng)你更多的以太幣,然而高回報(bào)只能從后續(xù)的投資者那里源源不斷地吸取資金以反饋給前面的投資者。
以太坊智能合約中混雜進(jìn)了不少龐氏騙局合約,他們向投資者承諾,如果你向某合約投資一筆以太坊,它就會(huì)以一個(gè)高回報(bào)率回贈(zèng)你更多的以太幣,然而高回報(bào)只能從后續(xù)的投資者那里源源不斷地吸取資金以反饋給前面的投資者。
WF曲速未來表示:根據(jù)區(qū)塊鏈大數(shù)據(jù)評(píng)級(jí)機(jī)構(gòu)RatingToken最新數(shù)據(jù)顯示,2018年7月20日全球共新增9552個(gè)合約地址,其中317個(gè)為代幣型智能合約,另外值得關(guān)注的是同一個(gè)賬戶創(chuàng)建了7900個(gè)完全相同的智能合約,共消耗Gas費(fèi)22 ETH,疑似代投機(jī)構(gòu)批量創(chuàng)建。
ETH是一個(gè)典型的龐氏代幣合約。該合約可以看成虛擬幣交易所,但只有ETH和ETHX (ERC20 token)交易對(duì),每次交易,都有5%的token分配給整個(gè)平臺(tái)的已有的token持有者,因此token持有者在持幣期間,將會(huì)直接賺取新購(gòu)買者和舊拋售者的手續(xù)費(fèi)。從ETHX合約代碼可以看出,該合約對(duì)transferFrom函數(shù)進(jìn)行了擴(kuò)展,transferFrom函數(shù)首先進(jìn)行allowance限額判定,然后調(diào)用了自定義的transferTokens函數(shù)來完成轉(zhuǎn)賬。
在transferTokens函數(shù)中,當(dāng)to賬戶地址不等于合約地址,由于事先對(duì)from賬戶額度進(jìn)行了安全檢查,因此后面對(duì)from賬戶的balance運(yùn)算不會(huì)產(chǎn)生溢出。
當(dāng)to賬戶地址等于合約地址時(shí),則調(diào)用sell函數(shù),sell函數(shù)中由于代碼編寫失誤,錯(cuò)誤的將from寫成msg.sender,對(duì)msg.sender的額度進(jìn)行了減法操作,而在減法操作前沒有進(jìn)行安全檢查,因此存在溢出漏洞。
為了完成對(duì)這個(gè)溢出漏洞的攻擊,攻擊者需要2個(gè)賬戶A、B,其中A賬戶代幣余額不為0,B賬戶代幣為0。
1)A賬戶調(diào)用approve給B授權(quán)一部分轉(zhuǎn)賬額度,假設(shè)授權(quán)額度為1;
2)B賬戶調(diào)用transferFrom,從A賬戶轉(zhuǎn)1單位代幣到智能合約;transferFrom調(diào)用sell函數(shù)時(shí)觸發(fā)整數(shù)溢出,即0-1=2^255。B賬戶在余額為0的情況下獲得了最大額度的token。
在ETHX合約攻擊鏈中,攻擊者使用了兩個(gè)賬戶地址,分別為:
0x423b1404f51a2cdae57e597181da0a4ca4492f30
0x17a6e289e16b788505903cc7cf966f5e33dd1b94
首先,0x17a6e289e16b788505903cc7cf966f5e33dd1b94調(diào)用approve給0x423b1404f51a2cdae57e597181da0a4ca4492f30授權(quán)轉(zhuǎn)賬額度,參數(shù)value=1。
然后,0x423b1404f51a2cdae57e597181da0a4ca4492f30調(diào)用transferFrom方法,從賬戶0x17a6e289e16b788505903cc7cf966f5e33dd1b94向ETHX合約地址0x1c98eea5fe5e15d77feeabc0dfcfad32314fd481 轉(zhuǎn)移1個(gè)Token。
調(diào)用前,balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=0。調(diào)用后,溢出后balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=2^255。
監(jiān)控平臺(tái)顯示已經(jīng)被攻擊的同類代幣合約如下表:
總結(jié):
但其實(shí)究其根本,之所以如此多的智能合約出現(xiàn)同類漏洞,其背后是混亂的數(shù)字代幣發(fā)行現(xiàn)狀。區(qū)塊鏈安全公司W(wǎng)F曲速未來還要提醒的是,在數(shù)字貨幣的世界里,各種漏洞都潛伏其中,投資者需要做好漏洞隨時(shí)暴露的心理準(zhǔn)備,同時(shí),平臺(tái)自身的資質(zhì),也是投資者需要仔細(xì)考慮的重要因素。
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ǔ)充。