以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads

SMT/BEC 合約整數溢出解析——Solidity 合約中的整數安全問題_SMT:INT

Author:

Time:1900/1/1 0:00:00

鏈聞ChainNews:

在傳統的桌面windows攻防對抗領域,伴隨著微軟和合作伙伴對軟件開發流程推行SDL規范,同時對安全投入的逐步加大,單一的封包超長和文件特定字段內容超長導致的溢出漏洞在一些大型軟件里幾乎絕跡。目前,零星剩下了一些整數類的漏洞。如去年的nginxcve-2017-7529。而區塊鏈方向,比較早的整數溢出類漏洞可追溯到2010年的比特幣大整數溢出,CVE-2010-5139,黑客通過整數溢出構造了大概92233720368

?//0-1=2**256-1functionunderflow()returns(uint256_underflow){uint256min=0;returnmin-1;}}

在線測試工具中編譯運行結果如下。

可以看到uint256當取最大整數值,上溢之后直接回繞返回值為0,uint256當取0下溢之后直接回繞,返回值為2^256-1。這是solidity中整數溢出場景的常規情況。

Gate.io Startup 首發項目SMTY最高漲幅達2021.2%:據Gate.io芝麻開門行情顯示,截至今日14:10,Gate.io Startup 首發項目SMTY24H最高漲幅2021.2%,最高價格10.606美元,為首發認購價格2美元的5倍,當前價格為1.967美元,24H現貨交易量達467.25萬美元。近期行情波動較大,請注意控制風險。[2021/4/28 21:07:00]

1

functiondiv(uint256a,uint256b)internalconstantreturns(uint256){//assert(b>0);//Solidityautomaticallythrowswhendividingby0uint256c=a/b;//assert(a==b*ca%b);//Thereisnocaseinwhichthisdoesn'tholdreturnc;}

functionsub(uint256a,uint256b)internalconstantreturns(uint256){assert(b<=a);returna-b;}

公告 | 火幣全球站已暫停CMT/RBTC/SMT充提幣業務:火幣全球站宣布由于錢包升級,火幣全球站現已暫停CMT/RBTC/SMT的充幣和提幣業務,具體恢復時間將以公告形式另行通知。[2018/12/17]

functionadd(uint256a,uint256b)internalconstantreturns(uint256){uint256c=ab;assert(c>=a);returnc;}}

可以看到相關的可能產生溢出的操作都單獨封裝成函數,加入assert斷言做判斷避免溢出。調用SafeMath庫的方法如下。

2.SMT合約中的整數安全問題簡析

與大型軟件或者操作系統動輒十萬行甚至千萬行代碼不同,智能合約的代碼行數通常不多,功能也不是很復雜。一起來看下SMT合約的相關代碼。

SMT的合約地址是https://etherscan.io/address/0x55f93985431fc9304077687a35a1ba103dc1e081#code問題存在于transferProxy()函數代碼如下

公告 | 火幣支持SMT主網切換:火幣剛剛發布公告稱,火幣全球站支持SMT的主網切換,并建議用戶提前將SMT充值到火幣。[2018/9/29]

在進行加法操作的時候沒有采用Safemath庫進行約束。_feeSmt參數和_value參數均可以被外界進行控制,_feeSmt和value均是uint256無符號整數,相加后最高位舍掉,結果為0。

直接溢出繞過代碼檢查導致可以構造巨大數量的smt代幣并進行轉賬。

攻擊者的惡意轉賬記錄可以從如下鏈接進行看到。https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f

3.BEC合約中的整數安全問題簡析

BEC的合約地址是0xC5d105E63711398aF9bbff092d4B6769C82F793D,合約代碼可以訪問etherscan的如下網址進行查看https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code。代碼一共是299行。

專家:SMT和BEC所犯錯誤很低級,影響有限:YEE創始人、前百度移動安全總經理張磊及其團隊認為,此次SMT發生的安全問題,和此前BEC發生的安全問題系出同源。張磊還表示,該問題雖影響巨大,但解決起來很簡單,不會對行業造成太大影響。騰訊區塊鏈技術專家屠海濤認為,這類安全問題只要交易所及時停止充提,影響就很小,只是個別幣種受影響。[2018/4/25]

問題函數如下圖。

可以看到batchTransfer函數中,語句balances=balances.sub(amount)和balances]=balances].add(_value)中,調用Safemath庫中的安全函數來完成加減操作,但是在第三行代碼,uint256amount=uint256(cnt)*_value卻直接使用乘法運算符。

