買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > UNI > Info

DEPO:分析:Jet Protocol 任意提款漏洞_HOR

Author:

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

By:Johan@慢霧安全團隊

據JetProtocol官方博客披露,他們近期修復了一個賞金漏洞,這個漏洞會導致惡意用戶可以提取任意用戶的存款資金,慢霧安全團隊對此漏洞進行了簡要分析,并將分析結果分享如下。

相關信息

JetProtocol是運行在Solana上的一個借貸市場,用戶可將賬號里的代幣存入金庫,賺取年化收益,同時也可以按一定的比例借出另一種代幣。在這個過程中合約會給用戶一個note憑證,作為用戶未來的提款憑證,用我們熟悉的字眼來說就是LP,而本次漏洞發生的原因也和這個LP的設計有關。

我們知道和以太坊合約相比,Solana合約沒有狀態的概念,取而代之的是賬號機制,合約數據都存儲在相關聯的賬號中,這種機制極大提升了Solana的區塊鏈性能,但也給合約編寫帶來了一些困難,最大的困難就是需要對輸入的賬號進行全面的驗證。JetProtocol在開發時使用了Anchor框架進行開發,Anchor是由Solana上的知名項目Serum團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。

Rocket_Pool的rETH在7月24日發生最大單日贖回:金色財經報道,據21Shares母公司21co鏈上分析師Tom Wan在社交媒體披露數據顯示,Rocket_Pool的rETH在7月24日發生單日最大贖回,燃燒了67.2萬枚rETH;隨后他將7100枚ETH(1310萬美元)發送至幣安。[2023/7/28 16:04:00]

Anchor是如何工作的呢?我們可以從JetProtocol的一段代碼說起:

programs/jet/src/instructions/init_deposit_account.rs

這里的deposit_account賬號就是用于存儲LP代幣數據的賬號,用戶在首次使用時,需要調用合約生成該賬號,并支付一定的存儲費用。

Web3 DEX聚合器OpenOcean集成zkSync Era:4月27日消息,Web3 DEX 聚合器 OpenOcean 宣布已集成以太坊二層 ZK-Rollup 擴展解決方案 zkSync Era,OpenOcean 的應用程序接口(API)、軟件開發包(SDK)將能在 zkSync 主網上無障礙使用,后續 OpenOcean 將進一步提升對 zkSync Era 生態系統的支持,并納入 Limit 訂單和跨鏈 Swap 聚合等更多功能。

OpenOcean 稱在 zkSync Era 上已集成 SyncSwap、Velocore、Mute、SpaceFi、iZiSwap 和 GemSwap 等 DEX 的約 1.06 億美元流動性,用戶在 zkSync Era 上交易代幣時,OpenOcean 將通過分析和比較所有可用的方式并找到最佳路線實時報價。[2023/4/27 14:31:16]

而這里的?#?宏定義限定了這個賬號的生成規則:

SmartMoney和套利者通過Vitalik拋售SHIK后引發的價格波動進行套利:金色財經報道,據Lookonchain監測,在昨日Vitalik地址拋售約5萬億枚SHIK后,SHIK的價格暴跌近80%,某些SmartMoney和套利者立即以非常低的價格買入SHIK,然后賣出。其中一個SmartMoney地址在SHIK以14枚ETH賺了96枚ETH,另一名套利者用6枚ETH賺了89.6枚ETH。[2023/3/8 12:49:11]

規則1:#

這個約束中,init是指通過跨合約調用系統合約創建賬號并初始化,payer=depositor意思是depositor為新賬號支付存儲空間費用。

規則2:#

這個約束中將檢查給定帳戶是否是當前執行程序派生的PDA,PDA(ProgramDerivedAddress)?賬號是一個沒有私鑰、由程序派生的賬號,seed和bump是生成種子,如果bump未提供,則Anchor框架默認使用canonicalbump,可以理解成自動賦予一個確定性的值。

比特幣協會宣布任命一系列高管職位:金色財經報道,比特幣協會宣布任命Cyrille Albrecht為董事總經理,Ewa Merino為財務和運營總監,Marcin Zarakowski為執行委員會的新成員。

Cyrille擁有超過20年的高級IT經驗,最近擔任Taal的首席技術官,他將幫助比特幣協會在全球范圍內發展。Ewa將積極參與比特幣協會管理和業務發展的各個方面,從財務和運營到營銷和人力資源。Marcin將在比特幣協會被提拔到執行委員會。[2023/2/2 11:43:15]

使用PDA,程序可以以編程方式對某些地址進行簽名,而無需私鑰。同時,PDA確保沒有外部用戶也可以為同一地址生成有效簽名。這些地址是跨程序調用的基礎,它允許Solana應用程序相互組合。這里用的是"deposits"字符+?reserve?賬號公鑰+?depositor?賬號公鑰作為?seeds,bump?則是在用戶調用時傳入。

DODO的USDT/DAI流動性池中疑似存在嚴重的三明治攻擊:11月1日消息,Balancer DAO技術負責人Mike B發推稱,去中心化交易平臺DODO的USDT/DAI流動性池中發生了一些嚴重的三明治攻擊,該池流動性不足1000萬美元,日交易量卻高達5000萬至1億美元,原因便是MEV(最大可提取價值),“更糟糕的是當用戶在新瀏覽器中加載DODO時,默認滑點為3%,而不是默認為自動設置為更合適的0.1%”。[2022/11/1 12:04:15]

