以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > XLM > Info

漏洞隨筆:通過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團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。

Live Crypto Party項目遭到漏洞攻擊:金色財經消息,據CertiK監測,Live Crypto Party項目遭到漏洞攻擊。攻擊者(0x52d65)利用外部的function_transferOwnership() 函數,從中獲利10枚BNB(約3,000美元)。BSC質押合約地址: 0xFB2A9B3EEE6376F7095663B4D6ea8c39B634132A[2023/2/6 11:49:58]

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

programs/jet/src/instructions/init_deposit_account.rs

安全公司Least Authority披露Atomic Wallet存在安全漏洞,警告用戶注意風險:2月10日消息,安全審計公司Least Authority發布報告稱,加密錢包Atomic Wallet存在安全漏洞,提醒其用戶注意使用風險。

Least Authority于2021年初首次受聘檢查Atomic的系統設計及其相應的核心、桌面和移動編碼實現。該報告于2021年4月提交給Atomic,得出的結論是存在使用戶面臨“重大風險”的漏洞和不足。 Atomic在2021年11月發送一份回復,指出了他們的更新和改進。然而,在檢查Atomic的修復提交后,Least發現大量問題和建議仍未解決。

根據審計準則和披露政策,現在Least Authority正式向用戶發布警告,以警示風險。(CoinDesk)[2022/2/11 9:43:55]

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

動態 | Kava與Tendermint協商后確認存在安全漏洞 主網重新上線推遲72小時至11月15日:Kava 項目 CEO Brian Kerr 今日在官方社群表示,在與Tendermint團隊協商確認之后,確認目前 Kava 主網代碼中存在一個潛在的安全漏洞,為了安全起見主網上線將推遲 72 小時,之后將以新的鏈 ID 重啟,同時給驗證者足夠的時間更新創始文件。(區塊律動)[2019/11/12]

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

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

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

分析 | Cosmos SDK 嚴重安全漏洞初步分析:今天早晨,Cosmos 團隊表示在 Cosmos SDK 發現嚴重安全漏洞,已經在 Cosmos SDK 0.34.6 版本發布補丁,并會在 7-10 個工作日提供技術細節。Cosmos 團隊稱,正在協調進行 Cosmos 主網硬分叉應對該漏洞,在聯系驗證人確保在區塊高度 482100 時進行網絡轉換。經過Beosin成都鏈安分析,cosmos-sdk的github已經更新了0.34.6版本代碼,我們對更新代碼進行了初步分析,本次更新主要影響undelgate邏輯,原來的取消抵押邏輯會根據驗證器validator狀態,當status==Unbonded時會直接返回抵押資金,不需要等待贖回時間,在代碼更新后,當執行到區塊高度482100后會取消這個邏輯,取消抵押操作都會存在贖回時間;就目前來分析看,這個漏洞應該只影響取消抵押邏輯,導致可能提前贖回抵押資金,是否還存在其他危害,我們還在進一步分析。[2019/5/31]

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

動態 | 慢霧預警:高清視頻會議系統Zoom存在高危漏洞:據慢霧區消息,知名高清視頻會議系統 Zoom 被披露出現高危漏洞。該漏洞利用過程及漏洞概念驗證代碼(PoC),攻擊者可以在同網段或遠程,通過構造惡意 UDP 數據包,針對使用 Zoom 桌面版本(包括 MacOS、Linux、Windows)的用戶進行遠程控制等攻擊。慢霧安全團隊注意到數字貨幣相關項目方流行使用 Zoom 來進行遠程視頻會議,Zoom 官方已經發布新版本修復了這個漏洞,請注意及時更新。[2018/12/3]

規則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:HORPOSIPOSDEPODeFiHorsePosition TokenPOST

XLM
P2E 2.0:設計能夠自我進化的游戲經濟體_P2E

P2E2.0:設計能夠自我進化的游戲經濟體在我之前的文章《P2E是不可持續的--尋求下一個AxieInfinity》中,我預測初代P2E游戲經濟很可能在短期內崩盤.

1900/1/1 0:00:00
為何一張JPG圖片能價值千萬 新媒體藝術迎來爆發時刻?_元宇宙

2021年3月11日,數位藝術家Beeple的藝術品《每一天:前5000天》在佳士得拍賣行以6934萬美元的價格落槌,成為了世界上第一件在傳統拍賣行出售的純數字作品.

1900/1/1 0:00:00
2021區塊鏈應用創新TOP50_區塊鏈

國家隊推出的長安鏈、星火鏈、BSN聯盟鏈,性能超越國際主流公鏈的Conflux樹圖公有鏈,連續多年全球專利申請數名列第一的螞蟻鏈……在區塊鏈技術的幣圈、盤圈、鏈圈之爭中.

1900/1/1 0:00:00
數字人民幣試點再擴容:天津、重慶、廣州、福州、廈門、浙江等11個地區_數字人

移動支付網消息:3月31日,人民銀行召開數字人民幣研發試點工作座談會,宣布有序擴大數字人民幣試點范圍.

1900/1/1 0:00:00
科學和Web3:NFT是否提供了一種民主化和增加科學資助的方式?_NFT

介紹 擁有民主化的科學不是很好嗎?當然是!然而,許多人會說這是一個烏托邦的愿景,而不太可能成真.

1900/1/1 0:00:00
六大行發布2021年年報 數字人民幣相關進展全梳理_數字人

近日,各大行陸續發布2021年年報并召開了業績發布會,財報及發布會上紛紛透露了各大行作為數字人民幣運營機構在數字人民幣試點應用階段的相關進展,對此移動支付網進行了集中整理.

1900/1/1 0:00:00
ads