其中變量cnt為轉賬的地址數量,可以通過外界的用戶輸入_receivers進行控制,_value為單地址轉賬數額,也可以直接進行控制。乘法運算溢出,產生了非預期amount數值,并且外界可以通過調整_receivers和_value的數值進行操控。緊接著下面有一句對amount進行條件檢查的代碼require(_value>0&&balances>=amount);其中balances代表當前用戶的余額。amount代表要轉的總幣數。代碼意思為確保當前用戶擁有的代幣余額大于等于轉賬的總幣數才進行后續轉賬操作。因為通過調大單地址轉賬數額_value的數值,amount溢出后可以為一個很小的數字或者0,很容易繞過balances>=amount的檢查代碼。從而產生巨大_value數額的惡意轉賬。

SMT與RDN合作推出SmartRaiden:今日SmartMesh官方推特發布,SmartMesh (SMT)和Raiden Network Token (RDN)合作推出了SmartRaiden開源技術,SmartRaiden 是移動版雷電網絡,有助于提高SmartMesh 系統的功能和可擴展性。[2018/4/17]

攻擊者的惡意轉賬記錄,可以從如下鏈接看到https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f。

可以從代碼totalSupply進行看到,bec代幣總量共計才7000000000枚。

但是攻擊者通過溢出amount繞過后續require中的判定條件分別向兩個地址惡意轉賬了57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968枚bec代幣。

4.合約整數漏洞事件總結

單純從技術上來說,smt和bec的本次合約的漏洞成因和利用都不復雜,均是通過構造惡意的整數溢出繞過條件檢查。相信以太坊生態下的其他數千種代幣的合約也不同程度的存在類似的整數漏洞安全隱患,由于Solidity合約是直接跟錢打交道,合約的安全開發和審計值得ICO項目方和Solidity開發人員投入更多時間和精力,確保合約的安全性。

參考鏈接:https://ethereumdev.io/safemath-protect-overflows/https://zhuanlan.zhihu.com/p/35989258?utm_medium=social&utm_member=ZjZlYmQ1MGZkMjZjZmJkNTE4MGFmMmExZjA5NTM0NmE=&utm_source=wechat_session&wechatShare=1&from=timeline&isappinstalled=0

更多精彩內容,關注鏈聞ChainNews公眾號,或者來微博@鏈聞ChainNews與我們互動!轉載請注明版權和原文鏈接!

來源鏈接:www.8btc.com

本文來源于非小號媒體平臺:

鏈聞研究院

現已在非小號資訊平臺發布1篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/3626905.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

下一篇:

文摘|確保加密貨幣安全的十條戒律

Tags:INTSMTUINVALUEQUINTGSMT幣Platonic Quintessencevalue幣發行量

比特幣行情
以太坊智能合約漏洞頻出 基于 UTXO 的公鏈是否是更安全的區塊鏈平臺?_TOKE:比原鏈

昨日,EDU智能合約出現重大漏洞,任意賬戶中的EDUToken可被轉走,這些漏洞造成了來自項目方地址中的30億萬枚EDUToken被偷走,并被陸續轉手在火幣上進行拋售,引發市場進一步恐慌.

1900/1/1 0:00:00
監管利好!美國華盛頓州承認區塊鏈記錄具有法律效力和可執行性_INT:OIN

據Cointelegraph5月2日報道,美國華盛頓州剛剛通過了一項法案,該法案承認并保護與區塊鏈等分布式賬本相關的電子記錄的法律地位.

1900/1/1 0:00:00
上幣公告丨RPZ上線幣客BITKER交易所公告_GATE:GAT

RPZ上線幣客BITKER交易所公告尊敬的BITKER用戶:經RPZ運營團隊申請,BITKER審核通過,RPZ即將在10月上線幣客BTC,USDT交易區.

1900/1/1 0:00:00
FINRA 指控經紀人欺詐交易未注冊的加密貨幣_COIN:Bernard finance

據美國金融業監管局網站9月11日星期二發布的一份聲明稱,美國金融業監管局已向TimothyTiltonAyre提起訴訟,指控他進行證券欺詐和非法分發非注冊加密貨幣.

1900/1/1 0:00:00
Parity 提出新方案以解凍價值 2.64 億美元的以太坊_以太坊:以太坊最新價格行情平臺

“不算太糟。” 一個以太坊用戶這樣描述Parity公司最近為挽回損失所作出的努力,該公司曾因其推出的錢包代碼出現漏洞被黑而導致了價值2.64億美元的以太坊被凍結.

1900/1/1 0:00:00
周年慶幣幣交易手續費全免活動開啟_BIT:比特幣

尊敬的幣客用戶: 感謝各位長期以來對BITKER交易所的支持。BITKER周年慶典將于2019年5月16日盛大開啟,屆時BITKER將取消幣幣交易手續費.

1900/1/1 0:00:00
ads