以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > Uniswap > Info

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

Author:

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

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

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

Cardano錢包將與以太坊智能合約無縫集成:金色財經報道,Milkomeda首席技術官兼聯合創始人Sebastien Guillemot公布了區塊鏈互操作性協議的一項新功能:包裝智能合約(wrapped smart contracts)。該功能將允許開發人員直接從任何Cardano錢包(例如Flint錢包)調用以太坊智能合約編程語言Solidity,不需要用戶了解Metamask或其他EVM錢包,實現無縫集成。[2023/2/17 12:12:04]

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

多鏈智能合約平臺Astar Network在公共測試網上推出XVM:1月10日消息,多鏈智能合約平臺Astar Network在公共測試網上推出XVM,為構建在Astar Network上的項目提供了不同智能合約環境(如以太坊虛擬機(EVM)和WebAssembly(WASM))之間的無縫互操作性。

據悉,Astar Network支持使用EVM和WASM智能合約構建dApp,并通過跨共識消息傳遞(XCM)和跨虛擬機(XVM)為開發人員提供真正的互操作性。Astar Network共完成3輪總計3440萬美元融資,包括去年1月獲得2200萬美元融資,Polychain領投,Alameda Research、Gavin Wood等參投。[2023/1/10 11:03:54]

基于Cardano智能合約數量于2022年增長超300%:金色財經報道,截至11月26日,基于Cardano的智能合約平臺Plutus的智能合約總數為3791個。據Cardano區塊鏈Insights檢索的數據顯示,相較于2022年1月1日記錄的947個智能合約,智能合約數量在2022年增長了300%,即2844個。(finbold)[2022/11/28 21:05:35]

二、Fal1out“以假亂真?”

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

DAO Maker官方:將停止所有涉及客戶和客戶資產托管的智能合約操作:9月4日消息,官方消息,DAO Maker官方表示,將停止所有涉及客戶和客戶資產托管的智能合約操作。將使用類似于Polkastarter和大多數其他launchpad的方式。將只提供代幣發行,而不提供任何形式的質押、門戶或橋。此外,DAO Maker正在市場上獲取代幣,以 確保SHO參與者在未來發布中獲得代幣,以及支持今天受影響的項目。受影響項目的代幣價格大多已恢復到黑客攻擊前的水平。

此前消息,DAO Maker的Vesting合約遭到黑客攻擊,攻擊者最終獲利近400萬美金。[2021/9/4 23:00:09]

庫幣將支持KCS智能合約升級:據庫幣KuCoin交易所消息,為滿足KCS未來的發展需求, 賦予KCS參與DeFi、DEX等區塊鏈多元化生態的功能,庫幣將支持KCS的智能合約升級,升級將于1月14日進行,KCS持幣用戶將1:1獲得新合約代幣。同時,庫幣也將支持KCS品牌戰略升級。KuCoin Shares將更名為KuCoin Token,簡稱保持KCS不變,代幣logo也將更新。 KCS是未來庫幣去中心化金融服務的生態代幣。KCS是開啟庫幣生態的一把鑰匙,也是庫幣社區未來的治理代幣。KCS總發行量為2億個,當前流通量為80,118,638 KCS,當前總量為170,118,638 KCS。[2021/1/11 15:54:23]

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

圖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:OWNKCSNERASTiOWN Tokenkcs幣發行價MINER幣ASTAKE幣

Uniswap
人工智能:萬向區塊鏈肖風:數據要素市場與分布式AI平臺

編者按:本文來自萬向區塊鏈,Odaily星球日報經授權轉載。2020年7月10日,世界人工智能大會首個區塊鏈主題論壇圍繞“區塊鏈與AI的融合發展”、“區塊鏈與AI如何改變金融”、“國際區塊鏈的發.

1900/1/1 0:00:00
BTC:比特大陸昨天發生了什么系列13(決定命脈的497?)

比特大陸昨天發生了什么?詹方面拋出一份看起來對吳忌寒不利的法律文件,意圖不出意外是希望影響客戶、供應商與員工。因為資金緊張,只有銷售期貨方能回款進行后續動作.

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

編者按:本文來自金色財經,作者:Jason,Odaily星球日報經授權轉載。流動性挖礦并不是一個完全創新的概念,而是基于比特幣的挖礦概念而衍生發展的,顧名思義就是除了正常收益之外,用戶向DeFi.

1900/1/1 0:00:00
比特幣:BTC周報 | 以太坊鏈上錨定BTC總量已達1.5萬個;比特幣振幅繼續收縮(7.13-7.19)

比特幣振幅繼續收縮,分析師:將導致二級市場人氣繼續減少;活躍地址增加19%;歐元兌比特幣交易份額超過土耳其里拉,升至前三;比特幣挖礦難度大漲10%后全網算力下降.

1900/1/1 0:00:00
比特幣:大型機構與散戶意外合拍,防空警報已經拉響?

編者按:本文來自鏈聞ChainNews,星球日報經授權發布。7月18日,CFTC公布了最新一期的CME比特幣期貨周報,統計周期中BTC行情基本停滯,整周開始與結束時BTC價格幾乎沒有出現任何有效.

1900/1/1 0:00:00
COM:流動性挖礦與工作量證明對比

盡管流動性挖礦的概念已經存在一段時間,但一直不溫不火。然而,自Compound協議推出一個新的機制來向其用戶分發其新的治理代幣COMP后,這一概念便人氣暴漲.

1900/1/1 0:00:00
ads