比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Fil > Info

智能合約安全實踐:功能實現千萬條,權限安全第一條_ERN

Author:

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

引子:“庖人雖不治庖,尸、祝不越樽俎而代之矣。”--《莊子·逍遙游》古時候,有一位杰出的領袖名叫唐堯。他所治理的地區人們安居樂業,但是他聽聞隱士許由十分有才干,便萌生了將領導權讓給許由的想法。但是許由拒絕了,并說出了這樣一段話“鷦鷯巢于深林,不過一枝。”至此,后人也用越俎代庖一詞來表達越權的含義。

“越俎代庖”在智能合約的實現中存在著訪問權限,如果權限設置不合理,很容易造成智能合約被攻擊,嚴重的還會造成巨大的經濟損失。成都鏈安-安全實驗室對于智能合約安全有著豐富的經驗和積累,但隨著區塊鏈技術越來越受重視,智能合約的數量也越來越多,隨之而來的智能合約被攻擊事件也越來越多,也讓我們感受到了“讓區塊鏈更安全”的企業使命是多么的重要,但是一己之力難于對抗所有的威脅。接下來,我們將會把自己的安全經驗積累通過與智能合約CTF靶場ethernaut相結合,通過技術連載的方式向廣大智能合約開發者普及在開發過程中,如何實現更安全的代碼。

API3推出智能合約隨機數生成器,可在Avalanche、Moonbeam等區塊鏈上使用:5月3日消息,一種依賴量子力學來生成由區塊鏈技術支持的智能合約驅動數據集的隨機數生成器已經在十幾個加密貨幣協議上推出。

API3與澳大利亞國立大學量子光學組的一組研究人員合作,將其新產品ANU GRNG稱為第一個“真正的”智能合約隨機數生成器。

API3表示,公司正在啟動的13個區塊鏈中,有10個還沒有可用的隨機數生成器。其中一些協議使用不使用量子技術的隨機數生成器,這意味著它們的數據集是有限的,或者用行業術語來說是“偽隨機數”。

新服務可在包括Avalanche、Fantom、Moonbeam、Polygon和RSK在內的區塊鏈上使用,并計劃在未來進行更多集成。

該公司并不靠隨機數生成器盈利,而是將其引入其他產品線,比如預言機解決方案和數據集成服務,包括一個依賴于質押原生代幣運行的驗證池。(Blockworks)[2022/5/4 2:48:24]

OKExChain十月月報:Farm和Swap模塊完成開發,EVM智能合約完成30%:據OKExChain十月項目進度月報顯示:OKExChain測試網已升級至v0.12.3,流動性挖礦Farm模塊和Swap模塊開發完畢,并完成第一輪測試。EVM智能合約開發順利進行,已完成30%,且各項測試均正常運行。另外,OKEx Dex的AMMSwap完成整理聯調,支持創建任意幣種流動性池,添加流動性,刪除流動性,token互換四大核心功能。[2020/11/4 11:37:47]

現在我們就來聊一聊ethernaut靶場的第一題Fallback,代碼函數“越俎代庖”的事件。一、權限漏洞簡介

越權漏洞是指在智能合約中,因函數可見性設置不合理或函數缺乏有效的驗證導致本不能調用某一函數的用戶通過直接或者繞過驗證的方式成功調用該函數。該漏洞可被單獨利用,也可能結合其他漏洞進行組合攻擊,利用方式簡單,漏洞影響視存在漏洞的函數而定,可能對合約造成毀滅性打擊。二、Fallback“越俎代庖”

Clarity智能合約將從Chainlink Oracle獲取數據:金色財經報道,Algorand和Blockstack PBC的聯合智能合約語言Clarity將能夠從Chainlink的oracle網絡獲取數據。在整合后,Chainlink的oracle將把數據饋入Clarity的跨區塊鏈智能合約,首先將包括實時價格點。Blockstack在一份新聞稿中表示,其用戶“不久的將來”將能夠訪問整個Chainlink數據庫,但未提供時間表。[2020/10/1]

漏洞原理詳細分析2.1合約中的“俎”與“庖”如何理解合約中的“俎”與“庖”呢?先來看一段合約代碼,如下圖所示:

