By:小白@慢霧安全團隊
背景概述
看了一個關于學習solidity的站,里面講了關于solidity智能合約的很多漏洞,考慮到現在針對智能合約的攻擊事件頻頻發生,不法分子盜取的加密資產越來越多,我就想寫一些與智能合約安全審計相關的文章給想了解智能合約安全審計的入門者閱讀,讓一些對智能合約安全審計感興趣的初學者可以學到如何識別一些常見的漏洞和如何利用這些漏洞去做什么事情。這次我們就一起先看一個很經典的漏洞——?重入漏洞。
前置知識
重入漏洞相信大家都有所耳聞了,那么什么是重入漏洞呢?
以太坊智能合約的特點之一是合約之間可以進行相互間的外部調用。同時,以太坊的轉賬不僅僅局限于外部賬戶,合約賬戶同樣可以擁有以太并進行轉賬等操作,且合約在接收以太的時候會觸發fallback函數執行相應的邏輯,這是一種隱藏的外部調用。
徐明星新書《趣說金融史》正式發布 科普金融發展之道:金色財經現場報道,9月23日,歐科云鏈創始人徐明星攜手著名財經作家李霽月、行業觀察者顧澤輝力作《趣說金融史》一書,跨越5000年金融歷史,重讀金錢故事,并預測新的金融時代。該書由中信出版社出版,將于近期正式發售。據了解,本書可以更好地呈現金融的起源與發展,幫助人們理解貨幣、金融與未來經濟。作為區塊鏈行業領軍企業——歐科云鏈的創始人,徐明星深知技術探索對經濟社會的重要推動作用,他曾先后出版過《圖說區塊鏈》、《區塊鏈:重塑經濟與世界》、《通證經濟》、《鏈與未來》等行業權威著作,解讀區塊鏈等新型技術的推動下,金融與社會的升級之道,對經濟社會發展做出了重大貢獻。其中,《區塊鏈:重塑經濟與世界》曾作為新中國70周年重點推薦圖書之一被相關書店推薦。[2021/9/23 17:00:57]
我們先給重入漏洞下個定義:可以認為合約中所有的外部調用都是不安全的,都有可能存在重入漏洞。例如:如果外部調用的目標是一個攻擊者可以控制的惡意的合約,那么當被攻擊的合約在調用惡意合約的時候攻擊者可以執行惡意的邏輯然后再重新進入到被攻擊合約的內部,通過這樣的方式來發起一筆非預期的外部調用,從而影響被攻擊合約正常的執行邏輯。
TRON數字錢包科普資料《波場錢包的現在過去與未來》已上線:據最新消息顯示,由TokenPocket聯合波場TRON官方,以及 TokenPocket 社區志愿者共同撰寫的《波場錢包的現在過去與未來》已正式上線。《波場錢包的現在過去與未來》又稱為波場錢包小白書,詳細介紹了當前TRON錢包與TRON生態密切結合的實例,是目前市面上最為詳細的TRON數字錢包科普資料。波場錢包作為波場公鏈生態中極為重要的入口,是波場生態的重要構成要素。波場錢包從一開始只提供權限管理、轉賬收款、節點投票等基礎功能,到如今不僅可以為用戶提供法幣交易、閃兌和去中心化交易所等方便快捷的交易服務,還能讓用戶直接在錢包上體驗波場上DApp,挖礦、DeFi、Staking等資產增值服務。詳情見原文鏈接。[2020/8/20]
漏洞示例
動態 | 鏈客社區聯合北京交通廣播推出區塊鏈技術科普節目:12月11日15:15—16:00,區塊鏈技術社區——鏈客區塊鏈技術社區將聯合北京交通廣播FM103.9從零開始為大眾科普解碼區塊鏈技術,蜻蜓FM及北京廣播網同期進行全球直播。首期做客嘉賓為鏈客區塊鏈技術社區創始人郄建軍和百度區塊鏈產品負責人于雅楠。[2019/12/11]
好了,看完上面的前置知識我相信大家對重入漏洞都有了一個大致的了解,那么在真實的環境中開發者寫出什么樣的代碼會出現重入漏洞呢,下面我們來看一個比較典型的有重入漏洞的代碼:
//SPDX-License-Identifier:MITpragmasolidity^0
動態 | 央行官微舊文重發“再科普”:范一飛詳解數字貨幣:據中國經濟網消息,今日,央行官微公眾號頭條重新發布央行副行長范一飛在2018年1月25日題為《關于央行數字貨幣的幾點考慮》的文章,對央行數字貨幣再次進行科普。同時,微信公眾號第二條發布支付司副司長穆長春8月10日在第三屆中國金融四十人伊春論壇上的演講。近年來,各主要國家和地區央行及貨幣當局均在對發行央行數字貨幣開展研究,新加坡央行和瑞典央行等已經開始進行相關試驗,人民銀行也在組織進行積極探索和研究。[2019/8/21]
functionwithdraw()public{uintbal=balances;require(bal>0);(boolsent,)=msg
//HelperfunctiontocheckthebalanceofthiscontractfunctiongetBalance()publicviewreturns(uint){returnaddress(this)
}
漏洞分析
看到這里大家可能會有疑惑了,上面的代碼就是個普通的充提幣的合約,憑什么說他有重入攻擊呢?我們來看這個合約的withdraw函數,這個函數中的轉賬操作有一個外部調用,所以我們就可以認為這個合約是可能有重入漏洞的,但是具體能否產生危害還需要更深入的分析:
1.所有的外部調用都是不安全的且合約在接收以太的時候會觸發fallback函數執行相應的邏輯,這是一種隱藏的外部調用,這種隱藏的外部調用是否會造成危害呢?
2.我們可以看到在withdraw函數中是先執行外部調用進行轉賬后才將賬戶余額清零的,那我們可不可以在轉賬外部調用的時候構造一個惡意的邏輯合約在合約執行balance=0之前一直循環調用withdraw函數一直提幣從而將合約賬戶清空呢?
下面我們看看攻擊者編寫的攻擊合約中的攻擊手法是否與我們的漏洞分析相同:
攻擊合約
contractAttack{EtherStorepublicetherStore;constructor(address_etherStoreAddress){etherStore=EtherStore(_etherStoreAddress);}//FallbackiscalledwhenEtherStoresendsEthertothiscontract
}functionattack()externalpayable{require(msg
//HelperfunctiontocheckthebalanceofthiscontractfunctiongetBalance()publicviewreturns(uint){returnaddress(this)
}我們看到EtherStore合約是一個充提合約,我們可以在其中充提以太。下面我們將利用攻擊合約將EtherStore合約中用戶的余額清零的:
這里我們將引用三個角色,分別為:
用戶:Alice,Bob
攻擊者:Eve
1.部署EtherStore合約;
2.用戶1和用戶2都分別將1個以太幣充值到EtherStore合約中;
3.攻擊者Eve部署Attack合約時傳入EtherStore合約的地址;
4.攻擊者Eve調用Attack
}作為審計人員
作為審計人員我們需要關注的是重入漏洞的特征:所有涉及到外部合約調用的代碼位置都是不安全的。這樣在審計過程中需要重點關注外部調用,然后推演外部調用可能產生的危害,這樣就能判斷這個地方是否會因為重入點而產生危害。
Tags:THEHERETHERETHEThe Commissiontether幣價格EtherPartyethyleneglycoldibutylether
? 本期摘要 政策要聞: 2.1工信部:到2025年區塊鏈等設施服務能力顯著增強2.2農業部:利用區塊鏈等技術加快網絡體系、前端倉庫和物流設施建設2.
1900/1/1 0:00:00過去半個世紀,斯坦福教給學生的技術,促成了硅谷的誕生;而為了將來的Web3時代,斯坦福也已經做好了準備.
1900/1/1 0:00:00出品|白澤研究院 如果說加密資產是引擎的話,那么穩定幣就像它的活塞。在過去的七年里,穩定幣已經發展成為整個加密生態系統的主要支柱.
1900/1/1 0:00:00美國主要投資銀行摩根士丹利的投資基金通過購買灰度比特幣信托基金份額,增加了對比特幣的投資。根據周二提交給美國證券交易委員會(SEC)文件,摩根士丹利InsightFund增持了超過63%的GBT.
1900/1/1 0:00:00據CryptoPotato12月13日消息,國際貨幣基金組織最近發布了一些關于如何有效監管全球加密貨幣領域的建議.
1900/1/1 0:00:00原標題:《字節跳動的元宇宙布局》2021年可說是元宇宙元年。元宇宙概念股Roblox于2021年3月10日在美國上市,元宇宙開始加速進入人們的視野。有人非常看好元宇宙,將它稱為“下一代互聯網”.
1900/1/1 0:00:00