規則3:#

這是一個SPL約束,用于更簡便地驗證SPL賬號。這里指定deposit_account賬號是一個token賬號,它的mint權限是deposit_note_mint賬號,authority權限是market_authority。

Account的宏定義還有很多,這里略表不提,詳細可以考慮文檔:

https://docs.rs/anchor-lang/latest/anchor_lang/derive.Accounts.html

有了這些前置知識,我們就可以直接來看漏洞代碼:

programs/jet/src/instructions/withdraw_tokens.rs

正常情況下,用戶調用函數withdraw_tokens提幣時,會傳入自己的LP賬號,然后合約會銷毀他的LP并返還相應數量的代幣。但這里我們可以看到deposit_note_account賬號是沒有進行任何約束的,用戶可以隨意傳入其他用戶的LP賬號。難道使用別人的LP賬號不需要他們的簽名授權嗎?

通過前面分析宏定義代碼,我們已經知道了market_authority賬號擁有LP代幣的操作權限,確實不需要用戶自己的簽名。那么market_authority又是一個怎么樣的賬號呢?我們可以看這里:

programs/jet/src/instructions/init_market.rs

這個market_authority也是一個PDA賬號。也就是說合約通過自身的調用就可以銷毀用戶的LP代幣。那么對于惡意用戶來說,要發起攻擊就很簡單了,只要簡單地把deposit_note_account賬號設置為想要竊取的目標賬號,withdraw_account賬號設置為自己的收款賬號,就可以銷毀他的LP,并把他的存款本金提現到自己的賬號上。

最后我們看一下官方的修復方法:

補丁中并未直接去約束deposit_note_account賬號,而是去除了burn操作的PDA簽名,并將authority權限改成了depositor,這樣的話用戶將無法直接調用這里的函數進行提現,而是要通過另一個函數withdraw()?去間接調用,而在withdraw()?函數中賬號宏定義已經進行了嚴密的校驗,惡意用戶如果傳入的是他人的LP賬號,將無法通過宏規則的驗證,將無法通過宏規則的驗證,因為depositor需要滿足signer簽名校驗,無法偽造成他人的賬號。

programs/jet/src/instructions/withdraw.rs

總結

本次漏洞的發現過程比較有戲劇性,漏洞的發現人@charlieyouai在他的個人推特上分享了漏洞發現的心路歷程,當時他發現burn的權限是market_authority,用戶無法進行簽名,認為這是一個bug,會導致調用失敗且用戶無法提款,于是給官方提交了一個賞金漏洞,然后就去吃飯睡覺打豆豆了。

而后官方開發者意識到了問題的嚴重性,嚴格地說,他們知道這段代碼沒有無法提現的漏洞,而是人人都可以提現啊,老鐵,一個能良好運行的bug你知道意味著什么嗎?!所幸的是沒有攻擊事件發生。

目前在Solana上發生過多起黑客攻擊事件均與賬號校驗問題有關,慢霧安全團隊提醒廣大Solana開發者,注意對賬號體系進行嚴密的審查。

Tags:POSIDEPOHORDEPposi幣是哪國的項目ANCHOR價格onekeydepay

UNI
ROL:以太坊合并后,哪些應用可能成為游戲規則改變者?_以太坊

原標題:ETH2.0合并之后,這些類型的應用將成為游戲規則改變者撰文:@CroissantEth 編譯:Kyle 這篇文章的主題適用于那些喜歡「超前思考」的人。以太坊正在發生變化,而且變化很快.

1900/1/1 0:00:00
ARI:Ariva—與加密貨幣結合的新時代的旅游網絡_gari幣騙局

??Ariva是一個旨在積極用于全球和當地旅游和旅游業的項目。它提供了一個全球旅行和旅游網絡,用戶可以通過過去的旅行經歷、評論和加密貨幣預訂與所有相關的服務提供商會面.

1900/1/1 0:00:00
REA:黑客能調用,你和我也可以?Starstream被盜1500萬美元事件分析_STAR

北京時間4月8日凌晨01:43:36,CertiK安全技術團隊監測到收益聚合平臺Starstream因其合約中的一個執行函數漏洞被惡意利用,致使約1500萬美元的資產受到損失.

1900/1/1 0:00:00
CAR:Cardano區塊鏈一個月內新增400個項目和10萬個錢包_Cardano Comics

Cardano(ADA)區塊鏈上的活動開始升溫,在過去的一個月里,有400個新項目正在開發,同時有10萬個新錢包被創建.

1900/1/1 0:00:00
RON:讀懂以太坊銷毀榜“無名高手”StrongBlock_TRO

作者:iambabywhale.eth自以太坊采用EIP1559之后,銷毀的以太坊已經超過了200萬枚,而以太坊的銷毀量也成了很多人判斷項目熱點的一個指標.

1900/1/1 0:00:00
CAS:Tornado Cash混幣后的資產如何快速追蹤?_ATMCASH價格

據成都鏈安監測到的數據統計,2022年第一季度,攻擊類安全事件造成的損失高達約12億美元,較去年同期的1.3億美元上漲約9倍,加密貨幣黑客盜竊事件更是一波未平一波又起.

1900/1/1 0:00:00
ads