圖1這一段合約代碼出自ethernaut靶場的第一題Fallback。針對于靶場中的問題,解題思路是通過調用回調函數function()payablepublic來觸發owner=msg.sender;,使得合約的所有者變成調用者。題目非常的簡單,只要向此合約發起一筆交易,且滿足require的條件就可觸發fallback函數。正常情況下,在對一個合約調用中,如果沒有其他函數與給定的函數標識符匹配,或者沒有提供附加數據,那么fallback函數會被執行。一般是作為轉入以太幣的默認操作。所以智能合約開發時一般是不需要將owner=msg.sender寫到fallback函數中的。如下圖所示:

以太坊隱私交易平臺Tornado.cash完全去信任化,智能合約將不可再被修改:以太坊隱私交易平臺Tornado.cash今日發布博客宣布已完成去信任化操作。該平臺已將操作符地址設置為0x000000000000000000000000000000000000(0.1 ETH, 1 ETH, 10 ETH 以及 100 ETH),因此從現在開始所有的Tornado.cash合約均已無法變更。

團隊表示,這也意味著對于Tornado.cash 來說,將很大程度開始遵循代碼即法律的戒律。Tornado.cash智能合約在以太坊上運行,社區可以決定是否使用其工具。只要以太坊本身沒有被更改或者消失,那么就沒有人可以修改Tornado.cash的智能合約。而團隊也提到,完全去信任化之后,Tornado.cash 團隊也不能再像以前那樣保護用戶免受bug的侵害。除了從智能合約端完成了去中心化操作之外,Tornado.cash還對用戶界面和站點進行了去中心化,他們使用了IPFS部署UI。[2020/5/21]

華爾街巨頭試行DLT 用區塊鏈智能合約管理股權互換交易:高盛和摩根大通在內的一些華爾街巨頭已經完成了一項試點,使用區塊鏈智能合約來管理股權互換交易和交易后生命周期事件,其試點項目是由DLT初創公司Axoni利用其AxCore平臺進行管理,這也拉動了DLT幣價值的上漲。[2017/11/22]

圖2然而,在這里本不該被用戶調用的owner=msg.sender被調用了,導致權限控制不當,產生了越權,“俎”與“庖”就這樣發生了接下來的故事。2.2相關安全事件2.2.1Bancor合約事件2020年6月18日,Bancornetwork被爆出存在漏洞。漏洞產生的原因是合約中存在一個public的safeTransferFrom方法,使得攻擊者可以直接調用此方法授權給Bancornetwork合約的代幣轉出到任意賬戶。其關于轉賬和授權的三個函數權限均為public,這使得任何用戶都能對其進行調用。本次事件涉及資金50W余美元。詳細代碼如下圖所示:

圖3權限為public的safeTransferFrom方法這個“奸臣”并沒有得到Bancor合約“國王”的許可,直接奪走了“國家”的“財政大權”。幸而Bancornetwork團隊和白帽首先發現了此問題,并對資金進行了轉移。在后續也對該漏洞進行了修復,才得以避免損失。詳細分析見而同樣的事件也在另外一個合約中上演,接下來我們將介紹6月底的VETH合約漏洞事件。2.2.2VETH項目事件2020年6月30,VETH項目被爆出漏洞。本次事件中“越俎代庖”的主角則是合約中的changeExcluded函數的external修飾符。external修飾符使得任何人都可以調用changeExcluded函數來繞過transferFrom函數內部的授權轉賬額度檢查,將合約的VETH代幣盜走。此次事件,攻擊者利用此漏洞盜走919299個VETH后大量拋售,導致VETH代幣價值瞬間流失。詳細見涉及到的合約代碼如下圖所示:

圖4通過以上兩個案例,相信大家已經意識到了合約中“越俎代庖”事件的嚴重影響,那么如何在合約代碼編寫的過程中有效的區分“俎”與“庖”呢?2.3“俎”、“庖”信息大揭秘針對越權事件,首先需要合約開發人員了解函數可見性。函數的可見性,一共有external、public、internal和private四種:-External外部函數作為合約接口的一部分,意味著我們可以從其他合約和交易中調用。一個外部函數f不能從內部調用。當收到大量數據的時候,外部函數有時候會更有效率,因為數據不會從calldata復制到內存.-Publicpublic函數是合約接口的一部分,可以在內部或通過消息調用。對于public狀態變量,會自動生成一個getter函數。-Internal這些函數和狀態變量只能是內部訪問,不使用this調用。-Privateprivate函數和狀態變量僅在當前定義它們的合約中使用,并且不能被派生合約使用。開發人員在構造一個函數時,應當遵循這些可見性進行開發,要明確哪些函數是可以由用戶調用的“俎”,而哪些又是合約中不能任意替代的“庖”,以最小原則進行分配。比如一個函數safeTransfer在設計時是用于轉賬操作的,用戶可以通過調用此函數,轉賬此合約發行的代幣。我們使用public和external都可以滿足需求,但就安全的角度,我們應當使用external,避免合約內對此函數進行調用,造成不可預期的風險。如存在有一個safeTransferFrom函數,用戶可以通過授權給此合約其他代幣,將其他代幣轉移到一個指定地址的,當_token等于合約本身時,就會以合約本身的身份調用sadeTransfer函數,即而將合約內的錢轉到其他地址。

圖5然而只是遵循函數可見性是遠遠不夠的,函數的可見性,只是區分了合約內部、繼承合約和外部這三個界限,遠遠不能滿足我們的需求。想要達到較為完善的權限管理,我們應當引入“角色”的概念,如:管理員、普通用戶、特權用戶等。在合約中存儲這些角色的地址,通過判斷地址或標志變量來進行權限的控制。如下圖所示:

圖6通過修飾器對這些不同的“角色”進行管理,如使用onlyOwner修飾器,限制特定的地址才可調用此函數。對應“角色”的權限管理。使用修飾器的方式,可以更加清晰的判斷出是否存在紕漏。三、安全總結

就鏈上現狀來看,智能合約權限管理錯誤造成的漏洞比比皆是,其中不乏很多“著名項目”,而此類漏洞造成的損失也是巨大的。成都鏈安安全團隊依據多年合約審計和鏈上分析安全經驗給出以下幾點建議:1、遵循權限最小化開發原則,在設計函數時應當就規劃好可見性。2、建立角色機制,使用修飾器對各函數進行權限管理,避免紕漏。3、上線前一定找專業機構做好代碼審計,正所謂“一人一個腦,做事沒商討;十人十個腦,辦法一大套”。

Tags:ETHERNORNBLIeth大學申請條件Pixer EternityUnicorn MilkBLINKY價格

Fil
詳解灰度Q2投資表現:單季資金創新高,81%機構投資多種產品_Terra

內容重點概述1、2020年上半年灰度在數字資產領域里的投入資金達到10億美元并創新最大單季融資金額.

1900/1/1 0:00:00
35倍的投資回報率,為什么用戶和資金還是這么少_比特幣

編者按:本文來自Rossa私想匯,作者:Rossa,Odaily星球日報經授權轉載。一、比特幣的ROI是傳統市場70倍據cointelegraph消息,自2015年以來,比特幣的投資回報率(RO.

1900/1/1 0:00:00
穩定幣聚合協議mStable能撼動Curve地位嗎?簡述其運行機制與代幣經濟_USD

編者按:本文來自藍狐筆記,Odaily星球日報經授權轉載。DeFi領域的創新幾乎是無窮的,項目越來越多。藍狐筆記最近一直在關注mStable.

1900/1/1 0:00:00
DeFi:2020區塊鏈第一把交椅_區塊鏈

2020年伊始,世界經濟迎來前所未有的重創與動蕩。然百年大蕭條中,往往深藏著百年大機會!ETH2.0,Polkadot,波卡,Filecoin,DEX,DeFi與減半延續,CSW結案.....這.

1900/1/1 0:00:00
IPFS概念過熱,警惕FOMO心理,來看看交易所上線的FIL到底是什么_LEC

作者|如仔出品|奔跑財經號稱取代HTTP協議的IPFS應該沒有人不知道吧,近期,隨著其激勵層去中心化存儲網絡Filecoin主網臨近上線,很多交易所紛紛上線了Filecoin的代幣FIL交易對.

1900/1/1 0:00:00
交易所成黑錢勝地:“凍卡潮”背后的秘密_KEX

文|王也編輯|郝方舟出品|Odaily星球日報 6月4日起,一場涉及4000余張銀行卡和大量OTC商家的“凍卡潮”引發了場外交易者的關注和恐慌.

1900/1/1 0:00:00
ads