比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > Uniswap > Info

ETH:走過最長的路竟是自己的套路:Alchemix事件分析_TER

Author:

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

By:yudan@慢霧安全團隊

據慢霧區消息,2021年06月16日,以太坊DeFi項目Alchemix的alETH合約疑似出現安全問題。17日,Alchemix發布了事故分析報告,慢霧安全團隊迅速介入分析,并在官方分析報告的基礎上梳理了本次事件的整個脈絡和核心關鍵點,供大家參考。

太長不看系列

本次分析文章很長。這里先說結論,方便大家有個大概的理解。本次事故的主要原因在于Alchemix通過transmuter添加了3次vault,導致收益信息記錄在了一個錯誤的元素上,而在調用transmuter的harvest函數時也沒有傳入正確的index值,導致通過錯誤的元素獲取了錯誤的收益,將錯誤的4300ETH的收益發送到adapter合約,幫助用戶償還了alETH的貸款,造成收益增多的問題,導致了悲劇。

核心分析——Round1

根據官方發布的事故分析報告,本次事故的原因是官方的alETH的部署腳本意外地創建了額外的vaults,導致Alchemix使用了vaults數組中錯誤的索引并計算出了錯誤的獎勵,導致transmuter把所有的獎勵用于償還了用戶的所有負債。我知道單單是這句簡短的分析讓人有點云里霧里,摸不著頭腦,所以我們只能把目標放在官方給出的交易中,看看能不能找到真相。

Sui主網將于5月3日20時正式上線:金色財經報道,Layer 1區塊鏈網絡Sui Network在推特上表示,主網將于北京時間2023年5月3日20時正式上線。[2023/5/1 14:36:56]

根據官方給出的交易,通過ethtx.info分析工具進行分析,我們不難發現,這筆交易調用了AlchemistEth合約的harvest函數,并且傳入了_vaultId=0這個參數,最后返回了

"4308144937764982868765"和"4308144937764982866415"這兩個值。

為了更加了解harvest函數的作用,我們需要對整個函數進行分析:

不難發現,harvest函數其實包含兩個重要的操作,分別是收獲獎勵和將獎勵分發給transmuter合約。其中vault是一個library庫合約,其中的harvest邏輯實現如下:

香港Web3Hub基金行政總裁:準備發起1億美元的Web3生態基金:4月14日消息,在2023香港Web3嘉年華分會場四《MetaEra x BitMart專場:Metaverse的機遇在哪里》分論壇中,香港Web3Hub基金行政總裁黃俊瑯先生發表致辭稱,將發起規模為1億美元的Web3生態基金,立足于香港,投資全球的完善項目,還將推動全球Web3規范發展。此外,在此前宣布的香港1000萬美元Web3Hub生態加速器中,會在第一期中投入100萬美元來支持各位創業者,開放申請時間為4月14日到5月14日。在過去兩個月中已經有350家Web3企業來到香港注冊,已經有100個戰略合作伙伴,預計將創造超過1000個就業機會。[2023/4/14 14:03:59]

通過代碼分析不難發現,vault庫合約的harvest函數其實是檢查了外部的adapter的總的資金量,然后根據adapter中的資金量減去用戶的充值數量計算出收益的部分。

這里我們可以將這個adapter理解為一個策略池,用于管理用戶的資金和收益。然后我們回到用戶一開始的AlchemistEth合約中的harvest函數,發現返回的"4308144937764982868765"?和?

"4308144937764982866415"這兩個值其實對應的就是vault庫合約的harvest函數計算出的需要提現的代幣數量和從adapter(策略池)中取回的代幣的數量。由于這個adapter對應的收益代幣是WETH,精度為18位,那么?"4308144937764982866415"?這個數值換算過來就是"4308.144937764982866415"?個WETH。

英國央行CBDC負責人:CBDC可以成為其他數字貨幣和TradFi之間的“橋接資產”:金色財經報道,當被問及潛在的國家發行的CBDC將如何與比特幣或資產支持的穩定幣共存時,英國央行的CBDC負責人Katie Fortune表示,統一的支付生態系統可以促進創新并帶來“所需求的新用例”。她認為,在穩定幣和其他數字形式貨幣的世界中,擁有一種中央銀行數字貨幣可以成為所有這些不同形式貨幣之間的橋梁資產,這可能真的很強大。這種統一性“只是一種社會公益”,而不是“某種政府控制問題”,這與當局已經提供的服務和基礎設施類似,“允許其他人做他們需要做的事情,為未來創新”。[2023/3/31 13:37:48]

