加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 以太坊 > Info

智能合約安全實踐(二)| 練就“火眼金睛” 真假構造函數一眼看清_OWN:NER

Author:

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

“真行者珞珈山訴苦,假猴王水簾洞謄文。”  ——《西游記·第五十八回》

在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?

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

歐盟官員:歐盟議會的智能合約計劃限制了統一標準制定:3月15日消息,歐盟內部市場專員Thierry Breton周二告訴記者,歐盟有爭議的規定要求對某些智能合約設置“終止開關”,這可能會限制為該行業設定標準的關鍵能力。

他的言論暗示,議員們當天早些時候投票通過的條款不再符合2022年委員會法律提案“數據法案”(Data Act)中設定的目標。

Breton稱:“我們需要協調這些智能合約的基本要求,以確保互操作性、法律確定性和大規模部署,當提出這個提案時,我們打算要求相關組織制定這些標準。”

“我注意到議會提議修改這些基本要求,”他說,“值得注意的是,這些變化可能會限制制定智能合約統一標準的可能性。”(CoinDesk)[2023/3/15 13:05:25]

在Solidity語言中,當函數名和合約名相同時,此函數就是合約的構造函數,在合約對象創建時,會先調用構造函數對相關的數據進行初始化。

MakerDAO聲明:無法控制Oasis,Jump反向攻擊黑客不涉及其智能合約:2月25日消息,因Jump Crypto與Oasis聯合通過逆向攻擊追回12萬枚ETH的Wormhole被盜資金,MakerDAO發推特聲明,鑒于最近有關 Maker Vault 30100和Oasis前端的交易,需要解釋 MakerDAO、Maker 協議和第三方前端提供商之間的區別。MakerDAO 無法控制任何使終端用戶能夠訪問 Maker Vaults 的前端提供商或產品。

此外,連接到 Maker 協議的可用前端都不是由 MakerDAO 開發或維護的Maker 協議是一個去中心化的智能合約系統,公開部署在以太坊上,允許任何供應商以無許可和去中心化的方式連接其用戶界面解決方案。這些用戶界面提供商可以控制他們部署的智能合約,使終端用戶能夠與 Maker 協議進行交互。最近更改 Maker Vault 30100 所有權的交易不涉及任何 MakerDAO 的官方智能合約或 MakerDAO 指令。其重申 MakerDAO 的智能合約不受 Oasis 前端智能合約的控制或控制。[2023/2/26 12:29:44]

以太坊Solidity 0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor() public { },引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。

流動性挖礦項目CORE出現繞過其智能合約轉賬規則從流動性交易對中撤回資金的情況:流動性挖礦項目 CORE 表示,發現有人從 CORE 流動性交易對中撤回了流動性資金,這違反了 CORE 智能合約的設計初衷。按理來說,撤回流動性資金是非常困難的,需要設置特定的 EVM (以太坊虛擬機)狀態,或者在代幣合約啟動當日可能會有千分之一的機會發生這種情況。本次特例事件應該是一個巧合,CORE 團隊此前撰文稱,所有轉賬都必須獲得 CORE 轉賬智能合約的批準,這將阻止從 Uniswap 中提取所有的流動資金,以確保市場穩定性,使代幣持有者和挖礦農民在獲得競爭性優勢。[2020/9/27]

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

V神:以太坊EIP-2929提案或將打破部分已有智能合約:為了減小以太坊飆升的交易費,以太坊創始人Vitalik Buterin?于2日發布了以太坊改進提案EIP-2929,他建議將一些合約收費提高三倍,受影響的合約包括更新以太坊狀態的合約,以及一些應用程序。但是這個重新定價的提議可能會打破一些已經在以太坊上運行的智能合約,批準這一提議也需要以太坊社區的一致同意,這一過程可能需要數周或數月的時間。(Coindesk)[2020/9/4]

圖 1

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

