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

UUPSUpgradeable 漏洞分析_ION:ALL

Author:

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

本文作者:bixia1994

參考鏈接:UUPSUpgradeableVulnerabilityPost-mortem-General/Announcements-OpenZeppelinCommunity

EIP-1967

在UUPS中,其實現了EIP-1967

作為一個實現EIP-897的代理合約,其在代理合約中會實現這兩個函數。

UUPSEIP-1822

EIP-1822討論的合約升級模式與Openzeppelin的透明合約升級模式的不同點在于:EIP-1822的代理合約只讀取實現合約的地址,并將所有的方法都代理給實現合約,包括修改實現合約地址的邏輯部分也在實現合約里。而透明合約升級模式中,proxy合約管理著實現合約的地址,要實現合約升級,只需要在proxy合約中更改實現合約的地址即可。其他的邏輯代理給實現合約。

也就是說EIP-1822的實現合約既包含了普通的業務邏輯處理,更包含了自身的升級邏輯處理。簡單來講就是EIP-1822的實現合約部分,都需要繼承自一個公共的可升級實現合約:proxiable

NFT游戲Continuum World完成210萬美元融資:9 月 30 日,NFT 游戲 Continuum World 完成 210 萬美元融資,本輪融資由 Genblock、Shima Capital、X21 Digital、Basics Capital、Peech Capital、Pluto Ventures、VYSYN Capital、AU21 Capital、ZBS Capital、Metavest、Onchain Capital、Alves Ventures、OneMax Capital、Darkpool Ventures、Exnetwork 參投。[2021/9/30 17:17:09]

functionupgradeToAndCall(addressnewImplementation,bytesmemorydata)externalpayablevirtual{}function_authorizeUpgrade(addressnewImplementation)internalonlyOwner(){}

FUU于8月25日13:13上線ZG.COM:據官方公告,ZG.COM將于2020年8月24日13:13開放FUU的充幣和提幣業務,將于8月25日13:13開啟FUU/USDT交易對。

據悉,FUU是首款基于全球游戲娛樂行業為基礎開發而構建的分布式智慧通證,其主要應用于全球娛樂行業的數字籌碼流通、結算、應用以及翡翠金融業。FUU 是一個以龐大澳門實體產業鏈為核心依托、全開源分布式、致力于服務全球娛樂城、游戲等生態的價值通證。[2020/8/21]

其中,openzeppelin通過回滾檢測,來檢查是否升級成功,避免了EIP-1822中遇到的問題:

function_upgradeToAndCallSecure(addressnewImplementation,bytesmemorydata,boolforceCall)internal{//第一步:設置newImpl地址到實現合約地址addressoldImplementation=_getImplementation();_setImplementation(newImplementation);//第二步:針對新的實現合約地址進行初始化if(data

聲音 | Tuur Demeester:比特幣類似2003年的亞馬遜股票,處在后泡沫時代的牛市:在BitcoinExchangeGuide的最新分析文章中,比特幣資本方Adamant Capital的創始人Tuur Demeester把這一情形比喻做“比特幣的后泡沫牛市。”

Demeester將比特幣與亞馬遜股票作比較。亞馬遜股票同樣在1999年的100美元位下跌到2001年的10美元。2003年的互聯網泡沫破滅后,亞馬遜股票從20美元攀升至60美元,又在同年跌到40美元。在其后的四年,亞馬遜漲至100美元,并且在2009年漲至130美元。現在亞馬遜的股票價格是1883.51美元。像亞馬遜一樣,比特幣的價格當然會經歷波動,但是如今的比特幣是一個驚爆價。應當大力買入。[2019/9/8]

//第三步:執行回滾檢查//PerformrollbacktestifnotalreadyinprogressStorageSlot

}

Openzepplin的實現漏洞分析

動態 | EOS競猜游戲uugame遭隨機數攻擊:今天下午18:24-18:40之間,PeckShield安全盾風控平臺DAppShield監測到黑客向EOS競猜類游戲uugame發起連續攻擊,獲利數千EOS ,并已轉至幣安交易所。PeckShield安全人員在此提醒,新上線部署的游戲合約存在安全問題的可能性較大,開發者應在合約上線前做好安全測試,特別是要排除已知攻擊手段的威脅,必要時可尋求第三方安全公司協助,幫助其完成合約上線前攻擊測試及基礎安全防御部署。[2019/1/10]

在上述的Openzeppelin的實現中,其通過回滾檢測避免了EIP-1822中遇到的問題:即升級到一個不滿足EIP-1822規范的合約時,此時代理合約和實現合約就完全被鎖死,無法繼續升級。但是其又引入了一個新的問題,即:回滾操作中事實上模擬了一遍新的實現合約地址中的upgradeTo操作,并且是通過delegatecall方式來進行調用。

通過delegatecall調用新合約地址的upgradeTo方法有什么問題呢?