也就是說,本次harvest操作,收益了超過4300個ETH的收益,然后這個收益在下一步中通過_distributeToTransmuter函數給到了transmuter合約進行分發,我們看下分發過程中的邏輯是怎樣的:

_distributeToTransmuter函數的邏輯只有簡單的3行,我們主要關注的是最后的外部調用——lowerHashMinted函數。該函數所對應的xtoken在這里指的是alETH本身。因為alETH本身是用戶通過借貸借出來的,所以lowerHashMinted這里的操作其實是使用harvest的收益將alETH總的貸出數量減少了,從而減少了每個用戶的貸款。總結來說就是用harvest4300ETH的收益償還用戶的alETH貸款。

Aave已在Goerli、Mumbai、Optimism和Arbritum測試網上部署V3.0.1版本:據官方推特,DeFi協議Aave已在Goerli、Mumbai、Optimism和Arbritum測試網上部署V3.0.1版本,想進行測試項目方和開發人員可在官網鏈接測試網模式。

此前金色財經報道,Aave團隊成員0xGraham.lens稱,Aave V3可能會于本周在以太坊主網上推出。[2023/1/19 11:20:20]

打個小總結

這里先總結下這個流程,就是AlchemistEth合約通過harvest函數,得到了4300ETH的收益,并將這個收益分發出去了,用于償還用戶的alETH貸款,導致了我們看到的情況——已經貸出alETH的用戶在不需要還款的情況下就可以拿回他們質押的ETH。那究竟是為什么,會有這4300ETH的收益呢?這多出來的4300ETH的收益是怎么來的?針對這個問題,我們開始下一輪的分析。

核心分析——Round2

要了解為什么會多出來4300ETH,就必須了解AlchemistEth的資金存儲過程。在AlchemistEth合約中,合約總的充值情況是使用Vaultlibrary庫的Data結構體進行記錄的,然后通過flushActiveVault函數更新對應的充值數量(totalDeposit)。

持有0.01枚以上ETH的地址數量達4個月新低:金色財經報道,Glassnode數據顯示,持有0.01枚以上ETH的地址數量達到22,301,911的4個月新低。[2022/8/23 12:41:59]

然后depositAll函數會將充值的代幣金額打到對應的adapter(策略池)中,那么在下一次harvest的時候,通過adapter(策略池)獲取的totalValue,就會是用戶的本金加上策略池的收益。為了計算收益過程中的本金部分,我們對官方給出的交易進行debug,發現本金僅為9000ETH,從adapter獲取的收益加上本金共有13000ETH,也就是說9000ETH的本金產生了4300ETH的收益。

但是,按照上面分析的邏輯,用戶的本金是不會產生那么大的收益的,問題肯定是出在了adapter獲取的totalValue。也就是說adapter不止只有AlchemistEth充值代幣,還存在其他的收益渠道。為了驗證我們的想法,慢霧安全團隊分析了adapter的所有代幣收入,果然發現了一筆異常的轉入行為,并且金額也能剛好對上多出的4300ETH的收益。也就是說,問題就在這里了。

通過查看交易數據,發現這是一筆調用harvest操作的交易,調用的合約是transmuter合約:

也就是說,是這個harvest函數出問題了,harvest函數的邏輯如下:

同樣是調用了vault的harvest函數,熟悉的配方,熟悉的味道。我們再次進行debug,發現一個驚人的事實——在進行收益的時候,vault的totalDeposit竟然為0,導致4300ETH的收益直接分發給了adapter,導致了adapter獲取的totalValue錯誤了,多了4300個ETH,原因就是在這里。

到了這里,我們已經很接近真相了,剩下要解決的就是為什么totalDeposit會為0?我們查詢了transmuter合約中能改變totalDeposit的地方,發現只有_plantOrRecallExcessFunds函數可以改變這個值,而這個函數上層調用的又是distribute函數。而transmuter合約的distribute函數是AlchemistEth合約在收益的時候進行調用的。也就是說本身的流程應該是:

