以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > BNB價格 > Info

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

Author:

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

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

相關信息

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

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

Axie Infinity開發公司Sky Mavis啟動漏洞賞金計劃,最高獎金達100萬美元:4月13日消息,Axie Infinity開發公司Sky Mavis啟動漏洞賞金計劃,覆蓋智能合約以及前端漏洞。其中智能合約漏洞包括重入攻擊、預言機攻擊等,獎金從1000美元至100萬美元不等,取決于漏洞嚴重程度,若獎金為100萬美元,則將分為6個月釋放;Web以及應用界面漏洞獎金從50美元至1.5萬美元不等,取決于漏洞嚴重程度。此外,Sky Mavis團隊表示,還可能會為特殊的漏洞報告獎勵額外的獎金。所有獎金均通過AXS支付。[2022/4/13 14:20:39]

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

programs/jet/src/instructions/init_deposit_account.rs

DeFi協議Sovryn在Immunefi平臺提供漏洞賞金活動:3月3日消息,智能合約漏洞賞金平臺Immunefi發推稱,基于比特幣的DeFi協議Sovryn加入Immunefi平臺,提供最高125萬美元的加密賞金。Sovryn在該活動的前30天為智能合約和區塊鏈相關漏洞支付額外的獎金。獎金輪次按7天劃分,每輪結束時獎金減少5個百分點。[2021/3/3 18:11:07]

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

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

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

獨家 | 數據顯示眾籌項目Enhanced Society存在多處智能合約安全漏洞:區塊鏈項目評級機構RatingToken最新數據顯示,2018年7月23日全球共新增5328個合約地址,其中351個為代幣型智能合約。在RatingToken發布的最新“新增代幣型智能合約風險榜”中,位于排行榜第三名的Enhanced Society雖致力于解決信息的真實性問題,通過以太坊密鑰對用戶發布的信息進行簽名,信息的發布日期、內容和標題也包含在簽名哈希中以確保信息的不可篡改,但合約本身漏洞較多,RatingToken安全團隊已檢測到12個安全漏洞,存在整數溢出漏洞及資金被盜風險,能否保障用戶信息安全還有待考證;風險榜TOP10的還包括EvaUSD、TBB、500m、Kreos、OTCC、TEA和Safe Pay Wallet,皆為代幣型合約,且合約代碼均相同;此外,TOP 100的危險合約中有44個為Fomo 3D山寨合約,創建24小時內交易數達1865筆,涉及資金超過190ETH,可見龐氏騙局游戲熱度不減,投資人仍需警惕,更多詳情請查看原文鏈接。[2018/7/24]

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

動態 | Steem修復停滯漏洞:據github,針對上周Steem網絡在區塊高度23847548處停滯事件,團隊已確認原因并發布補丁修復漏洞。目前Steem網絡已恢復正常。此前,一名為@nijeah的賬戶在七天前嘗試提交一份無效交易記錄,系統根據既定規則在七天后拒絕了這一申請,并暫停了改賬戶及目擊節點的交易。為恢復網絡的正常運行,Steem開發團隊在目擊節點的幫助下,迅速鎖定問題根源,并在事發后的幾小時內發布補丁。昨日,UPbit及貨幣pro暫停了Steem充提幣。[2018/7/4]

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

金色財經現場報道 360官方人員現場展示如何攻擊EOS漏洞:金色財經現場報道,EOS區塊鏈平臺漏洞媒體溝通會上,360官方人員現場展示了是如何攻擊的,攻擊展示圖片見下圖。[2018/5/29]

規則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:DEPPOSIDEPOPOSDEPI幣Position TokenPosscoin

BNB價格
一文讀懂強勢崛起的老牌公鏈 Waves_WAVES:ELVES價格

從Waves起源、市場、主要生態應用進行介紹,并著重聚焦于穩定幣USDN的設計。很多人將俄烏戰爭與Waves代幣價格的上漲聯系在一起,拋除新聞層面的炒作,從產品功能分析上,目前的Waves的確可.

1900/1/1 0:00:00
NFT “帶單”老師 法律風險知多少?_DEF:Mazuri GameFi

NFT和數字藏品由于自身具有獨特性、不可分性、稀缺性等特征,其價值往往由買賣雙方的主觀意識決定,波動較大且沒有特定規律,這也是NFT僅能作為具有價值的特定物,而不能充當一般等價物的原因.

1900/1/1 0:00:00
Messari:詳解 Mina 技術特點、運作機制與經濟模型_MINA:ZINARI

重要見解 傳統的區塊鏈在存儲不斷增長的數據方面效率低下。這種狀態膨脹問題會對網絡的去中心化產生負面影響,因為能夠參與鏈驗證的用戶更少。Mina協議是解決狀態膨脹問題的新一代layer1區塊鏈.

1900/1/1 0:00:00
中國電子報:一季度各地元宇宙相關政策 我們梳理了一下_APP:人工智能

2021年,作為數字經濟下一增長點的元宇宙得到了Meta、微軟、騰訊、百度等國際科技巨頭的簇擁.

1900/1/1 0:00:00
2021區塊鏈應用創新TOP50_比特幣:區塊鏈的未來發展前景肖磊

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

1900/1/1 0:00:00
元宇宙系列(一):投資元宇宙地產 合規風險不可忘_NFT:AndaGold

前言 近日,兩大元宇宙平臺巨頭之一的Thesandbox宣布與匯豐銀行建立新的合作伙伴關系,匯豐銀行成為首家進入Thesandbox的全球金融服務提供商.

1900/1/1 0:00:00
ads