買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > 比特幣 > Info

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

Author:

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

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

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

Arbitrum鏈上智能合約創建總量突破200萬:金色財經報道,Dune數據顯示,以太坊Layer2網絡Arbitrum鏈上智能合約創建總量突破200萬。截至目前為2,001,535個,累計鏈上ERC-20資產總價值超過85億美元。

歷史數據顯示,Arbitrum鏈上智能合約創建總量于2022年11月底突破100萬,這意味著該指標在不到五個月時間內翻了一番。[2023/4/10 13:54:45]

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

央行數字貨幣研究所申請“智能合約”專利:7月5日消息,近期,數字人民幣結合智能合約的應用實踐得到了廣泛關注。從公開數據了解到,人民銀行數字貨幣研究所申請了8篇標題含有“智能合約”字眼的專利,大部分于2021年申請,涵蓋的技術多為智能合約底層技術方案,具體包括智能合約的注冊方法和執行方法。業內專家介紹,通過在數字人民幣上加載智能合約,拓展了數字人民幣支付場景的同時,能夠實現支付“定制化”,為老百姓提供更加便民的支付工具。(中證網)[2022/7/5 1:53:05]

二、Fal1out“以假亂真?”

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

比特幣核心開發者正為比特幣開發新智能合約語言Sapio:金色財經報道,比特幣核心開發者Jeremy Rubin透露了他為比特幣開發的新智能合約語言Sapio,他希望這將增加用戶的“金融自主權”。他計劃將這種編程語言作為其新研究組織Judica的一部分發布。[2020/7/15]

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

聲音 | 智能合約先驅尼克·薩博:比特幣是一種自然權利:推特用戶@danheld稱,用比特幣自由交易是一種人權。智能合約先驅尼克·薩博(Nick Szabo)在推特上回應稱,關于比特幣最恰當的表達,我認為這是一種自然權利,其通過計算機語言賦予,是一種抗審查協議。[2019/9/15]

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

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

以太坊競爭對手RSK發布比特幣智能合約平臺:以太坊競爭對手RSK實驗室已經宣布:比特幣智能合約平臺主網于周一正式上線。該公司聲稱獲得了90%的比特幣哈希算力的支持,用于RSK側鏈挖礦。且鼓勵所有開發者在測試階段參與尋找bug的獎勵計劃。[2017/12/5]

圖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:OWN比特幣NERTRUTown Starbcd比特幣鉆石最新消息DINNERtrustwallet錢包官方版

比特幣
NFT:一文了解波卡民主模塊_MAGE

編者按:本文來自PolkaWorld,Odaily星球日報經授權轉載。公投議院是鏈上治理的三個機構之一,在波卡和Kusama中都是如此。另外兩個機構是理事會和技術委員會.

1900/1/1 0:00:00
DERI:Deribit期權市場播報:0712 - 19.8%_Internet Computer(Dfinity)

最近比特幣的歷史波動率還在繼續下跌,回溯近一周的小時級別K線,我們發現漲跌幅度超過100美元的情況只出現了8次。在這種環境下,期權賣方幾乎不用付出對沖成本,賣出即盈利.

1900/1/1 0:00:00
GMT:行情分析:BTC還能跟上暴走的股票市場嗎?_小比特幣圖片大全

市場要聞 1、安全專家:在美國因比特幣勒索軟件攻擊損失了約14億美元據LiveBitcoinNews7月5日消息,安全專家、Ingalls信息安全公司創始人和CEOJasonIngalls表示.

1900/1/1 0:00:00
BTC:比特幣算力再創新高,頂級分析師預測BTC價格會隨之上漲_ggbtc

編者按:本文來自巴比特資訊,作者:NICKCHONG,譯者:Libert,星球日報經授權發布。盡管比特幣持續橫盤,但這一領先加密貨幣的哈希率卻越來越高.

1900/1/1 0:00:00
RVN:RVN漏洞事件全回顧:黑客代碼導致3億增發_COI

「RVN增發」事件時間線6月29日,SolusExplorer開發團隊CryptoScope的一個程序員在回歸測試時,發現瀏覽器統計的RVN余額出了問題,在深入排查問題后.

1900/1/1 0:00:00
UMA:美國總統候選人:你才是數據的主人_HUMAI價格

AndrewYang,中文名楊安澤,美籍華裔企業家,2020年美國總統大選民主黨原候選人。他是美國史上第二位宣布參選總統的華人,競選口號“人性至上”(Humanity\nFirst).

1900/1/1 0:00:00
ads