1.AlchemistEth合約調用harvest進行收益

2.AlchemistEth合約調用transmuter合約的distribute函數記錄收益情況,并把收益部分給adapter

3.adapter收到了transmuter的收益,根據收益償還用戶的alETH的貸款

但是問題就出在了_plantOrRecallExcessFunds函數中。由于在記錄充值信息的時候,用的是_vaults.last()來獲取最新的vault,所以其實充值信息疊加在了最后一個元素上。但是項目方調用了三次setActiveVault函數,所以其實充值信息是疊加到了_vaults數組的3號元素,也就是index為2的vault元素上。但是在transmuter合約在harvest的時候傳入的_vaultId卻是0,0號元素是沒有任何充值記錄的,所以transmuter合約就誤將所有的收益都給了adapter了。導致了悲劇的發生。

總結

到這里,整個事情已經變得很清晰了,Alchemix項目方由于某種原因,通過transmuter添加了3次vault,導致收益信息記錄在了一個錯誤的元素上,而在調用transmuter的harvest函數時也沒有傳入正確的index值,導致通過錯誤的元素獲取了錯誤的收益,錯誤收益被發送到adapter合約,造成收益增多,導致了悲劇。

慢霧安全團隊在此提醒,DeFi是一個復雜的系統,在進行DeFi操作的時候,要記得檢查好業務邏輯中的每一個流程,防止意外的發生,在必要的時候可以聯系專業的安全團隊進行專業的安全審計,防止事故的發生。

Tags:ETHTERARVVESTAIKULAETHVetter SkylabsMARVIN價格下輪牛市waves幣預測漲多少

Uniswap
DEX:去中心化社區成長的煩惱_COI

去中心化的組織的特點之一就是可以將工作分配給社區成員,而不是完全由自上而下的決策機制來驅動。雖然代幣Token在財務上對參與者的貢獻給予了相應的報酬作為激勵,鼓勵社區成員一起創造價值,但對于草根.

1900/1/1 0:00:00
比特幣:金色早報 | 西班牙銀行巨頭BBVA將在瑞士推出比特幣交易和托管服務_AUSDT幣

頭條 中國背景比特幣礦池算力繼續下降或因四川礦機被集體斷電所致btc.com數據顯示,當前比特幣全網平均算力126.83EH/s,相比歷史最高點197.61EH/s已經跌去近36%.

1900/1/1 0:00:00
BTC:金色觀察 | 四川發布禁令后 中國BTC算力大幅下降_ZT.com

概要 1.?全球五大BTC礦池中的螞蟻礦池、幣印和BTC.com礦池實時算力自6月以來下跌了10-22%。2.?此次大幅下跌似乎是因為四川省政府在星期五出臺了挖礦禁令.

1900/1/1 0:00:00
比特幣:比特幣下探3.54萬美元“死亡交叉”迫在眉睫 巨鯨仍在逢低囤幣_加密貨幣市場最新消息新聞

市值最大的加密貨幣比特幣現在已經抹去了一周內取得的所有收益。比推終端數據顯示,美東時間周五,比特幣價格跌破36,000美元的支撐位,最低下探至35,431.15美元,較前一交易日的平均價下跌近3.

1900/1/1 0:00:00
數字貨幣:數字貨幣指標媒體幣投中國上線,USDT抽獎給您別樣端午情_區塊鏈技術專業

幣投中國是服務于區塊鏈最新技術資訊和行業政策的媒體平臺,為區塊鏈創業者、投資者提供信息、交流、投融資服務以及媒體宣傳,報導區塊鏈技術、數字貨幣、交易等最新資訊、行情.

1900/1/1 0:00:00
比特幣:特朗普和薩爾瓦多財政部長眼中的比特幣_區塊鏈的未來發展前景視頻

2021年6月7日美國前總統特朗普在訪談中說到比特幣是欺詐事件,必須強監管,他同時表示比特幣正在挑戰美元,而他堅持支持美元.

1900/1/1 0:00:00
ads