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

智能合約安全千萬條 訪問權限設置第一條_區塊鏈:ERN

Author:

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

引子: “庖人雖不治庖,尸、祝不越樽俎而代之矣。”  -- 《莊子·逍遙游》

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

“越俎代庖”

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

歐盟金融穩定監督機構:需要新法規來涵蓋加密集團和智能合約:金色財經報道,歐盟金融穩定監督機構表示,可能需要新的法規來涵蓋大型加密貨幣集團和智能合約,因為它警告說,不斷增長的數字資產和DeFi部門可能會對經濟構成系統性風險。

隨著新的加密資產市場法規(MiCA)將于2024年在集團內部生效,由歐盟央行行長Christine Lagarde主持的歐洲系統性風險委員會(ESRB)在周四的一份報告中警告說,加密貸款和投資的風險以及數字資產市場的高杠桿率仍存在。

雖然MiCA為錢包提供商和穩定幣發行人等參與者設定了治理、許可和準備金要求,但它遺漏了加密貸款和押注等領域,這些領域可能“對消費者構成重大風險”。[2023/5/25 10:39:46]

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

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

DeFi收益管理框架Stone已完成智能合約升級:DeFi收益管理框架Stone發推稱,團隊今天完成了智能合約升級。所有資產已發送至用戶的存款地址,并在6月22日至28日晚8時期間提供額外獎金。[2021/6/28 0:12:08]

2.1 合約中的“俎”與“庖”

如何理解合約中的“俎”與“庖”呢?先來看一段合約代碼,如下圖所示:

這一段合約代碼出自ethernaut靶場的第一題Fallback。針對于靶場中的問題,解題思路是通過調用回調函數function() payable public來觸發owner = msg.sender;,使得合約的所有者變成調用者。題目非常的簡單,只要向此合約發起一筆交易,且滿足require的條件就可觸發fallback函數。

正常情況下,在對一個合約調用中,如果沒有其他函數與給定的函數標識符匹配,或者沒有提供附加數據,那么fallback 函數會被執行。一般是作為轉入以太幣的默認操作。所以智能合約開發時一般是不需要將owner = msg.sender寫到fallback函數中的。如下圖所示:

動態 | 華泰證券推出首單區塊鏈智能合約管理的保理ABS:據證券日報消息,由華泰證券資產管理有限公司擔任計劃管理人的“京東金融-華泰資管2018年第6期供應鏈保理合同債權資產支持專項計劃”成功設立,并將于上交所掛牌轉讓。 該項目發行規模15億元,是業內首單以區塊鏈智能合約管理的保理ABS。此前,華泰證券資管與京東金融、興業銀行于今年6月共同組建了資產證券化聯盟鏈,將區塊鏈技術用于京東白條ABS發行,并首次實現了多方完全獨立對等部署。[2018/11/8]

然而,在這里本不該被用戶調用的owner=msg.sender被調用了,導致權限控制不當,產生了越權,“俎”與“庖”就這樣發生了接下來的故事。

2.2 相關安全事件

2.2.1 Bancor合約事件

2020年6月18日,Bancor network(0x5f58058c0ec971492166763c8c22632b583f667f)被爆出存在漏洞。漏洞產生的原因是合約中存在一個public的safeTransferFrom方法,使得攻擊者可以直接調用此方法授權給Bancor network合約的代幣轉出到任意賬戶。

聲音 | 京東翟欣磊:通過智能合約分享數據是區塊鏈最閃光之處:今日,在上海舉行的區塊鏈+供應鏈峰會上,京東大數據與智能供應鏈事業部區塊鏈業務負責人翟欣磊表示,對區塊鏈的定義方面,在京東來說,區塊鏈技術的架構還在生長,區塊鏈應該是鏈接器。

翟欣磊還表示未來本質是數據的生意,讓多家數據愿意讓數據流動、分享。而且,會有很多技術會疊加上來,這種哲學技術的思想是最重要的。這種把數據分享源通過智能合約進行反饋的技術模型是區塊鏈技術最閃光的地方。[2018/10/26]

其關于轉賬和授權的三個函數權限均為public,這使得任何用戶都能對其進行調用。本次事件涉及資金50W余美元。詳細代碼如下圖所示:

權限為public的safeTransferFrom方法這個“奸臣”并沒有得到Bancor合約“國王”的許可,直接奪走了“國家”的“財政大權”。幸而Bancor network團隊和白帽首先發現了此問題,并對資金進行了轉移。在后續也對該漏洞進行了修復,才得以避免損失。詳細分析見(https://mp.weixin.qq.com/s/vN1bNLqdvr8JEqq9QI0X1Q)

聲音 | 安比實驗室:8月ETH主網智能合約創建總量創17個月新低 或因ETH交易市場遇冷:據安比實驗室智能合約監控平臺數據顯示,2018 年 8 月以太坊主網智能合約創建總量為 51583,創 2017 年 4 月以來新低。8 月創建合約最多的地址為0x9862D074e33003726fA05c74F0142995f33A3250,共創建合約 8802 個。經安比實驗室逆向分析,該地址創建合約字節碼完全一致,疑似為錢包合約。據 BitcoinTalk 論壇網友舉證,該地址疑似與 BiteBTC 和 BITRADERHUB 有關,且大量用戶聲稱其存在詐騙行為。據安比實驗室,大量數字貨幣交易所會批量創建智能合約作為用戶錢包,用于處理用戶的各類資產。之前有過報道,7 月份智能合約創建數量暴漲,疑似與某交易所大量創建錢包合約有關。而 8 月合約新增數量創 17 個月以來新低,則很可能與加密貨幣尤其是以太坊資產交易市場遇冷、新增用戶規模萎縮存在重要聯系。[2018/9/3]

而同樣的事件也在另外一個合約中上演,接下來我們將介紹6月底的VETH合約漏洞事件。

2.2.2 VETH項目事件

2020年6月30,VETH項目被爆出漏洞。本次事件中“越俎代庖”的主角則是合約中的changeExcluded函數的external修飾符。

external修飾符使得任何人都可以調用changeExcluded函數來繞過transferFrom函數內部的授權轉賬額度檢查,將合約的VETH代幣盜走。

此次事件,攻擊者利用此漏洞盜走919299個VETH后大量拋售,導致VETH代幣價值瞬間流失。詳細見(https://mp.weixin.qq.com/s/plbSmpMfvIk_A457GoUaQA)涉及到的合約代碼如下圖所示:

通過以上兩個案例,相信大家已經意識到了合約中“越俎代庖”事件的嚴重影響,那么如何在合約代碼編寫的過程中有效的區分“俎”與“庖”呢?

2.3“俎”、“庖”信息大揭秘

針對越權事件,首先需要合約開發人員了解函數可見性。

函數的可見性,一共有external、public、internal和private四種:

External

外部函數作為合約接口的一部分,意味著我們可以從其他合約和交易中調用。 一個外部函數 f 不能從內部調用(即 f 不起作用,但 this.f() 可以)。 當收到大量數據的時候,外部函數有時候會更有效率,因為數據不會從calldata復制到內存.

Public

public 函數是合約接口的一部分,可以在內部或通過消息調用。對于 public 狀態變量, 會自動生成一個 getter 函數(見下面)。

Internal

這些函數和狀態變量只能是內部訪問(即從當前合約內部或從它派生的合約訪問),不使用 this 調用。

Private

private 函數和狀態變量僅在當前定義它們的合約中使用,并且不能被派生合約使用。

開發人員在構造一個函數時,應當遵循這些可見性進行開發,要明確哪些函數是可以由用戶調用的“俎”,而哪些又是合約中不能任意替代的“庖”,以最小原則進行分配。

比如一個函數safeTransfer在設計時是用于轉賬操作的,用戶可以通過調用此函數,轉賬此合約發行的代幣。我們使用public和external都可以滿足需求,但就安全的角度,我們應當使用external,避免合約內對此函數進行調用,造成不可預期的風險。如存在有一個safeTransferFrom函數,用戶可以通過授權給此合約其他代幣,將其他代幣轉移到一個指定地址的,當_token等于合約本身時,就會以合約本身的身份調用sadeTransfer函數,即而將合約內的錢轉到其他地址。

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

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

就鏈上現狀來看,智能合約權限管理錯誤造成的漏洞比比皆是,其中不乏很多“著名項目”,而此類漏洞造成的損失也是巨大的。成都鏈安安全團隊依據多年合約審計和鏈上分析安全經驗給出以下幾點建議:

1、 遵循權限最小化開發原則,在設計函數時應當就規劃好可見性。

2、 建立角色機制,使用修飾器對各函數進行權限管理,避免紕漏。

3、 上線前一定找專業機構做好代碼審計,正所謂“一人一個腦,做事沒商討;十人十個腦,辦法一大套”。

Tags:區塊鏈ETHERNLIC開發區塊鏈數字貨幣ETH官網錢包biteternityLeonidasbilic

以太坊最新價格
金色前哨丨俄羅斯調查Telegram代幣Gram海外欺詐銷售行為_TEL:gram幣最新價格

金色財經 區塊鏈7月4日訊  據報道稱,俄羅斯檢察官正在調查一家英國公司,該公司可能涉嫌出售帶有欺詐性質的Telegram代幣Gram.

1900/1/1 0:00:00
“區塊鏈之家”正式上線國家互聯網應急中心官網_ERT:CER

2020年6月30日,由國家互聯網應急中心自主研發的區塊鏈數據服務平臺“區塊鏈之家”正式上線CNCERT官網.

1900/1/1 0:00:00
以太坊何時才能從DeFi熱潮中受益?_EFI:以太坊幣最新價格美元走勢

DeFi無疑是當前幣圈最熱門的版塊,而作為DeFi最大動力來源的以太坊,發展略顯平淡。不少以太坊投資者都開始著急:ETH何時才能在DeFi這波猛烈勢頭中受益?DeFi市場已接近歷史高點,總鎖定價.

1900/1/1 0:00:00
7.13午間行情:天地針對行情的影響與后期走勢_XIN:區塊鏈

文章系金色財經專欄作者牛七的區塊鏈分析記供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.

1900/1/1 0:00:00
專利解讀:DCEP如何利用多重身份認證機制提高用戶使用體驗_區塊鏈:區塊鏈專業好不好就業

中國央行設計的法定數字貨幣技術,設計了一套獨特的身份認證串聯機制,方便DCEP在各類商家電子系統中流通。在保障安全性的前提下,使得用戶的身份認證過程更加便捷.

1900/1/1 0:00:00
金色觀察 | 比特幣短線跌破8900美元 分析師:減半后的上漲預期仍在_區塊鏈:區塊鏈存證多少錢

BTC今日凌晨短線下跌,跌破8900美元關口,創一周多以來的新低,導致價值數千萬美元的多頭平倉,動搖了多頭的上行預期.

1900/1/1 0:00:00
ads