By:小白@慢霧安全團隊
背景概述
看了一個關于學習solidity的站,里面講了關于solidity智能合約的很多漏洞,考慮到現在針對智能合約的攻擊事件頻頻發生,不法分子盜取的加密資產越來越多,我就想寫一些與智能合約安全審計相關的文章給想了解智能合約安全審計的入門者閱讀,讓一些對智能合約安全審計感興趣的初學者可以學到如何識別一些常見的漏洞和如何利用這些漏洞去做什么事情。這次我們就一起先看一個很經典的漏洞——?重入漏洞。
前置知識
重入漏洞相信大家都有所耳聞了,那么什么是重入漏洞呢?
以太坊智能合約的特點之一是合約之間可以進行相互間的外部調用。同時,以太坊的轉賬不僅僅局限于外部賬戶,合約賬戶同樣可以擁有以太并進行轉賬等操作,且合約在接收以太的時候會觸發fallback函數執行相應的邏輯,這是一種隱藏的外部調用。
穩定幣crvUSD科普創新清算機制LLAMMA,可在抵押品價格下跌時逐步替換為穩定幣:1月17日消息,Curve官方科普其穩定幣crvUSD創新的清算機制LLAMMA,解釋了LLAMMA通過AMM的特性進行針對債務人更友善的清算方式,讓抵押品在價格下跌時逐漸轉移成穩定幣,讓原本要清償的債務有一定程度的穩定幣可以償還,同時在價格回穩時再逐漸把穩定幣換回抵押品,而不是直接的觸發清算導致債務人的虧損。
此前報道,2022年11月23日,去中心化交易平臺CurveFinance開發者發布Curve即將推出的去中心化Stablecoin“crvUSD”的官方代碼和白皮書。[2023/1/17 11:17:13]
我們先給重入漏洞下個定義:可以認為合約中所有的外部調用都是不安全的,都有可能存在重入漏洞。例如:如果外部調用的目標是一個攻擊者可以控制的惡意的合約,那么當被攻擊的合約在調用惡意合約的時候攻擊者可以執行惡意的邏輯然后再重新進入到被攻擊合約的內部,通過這樣的方式來發起一筆非預期的外部調用,從而影響被攻擊合約正常的執行邏輯。
動態 | 人民日報官方微博科普區塊鏈 強調區塊鏈不等于比特幣:人民日報官方微博今早發表9圖科普區塊鏈。其中涉及區塊鏈的特點有:1、安全;2、不可篡改;3、可訪問;4、無第三方。區塊鏈對未來的影響:1、不需繁瑣個人證明;2、看病避免反復檢查;3、旅行消費更加便捷;4、交易無需第三方。同時強調,區塊鏈不等于比特幣。比特幣只是區塊鏈技術的一種應用,區塊鏈還有醫療衛生、食品安全、版權保護等諸多應用領域。[2019/10/28]
漏洞示例
好了,看完上面的前置知識我相信大家對重入漏洞都有了一個大致的了解,那么在真實的環境中開發者寫出什么樣的代碼會出現重入漏洞呢,下面我們來看一個比較典型的有重入漏洞的代碼:
動態 | 幣安科普MimbleWimble算法:幣安官方推特今日發布隱私算法Mimblewimble的科普貼,在下方留言區大量網友留言猜測是否是基于 Mimblewimble算法的隱私幣Grin或者Beam即將登陸幣安交易所,其中猜測Grin的呼聲更高。[2019/9/2]
//SPDX-License-Identifier:MITpragmasolidity^0
functionwithdraw()public{uintbal=balances;require(bal>0);(boolsent,)=msg
//HelperfunctiontocheckthebalanceofthiscontractfunctiongetBalance()publicviewreturns(uint){returnaddress(this)
科普時報:區塊鏈與云計算長期發展目標不謀而合:據《科普時報》今日報道,區塊鏈與云計算兩項技術的結合,從宏觀上來說,一方面,利用云計算已有的基礎服務設施或根據實際需求做相應改變,實現開發應用流程加速,滿足未來區塊鏈生態系統中初創企業、學術機構、開源機構、聯盟和金融等機構對區塊鏈應用的需求。另一方面,對于云計算來說,“可信、可靠、可控制”被認為是云計算發展必須要翻越的“三座山”,而區塊鏈技術以去中心化、匿名性,以及數據不可篡改為主要特征,與云計算長期發展目標不謀而合。[2018/5/4]
}
漏洞分析
看到這里大家可能會有疑惑了,上面的代碼就是個普通的充提幣的合約,憑什么說他有重入攻擊呢?我們來看這個合約的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:THETORHERETH男生用ethereal當網名什么寓意Bit StoreEthereum Supremetogetherbnb劇情到哪了
據金融界報道,12月9日,由中國移動通信聯合會及元宇宙產業委員會主辦的“元宇宙:靈境與科學藝術”紀念錢學森先生誕辰110周年暨2021元宇宙產業論壇在京舉行.
1900/1/1 0:00:00據《金融時報》近日消息,Tether創始人Jean-LouisvanderVelde創始人在創辦該公司以前,曾于2006年擔任總部位于深圳的華順電子董事長,生產出口電視接收器和放大器等產品.
1900/1/1 0:00:00由NFL、NFLPA與DapperLabs合作推出的NFL系列已經上線,球迷可通過官方網站加入waitlist,有機會收集到自己最喜愛的球星精彩瞬間.
1900/1/1 0:00:00隱私計算賽道作為當下的風口賽道,無數企業紛紛涌入,搶跑占道。作為一家專注于隱私計算科普入門的垂直媒體,同時也是針對隱私計算興趣者開放的低門檻入口,我們通過研讀大量行業報告,匯總并分類了隱私計算行.
1900/1/1 0:00:00據南方新聞網消息,11月25日,廣州市政務服務數據管理局正式對外發布“信任廣州”數字化平臺,并與首批10家境內外數字證書服務機構簽訂合作框架協議,初步構建起廣州區塊鏈可信聯盟鏈.
1900/1/1 0:00:00隨著NFT爆發,過去12個月將載入史冊。NFT自2014年以來一直存在,但它們的文化相關性在2021年得到鞏固,幾乎滲透到從藝術和音樂到慈善機構的每個行業,甚至出現在梅西百貨的感恩節游行中.
1900/1/1 0:00:00