比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

Author:

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

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

在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。

現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?

在智能合約中,構造函數負責一些數據的初始化工作,owner值一般也會放在構造函數中進行初始化。

owner是智能合約擁有者的稱呼,也常被用來作為該合約的超級管理員。對代幣合約來說,owner可能被分配的權限有:鑄造/銷毀代幣、凍結代幣等。

如果開發者以錯誤的語法創建“構造函數”,造成構造函數缺失,致使“六耳獼猴”以假亂真,瞞過了開發者,最后使得攻擊者成為合約的擁有者,那么攻擊者便可依賴owner的權限,對代幣進行增發或銷毀等操作,進而可能造成整個代幣的崩盤。

Hedera:攻擊者對主網智能合約服務代碼攻擊,將用戶代幣轉至自己賬戶中:3月10日消息,Hedera披露攻擊細節,攻擊者對Hedera主網的智能合約服務代碼進行攻擊,將部分用戶賬戶持有的Hedera Token Service代幣轉移到自己的賬戶中。攻擊者的目標是在多個DEX上用作流動性池的賬戶,這些DEX使用Uniswap V2派生的合約代遷移過來使用Hedera Token Service,包括Pangolin Hedera、SaucerSwap和HeliSwap。

當攻擊者將通過攻擊獲得的代幣移動到Hashport Network Bridge時,Bridge運營者檢測到該活動并迅速采取行動將其禁用。為了防止攻擊者竊取更多代幣,Hedera已關閉主網代理,這會移除用戶對主網的訪問權限。

Hedera團隊已確定問題的根本原因并正在研究解決方案。 一旦解決方案準備就緒,Hedera委員會成員將簽署交易以批準在主網上部署更新代碼以消除此漏洞,屆時將重新開放主網代理并允許恢復正常活動。[2023/3/10 12:53:59]

一、構造函數簡介

網絡安全公司Halborn完成Apricot Finance智能合約審計:據官方消息,基于Solana網絡的去中心化貨幣市場平臺Apricot Finance與網絡安全公司Halborn完成外部審計。

Apricot Finance一直與網絡安全審計公司Halborn合作,以確保平臺的安全。Halborn的任務是對借貸平臺進行一系列安全測試,以防止任何低級漏洞。安全測試的范圍包括根據Apricot智能合約私有Github存儲庫中的代碼對風險和影響進行評估。經過Halborn團隊對代碼的手動審查以及自動化安全測試,Halborn對Apricot Finance協議的審計總體上取得了令人滿意的結果。Halborn的外部審計使Apricot在確保即將推出的主網安全性方面又邁進了一步。

據悉,Apricot Finance即將上線主網。Apricot由Lend、X-Farm和Assist三個產品組成。[2021/10/4 17:24:04]

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

BM:Clarion OS正開發序列化庫可提高EOSIO智能合約性能:EOS創始人BM(Daniel Larimer)發推稱,Clarion OS正在開發一個改進的序列化庫,可以通過減少CPU從數據庫加載、修改數據的成本來提高EOSIO智能合約的性能。注:Clarion OS為BM昨日宣布的新社交媒體項目。[2021/3/3 18:09:56]

以太坊Solidity0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor()public{},引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。

引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。

全國首款金交所區塊鏈智能合約產品落地:在供應鏈金融這個具有萬億級別規模的市場,天津金融資產交易所聯合恒生電子,實現了國內首例金交所區塊鏈業務場景的落地。這款產品的研發成功,標志著供應鏈金融已經進入了技術引領的金融科技時代,提供了由點到段,再到整個供應鏈鏈條的金融解決方案。[2018/6/20]

二、Fallout“以假亂真?”

–漏洞分析

下面以ethernaut靶場的Fallout題目為例進行分析。

一眼看去,這似乎是一個正常沒有漏洞的合約代碼,但經過仔細觀察發現,該合約存在一個致命錯誤——構造函數名稱與合約名稱不一致,Fallout合約的構造函數被寫錯成了Fal1out。