UUNIO準備構造UNIFUL Chain:今日(6月15日)韓國區塊鏈項目UUNIO稱準備開發區塊鏈平臺UNIFUL Chain。UNIFUL Chain是運用DPOS機制的區塊鏈,并可以在平臺中發行的UNIFULCoin可兌換基于ERC-20的UUNIO幣。[2018/6/15]

查看黃皮書中關于delegatecall的定義為:

Message-callintothisaccountwithanalternativeaccounts'code,butpersistingthecurrentvaluesforsenderandvalue

thismeansthatthereceipientisinfactthesameaccountasatpersent,simplythatthecodeisoverwrittenandthecontextisalmostentirelyidentical

從黃皮書的定義來看,delegatecall事實上保存了當前賬戶的余額和msg

functionmint(addressto,uint256amount)publiconlyOwner{_mint(to,amount);}function_authorizeUpgrade(addressnewImplementation)internalonlyOwneroverride{}}

注意這里的TestToken是UUPS升級合約的實現合約部分,而不是代理合約部分。那么應該如何去做這個TestToken的POC呢?

POC

這里不能直接在malicious合約中的upgradeTo方法中寫selfdestruct,而是應該利用ForceCall部分的delegatecall,并通過寫入rollbackTesting

function_authorizeUpgrade(addressnewImplementation)internal{}}

討論

那么在openzeppelin的UUPS實現中,使用delegatecall來進行回滾測試有什么問題呢?

問題就是:

Address

}

上述openzeppelin實現的代碼中,最為核心的一條是理解:當delegatecall到一個selfdestruct方法后,程序所有的代碼都會被直接清空,不會繼續往下執行,也就不會去執行后面的require判斷條件。

然而在remix中執行時,發現delegatecall之后的require語句還是執行了:

這是不對的,需要進一步理解黃皮書中關于selfdestruct這個opcode的定義:

selfdestruct:Haltexecutionandregisteraccountforlaterdeletion

function_functionDelegateCall(addresstarget,bytesmemorydata)privatereturns(bytesmemory){require(AddressUpgradeable

當delegatecall到一個selfdestruct的方法時,其返回值為0,然后代碼繼續運行。如果此筆交易在后續的執行過程中成功,則上下文地址上的代碼將會被清空。如果該筆交易在后續的執行過程中失敗,則整體狀態會回滾。

參考資料

bixia1994-互聯網小工:https://learnblockchain.cn/people/3295

UUPSUpgradeableVulnerabilityPost-mortem-General/Announcements-OpenZeppelinCommunity:https://forum.openzeppelin.com/t/uupsupgradeable-vulnerability-post-mortem/15680

ContractsWizard-OpenZeppelinDocs:https://docs.openzeppelin.com/contracts/4.x/wizard

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/10378667.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

每周編輯精選WeeklyEditors'Picks

Tags:IONENTCALALLIgnitionWall Street Decentral TokenCallisto NetworkALLWIN幣

BNB
AAX解讀NFT有漲有跌,但更多是在漲——日漸瘋狂的市場_NFT:NFTD價格

非同質化代幣現在在去中心化資產市場上大行其道,以其價格和–更重要的是–內在價值的面紗,被歸結為新的數字世界中藝術的漸進表現形式.

1900/1/1 0:00:00
美國CFTC破獲了一起大規模的外匯和比特幣交易騙局_比特幣:Cryptomeda

據Coinnounce10月2日報道,美國商品期貨交易委員會(CFTC)破獲了一起大規模的外匯和比特幣交易騙局,并對八名實施該計劃的個人提起民事執法指控.

1900/1/1 0:00:00
巴塞爾委員會:商業銀行應監測加密資產與相關傳統資產的價值差異_比特幣:以太坊

金色財經報道,根據巴塞爾委員會的咨詢文件,加密貨幣資產被分為“兩組/三類”。首先,文件判定第一組加密資產可以是代幣化的傳統資產,亦或是存在一個穩定機制的加密資產,其價值能掛鉤某類傳統資產;而未滿.

1900/1/1 0:00:00
遇見烏鎮 | VoneCredit洞見供應鏈金融新未來_Cred:sardinechain

9月10日,國務院新聞辦舉行新聞發布會,邀請有關人士介紹了2021年世界互聯網大會烏鎮峰會有關情況及籌備工作進展.

1900/1/1 0:00:00
TikTok將推出NFT系列_TIK:DETIK Token

金色財經的,TikTok正在推出一個NFT系列,將看到其頂級內容創作者與頂級NFT創作者合作。新發布的TikTok最佳時刻將包含六個“具有文化意義的TikTok視頻”,創作者包括LilNasX、.

1900/1/1 0:00:00
國慶狂歡月,嗨翻一整周:注冊交易即可領5000U&7日百萬紅包雨_USD:USDT

喜迎祖國誕辰,舉國歡慶,為感恩回饋支持平臺的新老用戶,慶祝國慶的到來,Orangex將開啟“國慶狂歡月,嗨翻一整周,注冊交易即可領5000U&7日百萬紅包雨”活動,國慶豪禮不斷.

1900/1/1 0:00:00
ads