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

智能合約安全實踐:練就“火眼金睛”,真假構造函數一眼看清_OUT

Author:

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

引子:“真行者珞珈山訴苦,假猴王水簾洞謄文。”——《西游記·第五十八回》在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?

在智能合約中,構造函數負責一些數據的初始化工作,owner值一般也會放在構造函數中進行初始化。owner是智能合約擁有者的稱呼,也常被用來作為該合約的超級管理員。對代幣合約來說,owner可能被分配的權限有:鑄造/銷毀代幣、凍結代幣等。如果開發者以錯誤的語法創建“構造函數”,造成構造函數缺失,致使“六耳獼猴”以假亂真,瞞過了開發者,最后使得攻擊者成為合約的擁有者,那么攻擊者便可依賴owner的權限,對代幣進行增發或銷毀等操作,進而可能造成整個代幣的崩盤。一、構造函數簡介

The Sandbox已部署全新土地智能合約,地主可免費進行遷移:1月29日消息,The Sandbox 官方發文宣布已部署全新的土地智能合約。The Sandbox 表示,本次部署新合約,是因為原有的土地智能合約存在漏洞,目前該漏洞已修復,且沒有被任何惡意用戶利用。

此外,The Sandbox 已為土地擁有者準備了遷移智能合約,讓地主將自己的土地遷移到新的土地合約約;遷移智能合約的地址為 0x371f4c6fd305c6772Bc6224b795b0B46b6B6f8dB。用戶不需要為本次遷移支付費用,The Sandbox 官方會負責執行交易。[2022/1/29 9:21:32]

在Solidity語言中,當函數名和合約名相同時,此函數就是合約的構造函數,在合約對象創建時,會先調用構造函數對相關的數據進行初始化。以太坊Solidity0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor()public{},引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。

數字人民幣專利數量井噴 智能合約成新方向:隨著數字人民幣試點逐步深入,相關專利申請數量正不斷被刷新,國內多家知名機構申請專利數量超過去年。其中,中國移動、中鈔信用卡、騰訊、百度、工行、中行等機構在上半年都有相關專利更新。數字人民幣具備的可編程性讓智能合約備受青睞,多項專利得到市場高度關注。(上證報)[2021/7/28 1:19:23]

二、Fal1out“以假亂真?”

–漏洞分析下面以ethernaut靶場的Fallout題目為例進行分析。一眼看去,這似乎是一個正常沒有漏洞的合約代碼,但經過仔細觀察發現,該合約存在一個致命錯誤——構造函數名稱與合約名稱不一致,Fallout合約的構造函數被寫錯成了Fal1out。這樣的錯誤使其成為了一個被public修飾的普通函數,失去了構造函數僅在合約部署時被調用的特性,使得任何人都可以調用。該題目源碼如下圖所示:

動態 | 2019中國網絡誠信十大新聞出爐,區塊鏈智能合約司法應用上榜:12月2日消息,以“網聚誠信力量 共創信用中國”為主題的2019中國網絡誠信大會今日在古城西安舉行,會上發布了“2019中國網絡誠信十大新聞”的征集、評選結果。其中“首個區塊鏈智能合約司法應用上線,新技術構筑網絡誠信智能防線”新聞登上2019中國網絡誠信十大新聞名單。[2019/12/2]

圖1在Fal1out函數中直接指定了函數調用者的地址即為owner,所以只需要調用Fal1out函數即可實現對合約owner的更改。如下圖所示:

動態 | 昨日新增145個代幣型智能合約 新增數量為8月最低:第三方大數據評級機構RatingToken最新數據顯示,2018年8月25日全球共新增1216個合約地址,其中145個為代幣型智能合約。本周日均每日新增合約地址1494個,對比上周七天日均增長數為95個,漲幅為6.79%;其中245個為代幣型智能合約,對比上周七天日均減少15個,降幅為5.77%。此外,昨日登上新增合約風險榜TOP10的合約包括BIBBPCoin(BIBBP)、Health Earth(HE)、Scepter Advanced Blockchain Enterprise Rewards(SABER)、FOMO Short(SHORT)、EVA(EVA)、猴哥帶帶我(SBW)、COSEN(COS)、Luckydice Official(LK3D)、Zen Inc. EXO(EXO)和HUIJIECOIN(HJC)。如需查看更多智能合約檢測結果,請查看原文鏈接。[2018/8/26]

