加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

深入理解「拒絕服務」漏洞_ENT:區塊鏈運用的技術不包括

Author:

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

1.前言

拒絕服務(DoS):DoS是DenialofService的簡稱,即拒絕服務,任何對服務的干涉,使得其可用性降低或者失去可用性均稱為拒絕服務。簡單的理解就是,用戶所需要的正常服務請求無法被系統處理。例如一個計算機系統崩潰或其帶寬耗盡或其硬盤被填滿,導致其不能提供正常的服務,就構成拒絕服務。拒絕服務攻擊:造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計算機或網絡無法提供正常的服務。在互聯網中,拒絕服務攻擊大致可以分為三類:利用軟件實現上的缺陷;利用協議上的漏洞;利用資源壓制。而在區塊鏈中,拒絕服務攻擊擾亂、中止、凍結正常合約的執行,甚至合約本身的邏輯無法正常運行。2.漏洞概述

在Solidity里,拒絕服務漏洞可以簡單的理解為「不可恢復的惡意操作或者可控制的無限資源消耗」,也就是對以太坊合約進行DoS攻擊,這就可能導致Ether和Gas的大量消耗,更嚴重的是讓原本的合約代碼邏輯無法正常運行。舉個例子,超市有三個收銀點,正常來說人們排隊在收銀點進行掃碼支付,但是有一天網絡出現了問題,所有收銀點的顧客掃碼支付都失敗了,而后面的人也不能進行支付買單,就導致了收銀點的堵塞,超市不能正常運營。又或者,在支付時有顧客故意鬧事,使得后面的顧客也不能去支付,這同樣也會導致超市不能運營。我們可以看到有來自內部的,還有來自外部的,都是可能會造成拒絕服務攻擊。在智能合約中也是一樣的,攻擊者通過消耗合約的資源,讓用戶短暫地退出不可以操作的合約,嚴重時甚至能永久地退出,從而把以太幣鎖在被攻擊的合約中。3.漏洞分析

江蘇銀行年報:將對區塊鏈等技術持續深入研究:4月20日消息,日前,江蘇銀行年報指出,江蘇銀行將不斷優化IT治理體系,加快重大創新項目建設,對5G、區塊鏈、人工智能等技術持續深入研究,在互聯網貸款、智能投顧、線上票據貼現、線上動產質押、跨境業務等領域落地的產品擴面成勢。(經濟參考網)[2020/4/20]

