比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > FTT > Info

UUPSUpgradeable 漏洞分析_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

Web3數字時尚公司Muus Collective完成500萬美元融資,Griffin Gaming Partners領投:10月11日消息,Web3數字時尚公司Muus Collective宣布完成500萬美元新一輪融資,Griffin Gaming Partners領投,LionTree和Griffin Gaming Partners董事總經理Emily Wang將為該公司起步、推出Web3造型游戲和數字藏品提供支持。

據悉,Muus Collective由女性Web3創業者Sarah Fuchs創立,她曾擔任過時尚移動游戲平臺Covet Fashion副總裁兼總經理。該公司首款Web3游戲將于2023年中在iOS和Android平臺發布并探索NFT在旗下產品中的應用。(VentureBeat)[2022/10/11 10:31:20]

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

好萊塢制片人Niels Juul計劃制作一部完全由NFT提供融資的電影:12月3日消息,制作了《愛爾蘭人》的好萊塢執行制片人Niels Juul成立了一家名為NFT Studios的新公司,并希望制作一部完全由NFT提供融資的電影。該公司的首部電影“A Wing and A Prayer”將根據Brian Milton的真實故事改編,他是1998年乘坐微型飛機完成環球飛行的第一人。公司團隊在其網站上表示,該片有望于明年4月在馬耳他和倫敦開拍。據悉,Juul希望通過向公眾和機構投資者出售NFT籌集800萬到1000萬美元的資金。此外,NFT Studios與倫敦上市公司NFT Investments達成了一項協議,后者將出資100萬美元收購NFT Studios 20%的股份。(Forkast)[2021/12/3 12:49:40]

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

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

聲音 | Tuur Demeester:美聯儲向市場注入超1040億美元,相當于比特幣經損失調整后87%的市值:據華爾街日報報道,美國紐約聯邦儲蓄銀行周四(10月17日)向金融市場注入了1041.5億美元的臨時流動資金。此次干預分為兩個部分。其中一項是通過期限回購協議操作,該操作將持續15天,注入金額為306.5億美元;另一項是通過為期一天的回購操作進行的,總額達735億美元。對此,Adamant Capital創始合伙人Tuur Demeester評論稱,美聯儲僅僅此次的量化寬松注入金額就達到了1040億美元,這相當于比特幣經過損失調整后87%的市值。[2019/10/19]

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

}

Openzepplin的實現漏洞分析

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

公告 | 火幣韓國將于7月25日15:00開放UUU交易:據火幣韓國站官方公告,其將于7月25日15:00正式開放U Network (UUU)交易 ,上線UUU/BTC、 UUU/ETH交易對。行情顯示,UUU現全球市值達65,278,143 USD,排名第90。[2019/7/24]

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

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

Message-callintothisaccountwithanalternativeaccounts'code,butpersistingthecurrentvaluesforsenderandvalue

thismeansthatthereceipientisinfactthesameaccountasatpersent,simplythatthecodeisoverwrittenandthecontextisalmostentirelyidentical

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

從黃皮書的定義來看,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:IONENTCALALLIONZ價格AGENTSHIBAINU幣FysicalHIVALHALLA

FTT
吳說深度:dYdX 等去中心化衍生品爆發 解析用戶體驗、未來發展與不足_DYDX

吳說作者|吳卓鋮本期編輯|ColinWu1訂單簿vs.AMM上圖就是典型的訂單簿,CEX均采用訂單簿機制來決定資產公允價格.

1900/1/1 0:00:00
美 CFTC 指控 14 家公司未注冊或謊稱注冊期貨傭金商便提供交易服務_TRA

鏈聞消息,美國商品期貨交易委員會指控14家交易公司,稱其要么未注冊期貨傭金商,要么謊稱已注冊。其中12家未注冊FCM的公司包括Tradingforexpay、Cryptofxtrader、Bit.

1900/1/1 0:00:00
XT關于HAM合約更換完成的公告_COM

尊敬的XT用戶: HAM合約地址更換已完成,用戶在平臺的HAM資產已按照1:1的比例兌換為新合約的代幣.

1900/1/1 0:00:00
星球日報 | Facebook推出5000萬美元的新基金構建元宇宙;CryptoPunk #9997在佳士得以3385萬港元拍賣價成交(9月29日)_區塊鏈

頭條 CryptoPunk#9997在佳士得以3385萬港元拍賣價成交在佳士得舉行的主題為“NoTimeLikePresent”的拍賣中.

1900/1/1 0:00:00
美監管機構瞄準穩定幣,加強加密貨幣監管_加密貨幣

撰文:AndrewAckerman 來源:WSJ 編輯:南風 由于擔心穩定幣對于金融穩定帶來的潛在風險,美監管機構正在瞄準穩定幣,開始為更嚴格的加密貨幣監管奠定基礎。這可能會塑造數字貨幣的未來.

1900/1/1 0:00:00
MEXC關於2021年9月平臺幣MX回購銷毀情況的公示_BIT

尊敬的用戶: MEXC已按照計劃自2019年7月份起將平臺所有交易對交易手續費盈利部分的100%拿出來不定時從二級市場回購MX並在次月月初進行集中銷毀和公示.

1900/1/1 0:00:00
ads