買比特幣 買比特幣
Ctrl+D 買比特幣
ads

POSI:分析:Jet Protocol 任意提款漏洞_POSI價格

Author:

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

By:Johan@慢霧安全團隊

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

相關信息

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

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

法國以FTX破產為由考慮于明年10月對加密貨幣公司實施全面許可制度:金色財經報道,法國參議院財政委員會成員 Hervé Maurey 周二提出了一項修正案,該修正案旨在要求任何希望從事數字資產服務的提供商最遲在 2023 年 10 月在法國進行強制注冊。該修正案稱 FTX 最近的破產凸顯了任何加密資產投資的固有風險,法國目前兩級機制分為強制注冊和可選認證,允許加密貨幣公司在 2026 年之前在沒有完整許可證的情況下在該國運營。該修正案于本周在參議院通過,將于明年提交法國議會。[2022/12/15 21:47:33]

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

programs/jet/src/instructions/init_deposit_account.rs

美國司法部尋求阻止Celsius案的撤訴動議:金色財經報道,美國司法部在Celsius破產案中的代表希望阻止該公司為某些客戶重新開放提款的嘗試,直到獨立調查完成之后。

Celsius在本月初提交了一份動議,要求將資金返還給保管和扣留賬戶計劃中的客戶。美國受托人今天對該動議提出異議,稱 \"這些動議為時過早,應在審查員報告提交后再予以拒絕\"。(the block)[2022/10/1 18:36:35]

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

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

規則1:#

數據:Wintermute在2022 DeFi漏洞利用損失排行榜上位列第五:金色財經報道,據PeckShieldAlert分享數據顯示,遭黑客攻擊損失1.6億美元的Wintermute在2022 DeFi漏洞利用損失排行榜上位列第五,排在其前面損失金額最高的四個加密項目分別是Ronin Network(6.24億美元)、Wormhole Bridge(3.2億美元)、Nomad Bridge(1.9億美元)、以及BeanstalkFarms(1.82億美元)。[2022/9/21 7:10:58]

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

規則2:#

德克薩斯州比特幣礦工已恢復挖礦業務:金色財經報道,7月10日,應德州電力可靠性委員會(ERCOT)的要求,德州的比特幣礦工在該州決定節約能源后暫停了采礦作業。目前德克薩斯州的比特幣挖礦作業已經恢復。

據Argo區塊鏈首席執行官彼得·沃爾稱,在德克薩斯州運營的16家公司減少運營,并向電網提供了大約1000兆瓦的電力。(decrypt)[2022/7/20 2:26:06]

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

幣安減少了對區塊鏈游戲開發商Sky Mavis融資的投資:金色財經消息,幣安減少了對區塊鏈游戲Axie Infinity的開發商Sky Mavis融資的投資。(The Block)[2022/7/16 2:16:58]

使用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開發者,注意對賬號體系進行嚴密的審查。

Tags:POSIPOSDEPHORPOSI價格pos幣最低價格dep幣最新消息THORChain

火必交易所
MIC:MicroStrategy股東信:我們將“積極”買入更多BTC_區塊鏈專業畢業后到底做什么

點擊上方“藍色字”可關注我們!暴走時評:根據MicroStrategy首席執行官MichaelSaylor給投資者的信,MicroStrategy不會在短期內暫停購買和交易比特幣.

1900/1/1 0:00:00
UNA:LUNASwap質押挖頭礦教程_LUNA

關于WLUNA WrappedLuna(WLUNA)是一種以太坊代幣,旨在代表以太坊區塊鏈上的Terra(LUNA)。它不是LUNA,而是一個單獨的ERC-20令牌,旨在跟蹤LUNA的價值.

1900/1/1 0:00:00
元宇宙:SSID去中心化身份信用協議助推元宇宙金融生態_SYNC

2022年4月16日Syncscale召開的SSID去中心化身份信用協議助推元宇宙金融生態發布會圓滿落幕.

1900/1/1 0:00:00
RAVE:一文掌握卡牌鏈游Brave World推出的GameFi雙動態經濟模型_AVE

隨著去年如火如荼的GameFi大潮熄火后,碩果僅存的星鯊等項目也跌落神壇。Axie,Mobox等各個頭部項目也紛紛更改經濟模型,產出機制.

1900/1/1 0:00:00
HER:聽V神講述,那些以太坊沒有走的路_ETH

原文標題:《Theroadsnottaken》原文作者:VitalikButerin原文來源:VitalikButerin官網原文編譯:Kxp.

1900/1/1 0:00:00
ERO:解讀LayerZero:如何實現全鏈互操作性_LAYER

原標題:LayerZero-AnOmnichainInteroperabilityProtocol原作者:RyanZarick.

1900/1/1 0:00:00
ads