鏈聞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中整數溢出場景的常規情況。
LBank藍貝殼于4月27日22:00上線SMTY,開放USDT交易:據官方公告,4月27日22:00,LBank藍貝殼上線SMTY(Smoothy Finance),開放USDT交易,4月27日21:00開放充值,4月29日18:00開放提現。
為慶祝SMTY上線,LBank藍貝殼將于4月27日21:00開啟 充值&交易SMTY瓜分10,000 USDT活動。用戶凈充值數量不少于10枚SMTY ,可按凈充值量獲得等值1%的SMTY的USDT空投獎勵,單個用戶最高獎勵200 USDT,本部分總獎池4,000 USDT;交易賽將根據用戶的SMTY交易量進行排名,前30名可按個人交易量占比瓜分 6,000 USDT。詳情請點擊官方公告。[2021/4/27 21:04:10]
1
functiondiv(uint256a,uint256b)internalconstantreturns(uint256){//assert(b>0);//Solidityautomaticallythrowswhendividingby0uint256c=a/b;//assert(a==b*ca%b);//Thereisnocaseinwhichthisdoesn'tholdreturnc;}
SMT將在5月22日遷移服務器:SMT官方發布消息,將于2018年5月22日從0:00到01:00遷移應用服務器。在遷移過程中,應用程序將暫停服務,直到遷移完成為止。SMT現全球均價0.068美元,跌幅0.52%。[2018/5/21]
functionsub(uint256a,uint256b)internalconstantreturns(uint256){assert(b<=a);returna-b;}
functionadd(uint256a,uint256b)internalconstantreturns(uint256){uint256c=ab;assert(c>=a);returnc;}}
可以看到相關的可能產生溢出的操作都單獨封裝成函數,加入assert斷言做判斷避免溢出。調用SafeMath庫的方法如下。
2.SMT合約中的整數安全問題簡析
與大型軟件或者操作系統動輒十萬行甚至千萬行代碼不同,智能合約的代碼行數通常不多,功能也不是很復雜。一起來看下SMT合約的相關代碼。
SMT最新公告:“以太坊智能合約溢出漏洞事件”已經得到全面控制:據SmartMesh(SMT)官方微博公告,此次“以太坊智能合約溢出漏洞事件”已經得到全面控制。對于此次溢出事件流出的“假幣”,SMT基金會承諾將從公開流通市場進行回購,并進行銷毀。[2018/4/27]
SMT的合約地址是https://etherscan.io/address/0x55f93985431fc9304077687a35a1ba103dc1e081#code問題存在于transferProxy()函數代碼如下
在進行加法操作的時候沒有采用Safemath庫進行約束。_feeSmt參數和_value參數均可以被外界進行控制,_feeSmt和value均是uint256無符號整數,相加后最高位舍掉,結果為0。
直接溢出繞過代碼檢查導致可以構造巨大數量的smt代幣并進行轉賬。
攻擊者的惡意轉賬記錄可以從如下鏈接進行看到。https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f
火幣Pro暫停SMT交易的公告:火幣Pro發布公告稱,應SmartMesh(SMT)項目方的要求,火幣Pro暫停SMT/USDT、SMT/BTC和SMT/ETH的交易,具體開放時間另行通知。[2018/4/25]
3.BEC合約中的整數安全問題簡析
BEC的合約地址是0xC5d105E63711398aF9bbff092d4B6769C82F793D,合約代碼可以訪問etherscan的如下網址進行查看https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code。代碼一共是299行。
問題函數如下圖。
可以看到batchTransfer函數中,語句balances=balances.sub(amount)和balances]=balances].add(_value)中,調用Safemath庫中的安全函數來完成加減操作,但是在第三行代碼,uint256amount=uint256(cnt)*_value卻直接使用乘法運算符。
SMT跌幅達13.16%:根據火幣交易平臺數據顯示,SMT最新成交價格為人民幣0.47元,24小時最高價達人民幣0.59元,最低價格為人民幣0.47元。24小時成交量35103455SMT,跌幅達13.16%。據悉,SmartMesh是一種用戶自主通信協議,通過該協議,智能手機用戶可以通過令牌來構建分散的網狀網絡。[2018/2/1]
其中變量cnt為轉賬的地址數量,可以通過外界的用戶輸入_receivers進行控制,_value為單地址轉賬數額,也可以直接進行控制。乘法運算溢出,產生了非預期amount數值,并且外界可以通過調整_receivers和_value的數值進行操控。緊接著下面有一句對amount進行條件檢查的代碼require(_value>0&&balances>=amount);其中balances代表當前用戶的余額。amount代表要轉的總幣數。代碼意思為確保當前用戶擁有的代幣余額大于等于轉賬的總幣數才進行后續轉賬操作。因為通過調大單地址轉賬數額_value的數值,amount溢出后可以為一個很小的數字或者0,很容易繞過balances>=amount的檢查代碼。從而產生巨大_value數額的惡意轉賬。
攻擊者的惡意轉賬記錄,可以從如下鏈接看到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.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
下一篇:
文摘|確保加密貨幣安全的十條戒律
尊敬的BITKER用戶:BITKER將于2019年4月10日18點正式開放OVC/USDT交易對。OVCODE是一個非常重要的,可信賴信息的地方.
1900/1/1 0:00:00據PRWeb消息,Avasant發布其旗艦報告“DigitalMastersRadarView?2019”,該報告認可了16家領先的服務提供商.
1900/1/1 0:00:00WICC上線幣客BITKER交易所公告敬愛的BITKER用戶:BITKER于2018/9/1412:00正式開啟WICC/USDT.
1900/1/1 0:00:00在過去幾周市值最高的加密貨幣比特幣上漲行情的帶動下,包括以太坊在內的其他加密貨幣也紛紛大幅上行.
1900/1/1 0:00:00今天早晨,幣圈傳出消息,稱幣安被黑客攻擊,上萬個比特幣被轉走。攻擊方式,據傳和3月7日幣安遭遇的黑客攻擊,如出一撤.
1900/1/1 0:00:00據cryptovest消息,韓國區塊鏈協會(KBA)本周三表示,已有12家韓國加密貨幣交易所通過了自我監管標準檢查,不過還有一些缺陷存在.
1900/1/1 0:00:00