加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > FIL > Info

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

Author:

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

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

相關信息

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

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

Alexa Pro項目遭到漏洞攻擊,損失45枚BNB:金色財經消息,據CertiK監測,Alexa Pro項目遭到漏洞攻擊,損失45枚BNB (約1.3萬美元)。目前的證據表明,價格操縱是導致該事件的原因。BSC合約地址: 0x76c82Eef290f8de6E230cbaddf508f16c202b52B[2023/3/5 12:42:57]

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

programs/jet/src/instructions/init_deposit_account.rs

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

Web3音樂項目Melody遭黑客攻擊,漏洞現已修復:10月25日消息,Web3音樂項目Melody合約于北京時間凌晨一點受到黑客攻擊,代幣SNS被盜,價格一度下跌35%。Melody團隊宣布于北京時間凌晨兩點修復漏洞,表示已經聯合抹茶交易所凍結黑客資產,并于早上10點恢復提幣功能。

SNS代幣價格回升,目前報價0.09美元,24h漲幅為50%。[2022/10/25 16:38:10]

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

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

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

Optimism與Immunefi合作推出200萬美元漏洞賞金計劃:1 月 14 日,以太坊 L2 解決方案 Optimism 與 Immunefi 合作推出 200 萬美元漏洞賞金計劃,旨在審計 Optimism 是否存在潛在漏洞。[2022/1/14 8:49:42]

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

規則3:#

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

Gelato Network:Sorbet Finance合約出現嚴重漏洞,請用戶盡快采取行動:12月12日消息,以太坊智能合約自動執行工具Gelato Network發推稱,我們收到警報說Sorbet Finance的G-UNI路由器合約有嚴重漏洞。此漏洞只影響與Sorbet UI交互的用戶。沒有資金損失。如果您在Sorbet上持有任何頭寸,請立即采取行動。在完成以下步驟之前不要發送任何其他交易,否則資金將處于風險中:登錄Sorbet Finance/#/pools,遵循指導撤銷您給予存在風險合約的所有授權。

官方稱,在收到來自白帽黑客samczsun的警示后,一直在與Yash Shah(Lemma Finance聯合創始人)合作進行白帽回收,將所有潛在的易受攻擊的資金轉移到一個安全的托管合約中,這樣用戶可以很快從該合約中收回資金。[2021/12/12 7:33:40]

Account的宏定義還有很多,這里略表不提,詳細可以考慮文檔:https://docs.rs/anchor-lang/latest/anchor_lang/derive.Accounts.html

聲音 | 學習時報:要警惕區塊鏈技術帶來的制度監管風險、法律漏洞等5種安全風險:12月18日,學習時報刊文《積極做好區塊鏈技術的安全風險評估及治理》。文章指出,區塊鏈技術的前景十分值得期待。但同時,我們要警惕區塊鏈技術帶來的制度監管風險、法律漏洞、社會風險、金融風險和意識形態風險。

為使區塊鏈技術穩健發展,我們非常有必要從上層建筑的角度,對區塊鏈技術安全風險的治理提出相應對策。1.在制度層面,國家應拓寬區塊鏈技術的法律法規覆蓋;2.社會層面,政府應積極發揮對區塊鏈技術治理的優勢效用;3.思想層面,積極發揮價值引領作用。

總而言之,我國必須從實際出發,準確把握技術和產業發展趨勢,多方面多層次加強對區塊鏈技術的規劃和引導,才能有力應對區塊鏈技術帶來的安全風險,維護國家的長治久安。[2019/12/18]

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

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:POSIDEPHORPOSPosition TokenDEPEBSHORT

FIL
當消費遇到元宇宙 蹭概念還是新風口?_元宇宙:Archimedes Finance

“元宇宙”新概念的興起,正醞釀新一輪變革。隨著國外Facebook、微軟等企業押注元宇宙,網易、華為、字節跳動等國內巨頭也宣布相繼入局,元宇宙已成為下一個互聯網風口,吸引越來越多玩家的加入,看似.

1900/1/1 0:00:00
M2E模式成為當下熱門 哪些項目值得關注?_TOKE:KEN

隨著P2E的流行,越來越多的XToEarn模式逐漸成為了當下流行的趨勢,特別是MoveToEarn項目的出現創造了一種鏈上世界與現實世界聯系更為緊密的體系.

1900/1/1 0:00:00
金色早報 | Ronin橋被攻擊17.36萬枚ETH和2550萬USDC被盜_區塊鏈:加密貨幣市場是什么行業

頭條 ▌Ronin橋被攻擊,17.36萬枚ETH和2550萬USDC被盜3月29日消息,AxieInfinity側鏈Ronin發文表示驗證者節點遭入侵.

1900/1/1 0:00:00
英偉達的春季發布會 讓元宇宙有了希望_RACE:trace幣為什么暴漲

3月22日,玩家和AI從業者們又愛又恨的老黃,帶著他的新“核彈”來了。遺憾的是,這次的新“核彈”與玩家沒有太大關系,主要是針對企業和工業市場,與玩家有關的RTX40系估計最快也要等到9月份才會有.

1900/1/1 0:00:00
除了OpenSea 上榜《時代》百大影響力企業的還有哪些元宇宙公司?_區塊鏈:Tether EUR

今年《時代》雜志的100大最具影響力企業榜單已經出爐,律動BlockBeats整理翻譯了其中和加密、元宇宙相關的公司以及《時代》給出的評語:OpenSea:給NFT加把火 一件以Scooter主.

1900/1/1 0:00:00
全面拆解AVAX:從共識到子網 動態與項目分享_ALA:ANC

令人驚訝的是,雖然核心的操作機制非常簡單,但這些協議卻帶來了非常理想化的系統結果,使它們適合大規模部署.

1900/1/1 0:00:00
ads