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

POS:漏洞隨筆:通過Jet Protocol任意提款漏洞淺談PDA與Anchor賬號驗證_HOR

Author:

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

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

相關信息

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

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

Vyper漏洞導致另一個去中心化交易所成為攻擊的受害者:金色財經報道,據CertiK官方推特發布消息稱,Vyper漏洞導致另一個去中心化交易所成為攻擊的受害者。據悉:該攻擊者已獲益約1.4萬美金。[2023/8/13 16:23:29]

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

programs/jet/src/instructions/init_deposit_account.rs

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

美聯儲副主席布雷納德:波動性暴露出嚴重的加密貨幣漏洞:7月8日消息,美聯儲副主席布雷納德表示:波動性暴露出嚴重的加密貨幣漏洞,現在需要建立加密金融系統的健全監管基礎,不能等到加密貨幣生態系統變得如此龐大和相互關聯,以至于可能帶來金融穩定風險。加密貨幣活動需要按照類似風險、類似監管結果的原則進行監管,還必須解決與新技術有關的新風險。強有力的監管將使投資者和開發商能夠建立一個有彈性的數字原生金融基礎設施,重要的是監管機構在國內和國際上致力于維護金融系統的穩定和解決逃避監管的問題,加密平臺極易受到去杠桿化、拋售和情緒傳染的影響。現在是時候確定哪些加密活動以及在哪些約束條件下是被監管實體允許的。加密貨幣還沒有大到足以構成系統性風險,美聯儲密切關注加密貨幣領域的近期事件,央行數字貨幣(CBDC)可能對金融穩定有好處。[2022/7/8 2:00:57]

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

llluvium在Web3漏洞賞金平臺Immunefi推出漏洞賞金計劃:金色財經消息,llluvium在Web3漏洞賞金平臺Immunefi推出漏洞賞金計劃,獎金最高為15萬美元。[2022/6/16 4:30:09]

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

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

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

去中心化交易平臺DODO推出最高20萬美元的漏洞賞金計劃:官方消息,去中心化交易平臺DODO在Immunefi漏洞懸賞平臺推出最高20萬美元的漏洞賞金計劃。[2021/5/26 22:45:33]

規則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

區塊鏈媒體Coindesk已修復本周二無法更新的漏洞:知名區塊鏈媒體Coindesk發布聲明,就本周二網站無法更新作出解釋并表達歉意。據該網站透露,他們的工程師已經修復漏洞,目前已經恢復正常。[2018/1/17]

正常情況下,用戶調用函數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:DEPHORDEPOPOSDEPI3X Short Matic Tokenpos幣有那些

SAND
區塊鏈:金色早報 | 迪拜警察局發布NFT_future幣區塊鏈

頭條 ▌迪拜警察局發布NFT,成為全球首個推出數字資產的警察部門?????4月3日消息,據迪拜警察局官方社交媒體賬戶消息,迪拜警察局正式發行NFT,首批推出150枚,每個NFT都具有獨特的設計.

1900/1/1 0:00:00
ETHW:去全球化推動美元本位制終結 Web3成為新的全球化力量_KRO

我們可以感覺到世界上正在發生巨大的構造變化。人類在全球范圍內組織自己的方式已經發生了很多重塑和重新配置。有一個潛在的潮流正在定義這個階段變化是如何展開的: 去全球化.

1900/1/1 0:00:00
FTX:被忽視的角落:職業社交在Web3的未來_WEB

“工作為人們提供了生活所需,工作類型決定了他們在生活中、在‘社會’中的合理地位。”“工作是他們終其一生構建和捍衛的身份的核心.

1900/1/1 0:00:00
ETH:13條你必須關注的未來加密賽道_DAO

本文梳理自加密研究員pastry在個人社交媒體平臺上的觀點,律動BlockBeats對其整理翻譯如下:在加密世界,投資的時機至關重要,盡早進入一個新興行業或許是你獲得成功的最佳機會.

1900/1/1 0:00:00
區塊鏈:光明日報:依法應對元宇宙發展中的風險挑戰_人工智能

2021年以來,圍繞元宇宙的技術應用和產業投資日益成為社會關注的熱點。微軟、英偉達、臉書等國外科技企業已經開展布局元宇宙生態相關技術產品.

1900/1/1 0:00:00
INT:爐石玩家必看:你應該知道的鏈上卡牌游戲_Crypto20

GameFi的進入大眾視野得益于CryptoKitties,曾一度導致Ethereum崩潰的游戲.

1900/1/1 0:00:00
ads