比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > SHIB > Info

LOC:科普 | 智能合約安全審計入門篇 —— 溢出漏洞

Author:

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

By:小白@慢霧安全團隊

背景概述

上周寫了智能合約安全審計入門篇——重入漏洞,這次我們接著來說一個同樣很經典的漏洞——?溢出漏洞。

前置知識

首先我們還是先來看看溢出是什么:

算術溢出或簡稱為溢出分為兩種:上溢和下溢。所謂上溢是指在運行單項數值計算時,當計算產生出來的結果非常大,大于寄存器或存儲器所能存儲或表示的能力限制就會產生上溢,例如在solidity中,uint8所能表示的范圍是0-255這256個數,當使用uint8類型在實際運算中計算255+1是會出現上溢的,這樣計算出來的結果為0也就是uint8類型可表示的最小值。同樣的,下溢就是當計算產生出來的結果非常小,小于寄存器或存儲器所能存儲或表示的能力限制就會產生下溢。例如在Solidity中,當使用uint8類型計算0-1時就會產生下溢,這樣計算出來的值為255也就是uint8類型可表示的最大值。

民盟中央建議加速元宇宙科普和立法:3月4日消息,民盟中央已起草了《關于“元宇宙”技術發展的提案》,并將提交全國政協十三屆五次會議。在提案中,民盟中央建議,在科普層面需加速知識傳播,法律層面則需加快立法步伐。民盟中央擬提交的提案指出,目前,在新興網絡層面,相關政策法規相對缺失。“元宇宙”在未來將會帶動形成全新的網絡形態,當遇到突發輿情,全虛擬的環境、場景將更難進行源頭追蹤、問題疏導。因此建議應盡早加快立法研究,盡快形成與技術、市場發展相適應的治理模式和法律基礎,全面提升我國社會治理的水平。建議組織相關部門,針對“元宇宙”相關需求、風險進行立法研究,并盡快發布。此前消息,民進中央擬向全國政協十三屆五次會議提交《關于積極穩妥推進元宇宙技術和產業發展的提案》。建議推進元宇宙技術產業發展,建立相關監管治理體系。(華夏時報)[2022/3/4 13:37:12]

如果一個合約有溢出漏洞的話會導致計算的實際結果和預期的結果產生非常大的差異,這樣輕則會影響合約的正常邏輯,重則會導致合約中的資金丟失。但是溢出漏洞是存在版本限制的,在Solidity<0

徐明星新書《趣說金融史》正式發布 科普金融發展之道:金色財經現場報道,9月23日,歐科云鏈創始人徐明星攜手著名財經作家李霽月、行業觀察者顧澤輝力作《趣說金融史》一書,跨越5000年金融歷史,重讀金錢故事,并預測新的金融時代。該書由中信出版社出版,將于近期正式發售。據了解,本書可以更好地呈現金融的起源與發展,幫助人們理解貨幣、金融與未來經濟。作為區塊鏈行業領軍企業——歐科云鏈的創始人,徐明星深知技術探索對經濟社會的重要推動作用,他曾先后出版過《圖說區塊鏈》、《區塊鏈:重塑經濟與世界》、《通證經濟》、《鏈與未來》等行業權威著作,解讀區塊鏈等新型技術的推動下,金融與社會的升級之道,對經濟社會發展做出了重大貢獻。其中,《區塊鏈:重塑經濟與世界》曾作為新中國70周年重點推薦圖書之一被相關書店推薦。[2021/9/23 17:00:57]

functionincreaseLockTime(uint_secondsToIncrease)public{lockTime+=_secondsToIncrease;}

國務院:推進科普與區塊鏈技術深度融合:為貫徹落實黨中央、國務院關于科普和科學素質建設的重要部署,依據《中華人民共和國科學技術進步法》、《中華人民共和國科學技術普及法》制定《全民科學素質行動規劃綱要(2021-2035年)》,其中要求實施智慧科普建設工程。推進科普與區塊鏈等技術深度融合,強化需求感知、用戶分層、情景應用理念,推動傳播方式、組織動員、運營服務等創新升級,加強“科普中國”建設,強化科普信息落地應用,與智慧教育、智慧城市、智慧社區等深度融合。(新華社)[2021/7/10 0:40:52]

