By:Johan@慢霧安全團隊
據JetProtocol官方博客披露,他們近期修復了一個賞金漏洞,這個漏洞會導致惡意用戶可以提取任意用戶的存款資金,慢霧安全團隊對此漏洞進行了簡要分析,并將分析結果分享如下。
相關信息
JetProtocol是運行在Solana上的一個借貸市場,用戶可將賬號里的代幣存入金庫,賺取年化收益,同時也可以按一定的比例借出另一種代幣。在這個過程中合約會給用戶一個note憑證,作為用戶未來的提款憑證,用我們熟悉的字眼來說就是LP,而本次漏洞發生的原因也和這個LP的設計有關。
我們知道和以太坊合約相比,Solana合約沒有狀態的概念,取而代之的是賬號機制,合約數據都存儲在相關聯的賬號中,這種機制極大提升了Solana的區塊鏈性能,但也給合約編寫帶來了一些困難,最大的困難就是需要對輸入的賬號進行全面的驗證。JetProtocol在開發時使用了Anchor框架進行開發,Anchor是由Solana上的知名項目Serum團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。
至少三個美聯儲機構正在積極尋找CBDC相關人才:金色財經報道,與央行數字貨幣(CBDC)相關的工作正在全球范圍內涌現。最近的一項調查顯示,93%的央行表示有興趣探索CBDC,其中一些央行考慮在未來三年內發行。此外,至少三個美聯儲前哨機構正在積極尋找候選人加入他們的團隊,進行CBDC研究并改進當前系統,例如舊金山聯邦儲備銀行(高級加密架構師— CBDC)、波士頓聯邦儲備銀行(首席應用架構師- 數字貨幣)、克利夫蘭聯邦儲備銀行(高級應用架構師- CBDC)。[2023/7/25 15:56:09]
Anchor是如何工作的呢?我們可以從JetProtocol的一段代碼說起:
programs/jet/src/instructions/init_deposit_account.rs
分析師:哈薩克斯坦的電力系統已無法滿足BTC礦機的需求:金色財經報道,Hashrate Index分析師Jaran Mellerud表示,2020-2021 年,低成本電力、巨大的托管需求、廉價的中國設備以及寬松的監管和稅收優惠推動了該國的行業繁榮。然而,快速增長失去了控制,哈薩克斯坦的電力系統已無法滿足 1.5 GW 礦機的需求。從 2021 年到 2023 年,哈薩克斯坦在全球比特幣哈希率中的份額從 18% 下降到 4%。[2023/5/4 14:42:37]
這里的deposit_account賬號就是用于存儲LP代幣數據的賬號,用戶在首次使用時,需要調用合約生成該賬號,并支付一定的存儲費用。
而這里的?#?宏定義限定了這個賬號的生成規則:
BNB Chain官方橋遭黑客攻擊,共損失或約7.18億美元:10月7日消息,鏈上數據顯示,某地址從BNB Chain的“代幣中心”(TokenHub)系統合約分兩次共獲取了200萬枚BNB,并將其中90萬枚BNB在BNB Chain上借貸協議Venus進行抵押,借出6250萬BUSD、5000萬USDT、3500萬USDC。
此外,據社媒賬號CIAOfficer的獨立分析師表示,此次黑客攻擊目前包括104萬枚BNB、價值3.89億美元的venusBNB,以及2800萬美元BUSD,共7.18億美元。該金額為史上最大鏈上攻擊。[2022/10/7 18:41:38]
規則1:#
這個約束中,init是指通過跨合約調用系統合約創建賬號并初始化,payer=depositor意思是depositor為新賬號支付存儲空間費用。
Meta將于10月11日召開年度VR大會Connect:金色財經報道,Meta CEO扎克伯格發布消息稱,將于10月11日召開年度VR大會Connect。在海報中扎克伯格似乎戴著新頭盔,它可能就是Project Cambria,這是一款MR頭盔。上個月扎克伯格接受播客采訪時表示,今年秋天計劃推出Project Cambria。這款頭盔擁有強大的計算力,可以用攝像頭捕捉真實世界圖像并實時以彩色形式顯示在頭盔內部。[2022/9/8 13:15:20]
規則2:#
這個約束中將檢查給定帳戶是否是當前執行程序派生的PDA,PDA(ProgramDerivedAddress)?賬號是一個沒有私鑰、由程序派生的賬號,seed和bump是生成種子,如果bump未提供,則Anchor框架默認使用canonicalbump,可以理解成自動賦予一個確定性的值。
中非共和國將于7月25日啟動Sango平臺:金色財經報道,據一封發送給該國加密項目預注冊用戶的電子郵件顯示,中非共和國(CAR)將于7月25日啟動Sango平臺。郵件顯示,Sango平臺將作為眾籌、分發和社區支持工作的中心樞紐,用戶現在可以通過注冊并獲得KYC批準,獲得資格并為7月25日的正式發布做好準備。Sango是由CAR政府開發的國家加密貨幣項目,以Sango Coin (SANGO) 作為生態系統的原生貨幣。SANGO 總供應量為 210 億枚。
CAR 于 4 月成為第一個采用比特幣 (BTC) 作為法定貨幣的非洲國家。該國表示,它計劃使用 SANGO 加密貨幣將其龐大的礦藏代幣化。[2022/7/15 2:16:12]
使用PDA,程序可以以編程方式對某些地址進行簽名,而無需私鑰。同時,PDA確保沒有外部用戶也可以為同一地址生成有效簽名。這些地址是跨程序調用的基礎,它允許Solana應用程序相互組合。這里用的是"deposits"字符+?reserve?賬號公鑰+?depositor?賬號公鑰作為?seeds,bump?則是在用戶調用時傳入。
規則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開發者,注意對賬號體系進行嚴密的審查。
“一切皆有可能” 這是國貨之光,國潮品牌李寧的一直以來的Slogan,而李寧是“體操王子”李寧在1990年創立的專業體育品牌.
1900/1/1 0:00:00撰文:0xHamZ,前高盛員工 編譯:楊樹 Waves是加密領域最大的龐氏騙局,它以35%的利率借入USDC來購買自己的代幣WAVES,從而操縱了價格飆升.
1900/1/1 0:00:00點擊上方“藍色字”可關注我們!暴走時評:根據MicroStrategy首席執行官MichaelSaylor給投資者的信,MicroStrategy不會在短期內暫停購買和交易比特幣.
1900/1/1 0:00:00Web3的建設必須要充分調動人的參與,而人在其中的角色是可以自我主導和控制的,這就需要一種有別于Web2的身份體系,在Web3中我們稱其為去中心化身份.
1900/1/1 0:00:00作者:JackDing|W3.Hitchhiker修訂:Marina、Evelyn|W3.Hitchhiker本文以目前GameFi領域最常見的雙代幣模型為例.
1900/1/1 0:00:00月光島:來看看Moonbirds真的能夠成為下一個藍籌NFT嗎?Moonbirds都干了什么?2022年,今年NFT“破圈”與“合規”是NFT的大方向,現階段NFT內卷嚴重.
1900/1/1 0:00:00