智能合約中的拒絕服務攻擊一般有三種:在外部操縱映射或數組循環。所有者操作。基于外部調用的進展狀態。3

}在上面的代碼片段中我們可以看到,distribute()函數中會去遍歷投資者數組,但是合約的循環遍歷數組是可以被外部的人進行人為擴充,如果有攻擊者要攻擊這個合約,那么他可以創建多個賬戶加入投資者的數組,讓investors的數據變得很大,大到讓循環遍歷數組所需的gas數量超過區塊gas數量的上限,此時distribute()函數將無法正常操作,這樣就會造成該合約的拒絕服務攻擊。針對以上情況,合約不應該對可以被外部用戶人為操縱的映射或循環數組進行批量操作,這里更建議使用取回模式而不是發送模式,即每個投資者可以通過使用withdrawFunds()取回自己應得的代幣。如果合約必須需要通過遍歷一個變長數組來進行轉賬,那么最好是估計完成它們大概需要多少個區塊以及多少筆交易,從而限制數組長度,此外還必須能夠追蹤得到當前進行到哪以便當操作失敗時從那里開始進行恢復。如下面的代碼所示,必須確保在下一次執行payOut()之前另一些正在執行的交易不會發生任何錯誤。structPayee{addressaddr;uint256value;}Payeepayees;uint256nextPayeeIndex;functionpayOut(){uint256i=nextPayeeIndex;while(i<payees

動態 | ZB 創新智庫深入歐洲愛沙尼亞進行調研訪問:ZB 創新智庫正在持續深入歐洲各國進行區塊鏈調研,本周到訪愛沙尼亞的首都蒂蘭,深入了解行業最新發展動態。北歐小國愛沙尼亞在區塊鏈開發方面引領歐洲大陸。愛沙尼亞是歐洲第一個對數字經濟發展采取激進政策的國家,憑借其現已知名的電子居留計劃,該國為數字經濟和區塊鏈公司頒發了最多的許可證。 據 Bitcoin.com 網站報道,截至 2018 年 11 月,愛沙尼亞發放的許可證已經超過 900 張。

據 ZB 創新智庫當地調研顯示,近期這個數字現在已翻了一番。目前在愛沙尼亞獲得數字資產許可證已變得較為困難,2019 年 5 月 3 日愛沙尼亞政府財政部對數字資產許可程序進行修改,增加了一系列正式義務,將處理時間從 30 天延長至 90 天,并確定了在愛沙尼亞注冊成立公司或分支機構的要求。[2019/12/12]

nextPayeeIndex=i;}3

//...額外的一些ICO功能//重寫transfer函數,先檢查isFinalizedfunctiontransfer(address_to,uint_value)returns(bool){require(isFinalized);super

contractPOC{addressowner;AuctionauInstance;constructor()public{owner=msg

聲音 | 物美集團創始人張文中:區塊鏈僅靠熱度不能解決問題 須針對場景做深入開發:物美集團創始人張文中近日在接受采訪時表示,新技術對現有技術企業都會有比較大的影響。比如,最近大家談論比較多的區塊鏈對企業影響是必然的。但我們也應該清醒認識到,區塊鏈僅靠熱度不能解決問題,它必須針對所面對的場景做深入開發和挖掘,比如在食品追溯方面,如果能夠追溯源頭,這也能助力實體企業轉型。(聯商網)[2019/11/6]

modifieronlyOwner(){require(owner==msg

functionsetInstance(addressaddr)publiconlyOwner{//指向原合約地址auInstance=Auction(addr);}functionattack()publiconlyOwner{auInstance

function()externalpayable{revert();}}攻擊者先通過攻擊合約調用bid()函數向競拍合約轉賬成為新的競拍者currentLeader,然后新的bid()函數被執行進行競標的時候,當執行到require(currentLeader

function()payable{//回退函數,使用revert報錯revert();}}在Remix中進行調試查看結果,首先使用賬戶(0x5B38Da6a701c568545dCfcB03FcB875f56beddC4)設置初始競爭價格并部署漏洞合約代碼PresidentOfCountry.sol。部署好后合約的地址為0xd9145CCE52D386f254917e481eB44e9943F39138,后面在部署攻擊合約時需要用到。

聲音 | 律師劉曄:法院可以更一步深入了解并思考比特幣SV的屬性:上海市海上律師事務所合伙人劉曄在微博表示:當法院進一步思考時,當知道,比特幣并非虛擬財產而是真實財產。當更一步深入了解并思考時,當知道,比特幣SV乃遵循比特幣白皮書的原始理念,乃真正比特幣,其不僅僅是真實財產,且以提供真實賬本空間服務的形式在實現真實商品屬性的同時(當下法律),也逐漸走向成為全球貨幣之路(未來法律)。據媒體報道,今日,首例比特幣財產侵權糾紛案在杭州互聯網法院開庭宣判。本次庭審法院確認了比特幣“虛擬財產”屬性。[2019/7/18]

點擊president可以查看當前競爭者的地址。

使用賬戶(0x5B38Da6a701c568545dCfcB03FcB875f56beddC4)調用becomePresident并攜帶1eth,執行成功后再點擊president查看,發現新的總統地址已經變成了0X5B的賬戶。

工信部于佳寧:深入理解區塊鏈,要從兩個層次來看:近日,工業和信息化部信息中心工業經濟研究所所長,中國計算機學會區塊鏈專委會委員于佳寧在接受《人民創投·區塊鏈》采訪時表示,區塊鏈有兩個層次的含義:第一個層次強調技術層面創新,是一種分布式、不可篡改的數據庫技術。這項新技術有力擴展了數據庫技術的使用場景和應用范圍,使得數據庫技術在“弱信任”的環境中也可以應用。第二個層次強調模式層面的創新,實際上是一種新型獨立數字資產載體,可以助力實現資產的數字化。[2018/5/23]

此時有一個攻擊者(0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2)編寫了一個攻擊者合約Attack.sol,攜帶2eth并設置_target為PresidentOfCountry合約地址(0xd9145CCE52D386f254917e481eB44e9943F39138)進行部署。

部署好后的攻擊合約地址為0xa131AD247055FD2e2aA8b156A11bdEc81b9eAD95,此時再點擊president進行查看新總統的地址,發現已經是攻擊合約的地址了。

之后如果還有其他用戶想來競爭總統位置,就需要大于2eth的價格去調用becomePresident函數,這里有個用戶(0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c)想去競爭總統,攜帶3eth去調用becomePresident,結果發現報錯并回退,點擊president發現總統地址還是攻擊合約沒,此時不管是誰使用多少的以太幣去調用becomePresident,結果都是失敗,該合約已經不能進行正常的操作,這就說明合約受到了拒絕服務攻擊。

4.2真實案例

下列代碼是實際合約中存在拒絕服務攻擊的案例,只寫了關鍵的代碼并做了相關的改動。可以看到合約的關鍵代碼是用作提款操作,但是在提款中有一個判斷要提款的金額和用戶在該合約中存款的數量是否相等,而并不是大于等于,那么就有可能發生當用戶要提出amount數量的代幣時,由于各種原因導致balances變動,甚至是用戶不想全部提款,從而使得判斷條件require(balances==amount);不成立,這時就會造成短暫的拒絕服務攻擊。...functionwithdraw(uint256amount)public{//提款amount數量require(balances==amount);//檢查要提款的金額是否等于該用戶在合約中的存款balances-=amount;//修改合約中存款的狀態變量msg.sender.transfer(amount);//轉賬到用戶賬戶}而修改的辦法就是將判斷條件require(balances==amount);修改為require(balances>=amount);就可以了。4.3歷史案例

在歷史上,2016年2月6日至8日,在游戲KotET(KingogtheEtherThrone)的「TurbulentAge」期間,就遭受到了拒絕服務攻擊,導致部分角色的補償和未接收款項無法退回玩家的錢包中。同年6月,GovernMental合約也遭受到了拒絕服務攻擊,當時1100個以太幣通過使用250萬個gas交易而獲得,這筆交易超出了合約能負荷的gas上限,從而導致交易暫停。相關的還有Fomo3D等的拒絕服務攻擊。5.解決辦法

通過上面的講解,我們可以發現拒絕服務攻擊在智能合約中的影響也是非常嚴重的,所以針對拒絕服務攻擊,合約開發者應該針對上面漏洞分析時講到的三種情況進行相應的代碼修改。比如對于外部操作的映射或者數組循環,需要對長度進行限制等;而對于所有者操作需要考慮合約的非唯一性,不要使得合約因為某個權限賬戶而導致整個業務癱瘓;基于外部調用的進展狀態需要對函數的調用進行異常處理,一般來說內部函數的調用不會造成危害。如果調用失敗也只是會進行回退,而外部調用具有不確定性,我們不知道外部調用者想干什么,如果被攻擊者攻擊,就可能會造成嚴重的后果,具體表現為惡意返回執行錯誤,造成正常代碼無法執行,從而造成拒絕服務攻擊,那么針對這種開發者就應該加入函數執行異常的處理機制。總的來說,合約開發者需要考慮合約代碼的代碼邏輯全面性和縝密性等,這樣才能更好的杜絕拒絕服務攻擊。6.參考文獻

拒絕服務攻擊_百度百科(baidu.com)以太坊智能合約安全入門了解一下(rickgray.me)《智能合約安全分析和審計指南》

Tags:ENTRES區塊鏈UNTSPENTsorceressprotocol區塊鏈運用的技術不包括SUNT

酷幣交易所
NFT爆火背后:炫富、韭菜和元宇宙_NFT:元宇宙

一幅電子圖片,最多能賣多少錢?答案是6930萬美金。數字藝術家Beeple不久前就在佳士得上拍賣出了這樣的一張圖片:這幅名為《每一天:最初的5000天》的圖片,由Beeple在過去十三年里每天的.

1900/1/1 0:00:00
解析Uniswap V3如何更好地提高資金利用率_UNI:USD

導語 本文為QuarkChain創始人兼CEO周期博士為其擔任顧問的項目提供的一套提高資金率的原理設計.

1900/1/1 0:00:00
星際巡航 | 支持Altair平行鏈競拍,收益究竟如何?_AIR:ALT

9月10日,Centrifuge聯合Odaily星球日報和PolkaWorld舉辦「星際巡航——與Centrifuge一起探索波卡DeFi新范式,暨Altair平行鏈競拍發布會」.

1900/1/1 0:00:00
【Deribit期權市場播報】0914——Fake News_APE:The Plant Dao

播報數據由Greeks.liveDataLab格致數據實驗室和Deribit官網提供。昨日晚間沃爾瑪和LTC合作的假消息帶動主流幣上漲,被證實為假消息后跌去全部跌幅.

1900/1/1 0:00:00
星球日報 | Bitfinex巨額轉賬手續費系DeversiFi故障;星火礦池宣布將于9月30日停止運營(9月28日)_區塊鏈:NFT

頭條 星火礦池宣布將于9月30日停止運營據官方公告,星火礦池宣布將于9月30日停止運營。其公告表示,為響應監管政策要求,星火礦池已于2021年9月24日停止了中國大陸地區新用戶的接入.

1900/1/1 0:00:00
迎接第四次工業革命,詳解數據和API如何改變未來經濟格局_API:比特幣價格實時行情分析師

區塊鏈上的智能合約就像未連接互聯網的計算機一樣,本身就具有其內在價值,智能合約的內在價值就是創建和交易通證.

1900/1/1 0:00:00
ads