獨家 | “新增代幣型智能合約風險榜”出爐 Peach Will(PW)風險排名第一:第三方大數據評級機構RatingToken最新數據顯示,截止2018年8月12日,全球新增919個合約地址,其中173個為代幣型智能合約。RatingToken團隊發布的“新增代幣型智能合約風險榜”中,Peach Will(PW)、Ready Player ONE(RP1)和Vote Bhelp(Test)排名前三,檢測得分依次為1.50、2.00和2.00,其中Peach Will存在24個疑似風險項。其他登上該風險榜TOP10的合約還包括PreSale、EarlyBirdSale、LFC_Crowdsale、Crowdsale、REWARD、Real Q Coin(RQC)和HODL Coin(HODL)。如需查看更多智能合約檢測結果,請查看原文鏈接。[2018/8/13]

圖 2

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

在過去也曾發生過類似的安全事件,包含著假構造函數的合約被成功發布到主鏈上,其中比較出名的是“MorphToken事件”,其因為一個看似很小的問題而造成了數千萬市值的代幣被增發。合約代碼地址:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code

在Owned合約中,由于首字母大小寫的錯誤,導致本該成為構造函數的Owned成為了普通函數owned,且被public修飾,可供任何人調用。如下圖所示:

圖 3

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

圖 4

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

圖 5

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

圖 6

建議更換Solidity 0.4.22及以上版本,并使用正確的constructor()語法。如下圖所示:

圖 7

切記: constructor()前并無function,function constructor() public { }為錯誤的構造函數形式。

如果要使用低于0.4.22的版本,則一定要著重檢查函數名是否和合約名一致。如下圖所示:

圖 8

在智能合約中因開發者粗心,而造成安全漏洞的事件層出不窮,“千里之堤,潰于蟻穴”,成都鏈安-安全實驗室在此給出如下建議:

1、 開發者在編寫智能合約敏感函數(如構造函數、回退函數fallback)時,應嚴格按照官方要求的代碼書寫規范,注意不要出現字符錯誤等情況。

2、 在某些情況下,編譯器會對constructor的錯誤使用發出警告,開發者應予以正確對待,不可認為其只是警告信息而忽略不處理。

3、 在合約正式上線前一定要找專業可信的機構做好合約代碼的審計工作。

Tags:OWNMAKEMakerNERbikingdownMake Me RichMaker BasicNERA

以太坊
DeFi總市值2個月漲700% 但仍有不少人表示:看不懂跟不上_EFI:DEF

自從 5 月份比特幣區塊獎勵減半塵埃落定之后,我們可以看到整個加密行業的目光焦點轉移到了 ETH 2.0、IPFS 以及 DeFi 上.

1900/1/1 0:00:00
5G基站建設乘風破浪 歐科云鏈徐明星:“區塊鏈+5G”將產生“1+1>2”的效果_區塊鏈:人工智能需要學哪些課程

據證券日報7月7日消息,在政策加持下,今年5G基站建設加速落地,不少地方發布了5G等新基建投資進展情況.

1900/1/1 0:00:00
金色趨勢丨BTC大牛開啟前的最后低吸機會?_區塊鏈:RBTC幣

BTC目前已完成了第三次產量減半,上圖為BTC2010-2020長期月線走勢,通過研究可以發現,每次減半前BTC價格均位于上一輪牛市頂點回落的斐波那契0.5壓制線下方運行.

1900/1/1 0:00:00
物聯網成高考熱搜專業 歐科云鏈徐明星:區塊鏈助力物聯網普及_區塊鏈:瑞波幣

7月7日,一年一度的高考終于拉開帷幕。據《百度2020年高考搜索大數據報告》顯示,2020年十大熱搜專業為:人工智能、機器人工程、電子商務、物聯網工程、大數據技術、網絡與新媒體、網絡空間安全、軟.

1900/1/1 0:00:00
金色趨勢丨BTC區間震蕩 高拋低吸_BTC:ETH

金色晚報 | 9月19日晚間重要動態一覽:12:00-21:00關鍵詞:俄羅斯、土耳其、Mask Network 1.俄羅斯央行:將延遲對加密貨幣交易所付款以遏制沖動投資; 2.

1900/1/1 0:00:00
TokenBetter公鏈TBChain即將上線_HAI:xycchain

TokenBetter公鏈(TBChain)即將上線。TBChain是TokenBetter研發團隊自主開發、結合比特幣與以太坊優勢、大幅優化性能的點對點分布式區塊鏈操作系統,它將作為基于區塊鏈.

1900/1/1 0:00:00
ads