functionwithdraw()public{require(balances>0,"Insufficientfunds");require(block

歐科云鏈集團正式啟動區塊鏈科普行動“星途計劃”:歐科云鏈集團于4月26日,正式宣布啟動了區塊鏈科普行動——“星途計劃”,行動包括將在全國范圍展開系列沙龍,加大力度推進區塊鏈科普進機關、進國企、進校園等,聯合政府部門、行業協會等共同構建起更加完善和有效的區塊鏈科普教育生態,與此同時,直擊區塊鏈科普現存痛點,推出簡單易懂的“秒懂區塊鏈”公益短視頻課。

該計劃旨在全維度推動社會建立對產業更清晰的認知,與“鯤鵬計劃”一道助力數字經濟及區塊鏈產業本身健康發展夯實“人才”和“產業認知”兩大基礎。[2021/4/26 20:59:37]

}

漏洞分析

我們可以看到,TimeLock合約充當了時間保險庫。用戶可以將代幣通過deposit函數存入該合約并鎖定,且至少一周內不能提現。當然用戶也可以通過increaseLockTime函數來增加存儲時間,用戶在設定的存儲期限到期前是無法提取TimeLock合約中鎖定的代幣的。首先我們發現這個合約中的increaseLockTime函數和deposit函數具有運算功能,并且合約支持的版本是:0

fallback()externalpayable{}

functionattack()publicpayable{timeLock

}

這里我們將使用Attack攻擊合約先存入以太后利用合約的溢出漏洞在存儲未到期的情況下提取我們在剛剛TimeLock合約中存入并鎖定的以太:

1.首先部署TimeLock合約;

2.再部署Attack合約并在構造函數中傳入TimeLock合約的地址;

3.調用Attack.attack函數,Attack.attack又調用TimeLock.deposit函數向TimeLock合約中存入一個以太,之后Attack.attack又調用TimeLock.increaseLockTime函數并傳入uint類型可表示的最大值加1再減去當前TimeLock合約中記錄的鎖定時間。此時TimeLock.increaseLockTime函數中的lockTime的計算結果為2^256這個值,在uint256類型中2^256這個數存在上溢所以計算結果為2^256=0此時我們剛剛存入TimeLock合約中的一個以太的鎖定時間就變為0;

4.這時Attack.attack再調用TimeLock.withdraw函數將成功通過block.timestamp>lockTime這項檢查讓我們能夠在存儲時間未到期的情況下成功提前取出我們剛剛在TimeLock合約中存入并鎖定的那個以太。

下面是攻擊流程圖:

修復建議

到這里相信大家對溢出漏洞都有自己的理解了,那么下面我們就以開發者和審計者的角度來分析如何預防溢出漏洞和如何快速找出溢出漏洞:

作為開發者

1.使用SafeMath來防止溢出;

2.使用Solidity0.8及以上版本來開發合約并慎用unchecked因為在unchecked修飾的代碼塊里面是不會對參數進行溢出檢查的;

3.需要慎用變量類型強制轉換,例如將uint256類型的參數強轉為uint8類型由于兩種類型的取值范圍不同也可能會導致溢出。

作為審計者

1.首先查看合約版本是否在Solidity0.8版本以下或者是否存在unchecked修飾的代碼塊,如果存在則優先檢查參數的溢出可能并確定影響范圍;

2.如果合約版本在Solidity0.8版本以下則需要查看合約是否引用了SafeMath;

3.如果使用了SafeMath我們需要注意合約中有沒有強制類型轉換,如果有的話則可能會存在溢出的風險;

4.如果沒有使用SafeMath且合約中存在算術運算的我們就可以認為這個合約是可能存在溢出風險的,在實際審計中還要結合實際代碼來看。

Tags:LOCLOCKTIMIMEBlockBurnBlockMeshXTIMEUniMex Network

SHIB
MIX:MixLabs Liquan:如何在IC上搭建第一個Demo

11月30日,在線上直播活動上,MixLabsLiquan進行了線上Demo演示教學,在20分鐘內分別用IC原生語言Motoko以及Rust語言一步步實現邏輯并在主網部署Demo.

1900/1/1 0:00:00
元宇宙:高盛:區塊鏈是元宇宙和web3發展的核心

金融巨頭高盛表示,加密技術將成為虛擬世界的核心,因為它將允許人們在不同的虛擬世界中安全地擁有數字物品.

1900/1/1 0:00:00
CHA:aelf元宇宙黑客馬拉松Top of OASIS 正式開啟,獎金累計高達68萬美金

2021年12月12日,aelf聯合DoraHacks正式開啟元宇宙黑客馬拉松TopofOASIS面向全球招募優秀開發者.

1900/1/1 0:00:00
SHI:韓國關于“推遲加密稅收”的稅法修正案未能達成協議,將于11月26日再次討論

據Forkast11月25日消息,韓國國會策略及金融委員會下屬的稅務小組委員會討論了所得稅法修正案,包括推遲虛擬資產所得稅,但未能達成協議,因為出席會議的政府官員仍持反對意見.

1900/1/1 0:00:00
DEF:2021年區塊鏈黑客攻擊頻發的原因是什么?后續的安全工作要如何改進?

原標題:《一文揭秘2021年區塊鏈黑客攻擊頻發的原因》區塊鏈以無審查著稱,是一片鼓勵創新的熱土,也是滋生犯罪的溫床.

1900/1/1 0:00:00
數字貨幣:央行數研所副所長:區塊鏈助力數字金融高質量發展,可從核心技術等八方面破局

據中國證券網消息,中國人民銀行數字貨幣研究所副所長狄剛今日在國際金融論壇第18屆全球年會上表示,雖然區塊鏈技術在全球數字金融領域已經拓展了很多應用場景.

1900/1/1 0:00:00
ads