這樣的錯誤使其成為了一個被public修飾的普通函數,失去了構造函數僅在合約部署時被調用的特性,使得任何人都可以調用。該題目源碼如下圖所示:

深圳市金融科技協會理事:鼓勵建設基于區塊鏈和智能合約技術的綠色資產開發和綠色債券審核交易平臺:深圳綠金委副秘書長、深圳市金融科技協會理事黃曉寧在《證券時報》今日發文稱,深圳在新一輪的科技浪潮前遙遙領先,人工智能與金融科技領域蓬勃發展。可利用區塊鏈、大數據、云計算、人工智能、電子支付等新興技術,開展綠色金融業務創新、提升運行效率、有效防控風險,促進創新型綠色金融基礎設施平臺發展。鼓勵建設基于區塊鏈和智能合約技術的綠色資產開發和綠色債券審核交易平臺。[2018/6/16]

圖1

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

如下圖所示:

圖2

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

三、前車之覆

MorphToken事件分析

在過去也曾發生過類似的安全事件,包含著假構造函數的合約被成功發布到主鏈上,其中比較出名的是“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

四、后車之鑒

開發者應如何正確使用構造函數

建議更換Solidity0.4.22及以上版本,并使用正確的constructor()語法。

如下圖所示:

圖7

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

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

如下圖所示:

圖8

五、安全建議

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

1、開發者在編寫智能合約敏感函數時,應嚴格

按照官方要求的代碼書寫規范,注意不要出現字符錯誤等情況。

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

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

Tags:OWNNERERAEDEtown幣最新消息goldminer幣在哪個交易交易是跑路幣嗎Etherael指什么寓意Credefi

火必交易所
ETH繼續獨漲,行情還能持續多久?_NFT

作者|哈希派分析團隊 百威啤酒以30ETH的價格購買了Beer.eth域名并嘗試進軍NFT領域:金色財經報道,啤酒品牌百威啤酒現在正涉足NFT市場,今日,該公司修改了其推特簡介圖片.

1900/1/1 0:00:00
觀察 | 基于BCH網絡的USDT上線,已鑄幣600萬枚,可用但有優勢嗎?_SDT

告別兩次分叉時的激烈爭斗,BCH仿佛進入了一種與世無爭的佛系狀態。不過,根據Coindesk的分析,BCH在開發進展與社交媒體上的討論,還是要超過中文世界似乎更為風光的BSV.

1900/1/1 0:00:00
NXM暴漲背后:DeFi市場需求,還是炒作投機需求?_EFI

2020年,DeFi成為區塊鏈最大的風口,不斷增長的資金池很快就成為黑客眼中的寶藏。5個月,7次被盜,3500萬美元,DeFi成為了黑客提款機.

1900/1/1 0:00:00
為什么將穩定幣列入黑名單對DeFi百害而無一利?_SDC

來自|Decrypto,編譯|PANews最近,中心化穩定幣USDC發行方將某個地址列入黑名單,這種做法對于加密貨幣、尤其是目前蓬勃發展的DeFi行業意味著什么?2020年3月中旬.

1900/1/1 0:00:00
區塊鏈上半年投融資報告:融資總額同比增長113%,交易和支付類項目受青睞_區塊鏈

數據分析師?|Carol?視覺設計?|?Tina編輯|畢彤彤出品|PANews受“新冠”疫情的持續影響,2020年全球經濟發展不容樂觀.

1900/1/1 0:00:00
觀察丨沒有“中本聰共識”的流動性挖礦激勵機制靠譜嗎?_COMP

流動性挖礦并不是一個完全創新的概念,而是基于比特幣的挖礦概念而衍生發展的,顧名思義就是除了正常收益之外,用戶向DeFi市場中的借貸雙方提供系統流動性而獲得的獎勵.

1900/1/1 0:00:00
ads