加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 萊特幣 > Info

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

Author:

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

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

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

安全公司OpenZeppelin發布為StarkNet編寫的智能合約庫Cairo v0.1.0:4月6日消息,區塊鏈安全公司OpenZeppelin發布智能合約Cairo v0.1.0,這是一個用Cairo為StarkNet編寫的智能合約庫,一個去中心化的ZK Rollup,該版本包含幾個重要的智能合約,包括ERC20、ERC721和使用Argent開發的賬戶抽象合約。[2022/4/6 14:06:47]

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

Waves CEO:智能合約及DeFi區塊鏈的興起將推動比特幣增長:Waves首席執行官Sasha Ivanov發推稱,智能合約、DeFi區塊鏈興起將推動比特幣的增長,而不是相反。比特幣實際上解決了支付問題,但支付只是整個過程中的一小部分。[2020/8/29]

二、Fal1out“以假亂真?”

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

西班牙頂級銀行使用智能合約完成支付試驗:跨國銀行巨頭桑坦德銀行(Banco Santander)和四家西班牙銀行已成功完成使用智能合約進行付款的概念驗證。(Cointelegraph)[2020/7/17]

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

英特爾與Enigma合作 確保其隱私智能合約安全:據coindesk消息,英特爾正與區塊鏈創業公司Enigma合作,幫助確保其隱私增強型智能合約的安全。Enigma的協議將集成智能合約技術及英特爾系統。[2018/6/21]

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

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

恒大研究院任澤平:智能合約或是區塊鏈上最具革命性的應用:恒大研究院任澤平今日發文稱,智能合約可能是區塊鏈上最具革命性的應用。如果智能合約在區塊鏈上實現廣泛運用,經濟分工將在互聯網時代進一步細化,全球范圍內的各網絡節點將直接對接需求和生產,更廣泛的社會協同將得以實現。如果上述愿景實現,區塊鏈技術與行業的結合有望迎來“從1到N”的爆發時刻,它的爆發或將不是線性的而是非線性的,區塊鏈也才可能從“信任機器”升級成為引領產業浪潮的重要“引擎”。此外,他還預測了行業發展趨勢,在行業方面,預計未來3-5年將以金融行業為主,逐漸向其他實體行業輻射,更多切合實際的場景加速落地,行業從“1到N”發展出包括娛樂、商品溯源、征信等。技術方面,目前聯盟鏈的共識算法、技術性能相較于大型公鏈可以更好地滿足企業對實際商業場景的落地需求,預計未來三年將大規模發展。政策方面,區塊鏈可以增加執法透明度,探測行業信用情況,加快實體經濟革新,預計未來各國將根據自身情況不同力度地輔以政策支持。[2018/5/27]

圖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區塊鏈NERFALCROWN價格魔獸幣應用區塊鏈嗎goldminer幣在哪個交易交易是跑路幣嗎FalconSwap

萊特幣
盤點:一年多過去了,市值前40的幣種都發生了什么變化?_EFI:Clever DeFi

編者按:本文來自威廉閑談,作者:陳威廉,Odaily星球日報經授權轉載。我在2019年2月份的時候,也就是差不多去年的過年前后發了一條微博,聊到了市值前40的項目.

1900/1/1 0:00:00
以太坊是協議盆地,DeFi是江河般的全球公共物品_以太坊:uni幣價格最新行情

編者按:本文來自鏈聞ChainNews,撰文:DavidHoffman,POVCrypto主持人兼RealT首席運營官,編譯:詹涓,星球日報經授權發布.

1900/1/1 0:00:00
HyperPay正式上線HBT映射挖礦功能_HYP:HyperGraph

HyperPay于7月15日正式推出HBT挖礦功能,為用戶提供更多獲得HyperBC生態通證HBT渠道.

1900/1/1 0:00:00
聚合趨勢:誰會成為DeFi生態首個「聚合器」?_EFI:DEF

編者按:本文來自鏈聞ChainNews,撰文:RyanRodenbaugh與BaptisteVauthey,前者為TrustToken前幕僚長、后者系Bitcog創始人,編譯:盧江飛.

1900/1/1 0:00:00
Messari聯合創始人Ryan Selkis預測DeFi五大趨勢_DEF:MES

編者按:本文來自鏈內參,作者:內參君,Odaily星球日報經授權轉載。紐約的加密資產研究和數據公司Messari的聯合創始人兼首席執行官RyanSelkis的上周在2020年杭州區塊鏈會議上總結.

1900/1/1 0:00:00
今晚開啟公募的雪崩協議,帶協議層先進入3.0_AVA:DX Condom of King

文|王也編輯|郝方舟出品|Odaily星球日報 由于Compound和Balancer的造富效應,近期DeFi項目扎堆發幣.

1900/1/1 0:00:00
ads