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

科普 | 智能合約安全審計入門篇 —— 重入漏洞_TOR:ETHE

Author:

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

By:小白@慢霧安全團隊

背景概述

看了一個關于學習solidity的站,里面講了關于solidity智能合約的很多漏洞,考慮到現在針對智能合約的攻擊事件頻頻發生,不法分子盜取的加密資產越來越多,我就想寫一些與智能合約安全審計相關的文章給想了解智能合約安全審計的入門者閱讀,讓一些對智能合約安全審計感興趣的初學者可以學到如何識別一些常見的漏洞和如何利用這些漏洞去做什么事情。這次我們就一起先看一個很經典的漏洞——?重入漏洞。

前置知識

重入漏洞相信大家都有所耳聞了,那么什么是重入漏洞呢?

以太坊智能合約的特點之一是合約之間可以進行相互間的外部調用。同時,以太坊的轉賬不僅僅局限于外部賬戶,合約賬戶同樣可以擁有以太并進行轉賬等操作,且合約在接收以太的時候會觸發fallback函數執行相應的邏輯,這是一種隱藏的外部調用。

人大附中物理老師李永樂科普拜占庭將軍問題和區塊鏈:5月14日,人大附中物理老師、科普視頻網紅李永樂在其公眾號發布視頻《拜占庭將軍問題是什么?區塊鏈如何防范惡意節點?》。李永樂老師在視頻中對拜占庭將軍問題和區塊鏈進行了講解,他表示,拜占庭將軍問題本質上指的是,在分布式計算機網絡中,如果存在故障和惡意節點,是否能夠保持正常節點的網絡一致性問題。在近40年的時間里,人們提出了許多方案解決這一問題,稱為拜占庭容錯法。例如蘭波特自己提出了口頭協議、書面協議法,后來有人提出了實用拜占庭容錯PBFT算法,在2008年,中本聰發明比特幣后,人們又設想了通過區塊鏈的方法解決這一問題。區塊鏈通過算力證明來保持賬本的一致性,也就是必須計算數學題,才能得到記賬的權力,其他人對這個記賬結果進行驗證,如果是對的,就認可你的結果。與拜占庭問題比起來,就增加了叛徒的成本。[2020/5/14]

我們先給重入漏洞下個定義:可以認為合約中所有的外部調用都是不安全的,都有可能存在重入漏洞。例如:如果外部調用的目標是一個攻擊者可以控制的惡意的合約,那么當被攻擊的合約在調用惡意合約的時候攻擊者可以執行惡意的邏輯然后再重新進入到被攻擊合約的內部,通過這樣的方式來發起一筆非預期的外部調用,從而影響被攻擊合約正常的執行邏輯。

動態 | 報告:區塊鏈等熱點詞促使童書科普百科類成交額同比增速最高:近日,京東圖書與艾瑞咨詢聯合發布了《2019中國圖書市場報告》。報告指出,AI、5G、區塊鏈、機器人、VR、智能家居、AR這些熱點詞,不斷點燃科技熱潮,科技在改變大眾生活的同時,也吸引了越來越多家長的關注,從小培養孩子對科技的興趣和熱愛。因此童書中科普百科類成交額同比增速最高,占比將近40%。[2020/1/8]

漏洞示例

好了,看完上面的前置知識我相信大家對重入漏洞都有了一個大致的了解,那么在真實的環境中開發者寫出什么樣的代碼會出現重入漏洞呢,下面我們來看一個比較典型的有重入漏洞的代碼:

//SPDX-License-Identifier:MITpragmasolidity^0

聲音 | 上海股交所總經理:區塊鏈想要大規模發展要做好社會科普工作:金色財經報道,上海股交所總經理張云峰表示,區塊鏈當前還處于一個“概念”的階段,距離成熟應用,影響到百姓的日常生活還有很長的路要走。對于“區塊鏈”和其會帶來的社會和經濟效果,沈陽應當持審慎的態度。區塊鏈想要大規模發展,一方面要做好這項復雜技術的社會科普工作,加快社會大眾對區塊鏈的了解。另一方面,要充分發揮市場的作用,讓企業用實實在在的技術創新,賦能實體經濟的發展。[2019/11/17]

functionwithdraw()public{uintbal=balances;require(bal>0);(boolsent,)=msg

動態 | 區塊鏈技術入選科普雜志《科學美國人》2019十大突破性技術榜單:據新浪網今日新聞報道,美國科普雜志《科學美國人》公布 2019 十大突破性技術榜單。區塊鏈技術因在保障食品安全中的作用而上榜。 入選榜單具體原因:區塊鏈技術的發展應用將顯著改善食品污染源數據追蹤的困境。利用區塊鏈云端系統,食品制造商可以依次在計算機儲存各類過程的信息。[2019/9/29]

//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:區塊鏈THEETHETOR區塊鏈技術就業前景The Forms女生用ethereal當網名什么寓意Guvector

萊特幣價格
國建Nova:虛擬世界里建造浪漫建筑_加密貨幣:htb幣加密貨幣嗎

本文萬向區塊鏈蜂巢研習社第71期,國建團隊管理員會議主席NOVA的分享內容。NOVA在直播中分享了虛擬建筑作為新興概念未來的發展方向,此刻是怎樣的現狀,以及應該如何理解它的本源內核.

1900/1/1 0:00:00
央財:區塊鏈數字藏品成為中國數字新文創的典型代表,2021年是數字藏品元年_區塊鏈:區塊鏈適合什么人做

“文化也是生產力,但目前仍面臨文化經營、數據產權不清晰等難題,需要用數字技術搭建新基建,構建文化共享數據平臺,用科技方式促活文化經濟.

1900/1/1 0:00:00
Hester Peirce:美國SEC主席的監管議程未能包括對加密貨幣的明確說明_NDB:AND

被該領域的許多人稱為加密貨幣媽媽的美國證券交易委員會(SEC)委員HesterPeirce正在反對該監管機構的議程,因為該機構沒有對數字資產進行明確說明.

1900/1/1 0:00:00
觀點 | Web 3.0將為元宇宙的發展提供底層基礎_ING:amazingkinggame

原標題:《探秘數字身份》作者:德鼎創新基金合伙人王岳華,RichardWang,GeneralPartnerofDraperDragonFund在NUCBBusinessschool的發言.

1900/1/1 0:00:00
中美元宇宙之爭:這場博弈誰能走到最后?_元宇宙:元宇宙怎么賺錢

文章源自元宇宙見聞 編輯|Mamie 前情提要|入局元宇宙,所謂的機遇到底在哪里?1992年,美國著名科幻大師尼爾·斯蒂芬森在其小說《雪崩》中曾這樣描述元宇宙:“戴上耳機和目鏡,找到連接終端.

1900/1/1 0:00:00
美國財長耶倫:一些非托管實體將不受FATF標準約束_加密貨幣:METOO

據TheBlock12月1日消息,美國財政部長JanetYellen在對參議員PatToomey的書面答復中澄清表示,美國聯邦法規已經符合金融行動特別工作組的加密貨幣指南.

1900/1/1 0:00:00
ads