Penta可以為智能合約及區塊鏈應用提供獨立的虛擬智能運行空間:Penta公鏈(PNT) CMO Stephane Laurent在“區塊鏈技術與應用高峰論壇”談及Penta作為公鏈如何吸引開發者在其平臺構建DAPP時表示:首先在技術層面,Penta構建的梵塔界(PDW)為智能合約及區塊鏈應用提供完整的、獨立的虛擬智能運行空間,梵塔界會為區塊鏈應用提供獨立計算資源、數據庫、文件存儲等應用運行所需資源;其次Penta公鏈對開發者非常友好,提供 DAPP應用開發組件與SDK,簡化 DAPP的開發;此外Penta團隊此前已經與諸多企業、機構合作落地了很多聯盟鏈項目,可以幫助應用開發者更好了解企業和行業需求,打造可持續的商業模型;最關鍵的是Penta將利用自身的社區優勢幫助開發者共建社區,實現互惠共贏。[2018/6/3]

圖2“假猴王”Fal1out想借著一些字體類型的相似字符的視覺差異混淆視聽,可最終還是沒能逃過我們的“火眼金睛”。三、前車之覆:

MorphToken事件分析在過去也曾發生過類似的安全事件,包含著假構造函數的合約被成功發布到主鏈上,其中比較出名的是“MorphToken事件”,其因為一個看似很小的問題而造成了數千萬市值的代幣被增發。合約代碼地址:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code在Owned合約中,由于首字母大小寫的錯誤,導致本該成為構造函數的Owned成為了普通函數owned,且被public修飾,可供任何人調用。如下圖所示:

圖3MorphToken合約繼承了Owned合約,并在自己的構造函數內進行了owner的初始化,但是父合約Owned的owned函數是可供任何人調用的,攻擊者便可通過調用owned函數更改合約的所有者owner。owner的初始化代碼如下圖所示:

圖4由上述可知,任何人都可以通過調用合約的owned函數,成為合約的擁有者(owner)。如下圖所示:

圖5失之毫厘,差之千里,一個小小的字母錯誤,卻導致了合約的代幣的崩盤。代幣也被惡意增發。如下圖所示:

圖6四、后車之鑒:

開發者應如何正確使用構造函數建議更換Solidity0.4.22及以上版本,并使用正確的constructor()語法。如下圖所示:

圖7切記:constructor()前并無function,functionconstructor()public{}為錯誤的構造函數形式。如果要使用低于0.4.22的版本,則一定要著重檢查函數名是否和合約名一致。如下圖所示:

圖8五、安全建議

在智能合約中因開發者粗心,而造成安全漏洞的事件層出不窮,“千里之堤,潰于蟻穴”,成都鏈安-安全實驗室在此給出如下建議:1、開發者在編寫智能合約敏感函數時,應嚴格按照官方要求的代碼書寫規范,注意不要出現字符錯誤等情況。2、在某些情況下,編譯器會對constructor的錯誤使用發出警告,開發者應予以正確對待,不可認為其只是警告信息而忽略不處理。3、在合約正式上線前一定要找專業可信的機構做好合約代碼的審計工作。

Tags:OWNNERENTOUTtownstar幣總量多少Nerve FinanceDecentBetSouth Park

Fil
比特幣看漲者Mike Novogratz:我持有的黃金要多于比特幣_OVO

編者按:本文來自Cointelegraph中文,作者:HELENPARTZb,Odaily星球日報經授權轉載.

1900/1/1 0:00:00
OKEx投研:這種行情下或許只有技術分析可給出應對之策_RSS3

BTC/USDT永續合約 各級別性質:日線-盤整,4小時-盤整,1小時-盤整截圖來自OKEXBTC/USDT永續合約1小時圖:對于行情從兩個角度來說.

1900/1/1 0:00:00
ChainsMap鏈上數據:幣價滑向9000美元,鏈上活躍度隨之墜落?_比特幣

6月,可謂一個比特幣價格距離10000美元漸行漸遠的月份,根據CoinDesk的數據,在長期被壓制在10000美元之下后,2020年6月,比特幣價格盡管一度再上10000美元,但是很快回落.

1900/1/1 0:00:00
DeFi沉思錄:歷史、中國與未來_DEF

作者:江小漁;編輯:黑土;出品:碳鏈價值在加密貨幣行業,變化就像龍卷風,你不知道它會在什么時候到來,但它總會在某一天突然降臨,隨后引起一波劇烈的風潮.

1900/1/1 0:00:00
三年大考,幣安交卷_區塊鏈

文|秦曉峰編輯|郝方舟出品|Odaily星球日報 三年時間,對企業來說意味著什么?于絕大多數企業,三年是第一道生死線。數據顯示,中國中小企業的平均壽命只有2.5年.

1900/1/1 0:00:00
OKEx投研:股市重挫對幣市影響幾何?_KEX

BTC/USDT永續合約 各級別性質:日線-盤整,4小時-盤整,1小時-盤整截圖來自OKEXBTC/USDT永續合約1小時圖:對于行情從兩個角度來說.

1900/1/1 0:00:00
ads