以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > Ethereum > Info

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

Author:

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

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

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

首個利用RGB智能合約的比特幣NFT市場DIBA在主網啟動:金色財經報道,首個利用RGB智能合約的比特幣NFT市場 DIBA(Digital Bitcoin Art and Assets)在主網啟動,此次發布還包括比特幣錢包 BitMask,這是一種“僅限比特幣”的加密錢包,可以持有音樂和藝術數字資產。

據報道,DIBA的支持者包括 Draper Associates 創始人 Tim Draper、ACTAI Unicorn Fund 聯合創始人 Bill Tai、NIMA Capital 投資人 Yasmeen Drummond 和 Martial Eagle Fund CEO及聯合創始人 Erez Kalir 。[2023/5/19 15:13:00]

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

BonqDAO和AllianceBlock在攻擊事件中損失8800萬美元,因BonqDAO智能合約存在漏洞:2月2日消息,北京時間2月2日凌晨2點左右,由于BonqDAO智能合約中的一個漏洞,加密協議BonqDAO和AllianceBlock在攻擊事件中損失8800萬美元。黑客從BonqDAO的金庫(Troves)中移除了大約1.14億枚 walbt(AllianceBlock的封裝原生代幣)和9800萬枚beur代幣。該金庫由用戶控制,用于鑄造與歐元掛鉤的支付代幣beur。該漏洞利用的技術原因仍然未知。到目前為止,黑客已售出大約120萬美元的代幣,但由于流動性不足,無法將全部金額轉換為穩定幣或ETH。

AllianceBlock在推特上表示,該事件與BonqDAO金庫無關,其沒有違反智能合約。兩個團隊都致力于消除流動性以減輕黑客將被盜代幣轉換為其他資產的風險,并已停止所有交易所交易。AllianceBlock還暫停了AllianceBlock Bridge上的橋接,直到問題得到解決。下一步是對攻擊前的用戶進行快照,然后從快照那一刻起為所有受影響的用戶制定解決方案。這包括創建新的ALBT代幣并空投到快照中的地址。

今晨6時左右,BonqDAO發布公告稱:“Bonq協議遭到預言機黑客攻擊,利用者提高了ALBT價格并鑄造了大量BEUR。然后在Uniswap上將BEUR換成其他代幣。然后,價格下降到幾乎為零,這引發了ALBT金庫的清算。其他金庫未受影響。Bonq協議已暫停。我們正在研究一種解決方案,允許用戶提取所有剩余抵押品,而無需償還BEUR,該方案將在歐洲中部時間明天上午發布。”(The Block)[2023/2/2 11:42:06]

ICP將整合Threshold ESDSA簽名以使得Canister智能合約持有BTC和ETH:9月23日消息,ICP關于”將Threshold ESDSA簽名整合進ICP”的提案獲得通過,以使得Canister智能合約持有BTC和ETH并創建比特幣和以太坊交易。ESDSA功能將使得Canister智能合約擁有ESDSA公鑰,并就其進行簽名。相應的密鑰在持有Canister子網的節點進行閾值共享(threshold-shared)。提案的執行、測試、部署將持續數月時間,團隊將持續為社區更新進程。[2021/9/23 17:00:44]

二、Fal1out“以假亂真?”

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

攻擊者試圖利用Solend智能合約進行攻擊導致5名用戶被錯誤清算:Solana生態借貸協議Solend表示,8月19日北京時間20:40,攻擊者試圖利用Solend智能合約進行攻擊。Solend團隊及時發現并阻止了竊取資金的企圖,因此沒有資金被盜。攻擊者破壞了對UpdateReserveConfig函數的不安全身份驗證檢查,使幾乎所有賬戶都可以清算,并將所有市場的借入APY設置為250%。Solend的清算人錯誤地清算了5名用戶。這些用戶正在從清算人的不當收入(16,000美元)中獲得退款。針對此事件,Solend正在采取以下措施:增加漏洞賞金規模;構建更好的監控和警報服務。[2021/8/21 22:27:47]

現場丨張志勇:區塊鏈智能合約可將稅收法律代碼化:金色財經現場報道,12月28日,在由中國信息通信研究院和人民政協報文化傳媒有限責任公司主辦的“區塊鏈技術應用與發展主題座談會”上,國家稅務總局原副局長張志勇發言指出:區塊鏈技術因其可信 可查 可追溯 低成本 可聯盟 可內嵌等特性,一經推出就引起國家稅務部門高度重視。目前,區塊鏈電子發票已經得到廣泛應用。同時,他還指出:稅收管理現代化多方合作參與的要求與區塊鏈技術特點相吻合;區塊鏈技術有利于稅收管理信息對稱的要求;跨鏈服務和跨鏈交換信息滿足稅務資理與務開放互動的發展方向;區塊鏈信息的可靠性有利于改進稅務風險分析和應対;區塊鏈智能合約可將稅收法律代碼化,為稅人提高確定性,減少爭端。[2019/12/28]

圖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:OWNNERSOLBONOwndatasuperenergysol幣值得長期持有嗎SBONK幣

Ethereum
初識DAOHaus_DAO

WTFisDAOHaus?DAOHaus是一個DAO的服務平臺,你可以通過DAOHaus:免費創建屬于你自己的DAO,邀請成員加入,構建你的"王國".

1900/1/1 0:00:00
在加密市場中,參考匯率為什么重要?_ETH

編者按:本文來自加密谷Live,作者:KarimHelmyandtheCoinMetricsTeam,翻譯:凌杰,Odaily星球日報經授權轉載.

1900/1/1 0:00:00
區塊客周刊:2020最熱DeFi項目盤點;Polkadot生態大摸底_區塊鏈

2020.7.6第28期本期關鍵字:DeFi大盤點、AMM詳解、波卡生態大摸底、比特幣巨鯨、比特幣錨定幣、ETH2.

1900/1/1 0:00:00
行情分析:大盤震蕩上行,關鍵阻力位來了_BTC

本文來自:哈希派,作者:哈希派分析團隊,星球日報經授權轉發。金色財經合約行情分析 | BTC在12000美元下方窄幅盤整:據火幣BTC永續合約行情顯示,截至今日18:00(GMT+8),BTC價.

1900/1/1 0:00:00
Wirecard丑聞引發幣圈出入金渠道大震蕩,加密借記卡版圖新洗牌_加密貨幣

編者按:本文來自鏈聞ChainNews,撰文:氣昂昂,鏈聞編輯部其他同事亦對本文有所貢獻,星球日報經授權發布。財務漏洞高達21億美元的Wirecard毫無疑問是西方金融行業近期最大的丑聞.

1900/1/1 0:00:00
2020Q2數字資產衍生品交易所行業研究報告:合約交易競爭會更加激烈_數字資產

前言整體而言數字資產交易市場第二季度表現不如第一季度,主要原因在于六月一整個月市場波動極小,長時間處于橫盤狀態。比特幣減半帶來的市場情緒被消耗殆盡,賺錢效應較低的情況下,整個市場交易都較為冷清.

1900/1/1 0:00:00
ads