By:Johan@慢霧安全團隊
據JetProtocol官方博客披露,他們近期修復了一個賞金漏洞,這個漏洞會導致惡意用戶可以提取任意用戶的存款資金,慢霧安全團隊對此漏洞進行了簡要分析,并將分析結果分享如下。
相關信息
JetProtocol是運行在Solana上的一個借貸市場,用戶可將賬號里的代幣存入金庫,賺取年化收益,同時也可以按一定的比例借出另一種代幣。在這個過程中合約會給用戶一個note憑證,作為用戶未來的提款憑證,用我們熟悉的字眼來說就是LP,而本次漏洞發生的原因也和這個LP的設計有關。
我們知道和以太坊合約相比,Solana合約沒有狀態的概念,取而代之的是賬號機制,合約數據都存儲在相關聯的賬號中,這種機制極大提升了Solana的區塊鏈性能,但也給合約編寫帶來了一些困難,最大的困難就是需要對輸入的賬號進行全面的驗證。JetProtocol在開發時使用了Anchor框架進行開發,Anchor是由Solana上的知名項目Serum團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。
韓國現代和起亞汽車公司引入區塊鏈排放監測:金色財經報道,韓國汽車制造商現代汽車公司和起亞公司推出了基于人工智能、基于區塊鏈的供應商二氧化碳排放監測系統 (SCEMS)。該系統的目標是成功處理合作企業的碳排放,并在整個供應鏈中促進負責任的環境實踐。
全新的供應商二氧化碳排放監測系統(SCEMS)依靠區塊鏈技術。通過實施人工智能技術和高性能區塊鏈,現代汽車和起亞讓他們的合作伙伴能夠有效監控和處理各自工作場所內的碳排放。[2023/8/1 16:11:38]
Anchor是如何工作的呢?我們可以從JetProtocol的一段代碼說起:
programs/jet/src/instructions/init_deposit_account.rs
Web3即時通訊應用Ktalk完成200萬美元融資:4月22日消息,Web3即時通訊應用Ktalk宣布完成200萬美元融資,馬來西亞主權基金和East British East Asia Holdings領投。
此外,Ktalk Beta公測版將上線,支持用戶直接使用錢包登陸平臺,并提供多鏈聚合錢包資產展示、鏈上NFT及資產管理功能。[2023/4/22 14:20:31]
這里的deposit_account賬號就是用于存儲LP代幣數據的賬號,用戶在首次使用時,需要調用合約生成該賬號,并支付一定的存儲費用。
而這里的?#?宏定義限定了這個賬號的生成規則:
規則1:#
這個約束中,init是指通過跨合約調用系統合約創建賬號并初始化,payer=depositor意思是depositor為新賬號支付存儲空間費用。
重慶永川發布元宇宙三年行動計劃,擬構建數字藏品等領域新模式新服務:1月9日消息,重慶市永川區人民政府官網于1月6日發布《重慶市永川區元宇宙產業發展三年行動計劃(2023—2025年)》,力爭到2025年,將永川打造成為以數字內容制作為特色的全國知名、西部領先的元宇宙應用示范城市,引入培育一批掌握關鍵技術、營收上億元的元宇宙企業,構建科技影視、虛擬數字人、數字藏品等多領域元宇宙新模式新服務。
其中在打造數字藏品產業服務體系方面,文件提及,在符合國家數字藏品監管要求的前提下,有序引進和培育有實力的數字產品版權、發行及交易平臺,打造集評估、發行、流通為一體的數字藏品服務體系。培育發展高收藏價值的數字藏品市場,重點瞄準航空航天、著名景區IP、重慶特色文化等領域,聯合版權單位、發行平臺,共同耕耘收藏市場,持續發行珍品數藏,打造細分領域高含金量的數字藏品市場。引進區塊鏈相關技術,拓寬數字藏品應用場景。[2023/1/9 11:02:23]
規則2:#
先買后付服務Cyan完成200萬美元種子輪融資,Animoca Brands領投:6月24日,官方消息,先買后付 (BNPL) 服務Cyan完成200萬美元種子輪融資,gumi Cryptos Capital (gCC) 和Animoca Brands領投,OpenSea、Fabric Ventures、Bastion Trading等參投。
據悉,Cyan的“立即購買,以后付款”服務允許消費者在未來進行購買和支付,從而允許用戶為購買提供資金、重新抵押他們的NFT。[2022/6/24 1:28:29]
這個約束中將檢查給定帳戶是否是當前執行程序派生的PDA,PDA(ProgramDerivedAddress)?賬號是一個沒有私鑰、由程序派生的賬號,seed和bump是生成種子,如果bump未提供,則Anchor框架默認使用canonicalbump,可以理解成自動賦予一個確定性的值。
韓國稅務機關準備向LFG追加征收7800萬美元稅款:5月19日消息,據韓國當地媒體 Naver 報道,韓國稅務機關準備向 Luna Foundation Guard(LFG)追加征收 1000 億韓元(約 7800 萬美元)稅款,因為雖然 LFG 在新加坡成立但實際管理在韓國國內進行,所以被視為韓國法人。[2022/5/19 3:27:28]
使用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開發者,注意對賬號體系進行嚴密的審查。
在2022年變幻莫測的市場環境中,穩定幣占據了舞臺的中心位置。穩定幣在Crypto領域中扮演著非常有價值的角色,因為它們允許持有者在利用區塊鏈和DeFi的金融超級力量的同時,在生態系統中保留「現.
1900/1/1 0:00:00近日,加密視頻播客UpOnly的主持人Cobie&Ledger采訪了DragonflyCapital合伙人HaseebQureshi.
1900/1/1 0:00:00從創業者的角度,一些大火的NFT項目到底是怎么打造的?需要考慮哪些維度?路徑可否復制?本文給出了很好的思考框架及要點.
1900/1/1 0:00:00原作者:PorterSmith,a16z協議專家原編譯:Kxp,律動BlockBeats質押是CryptoToken設計中常見的一環.
1900/1/1 0:00:00又到了每月安全盤點時刻!據成都鏈安安全輿情監控數據顯示:2022年3月,各類安全事件仍然時有發生,3月發生較典型安全事件超『30』起。暴露出來的安全風險創下2022開年以來的新高.
1900/1/1 0:00:00點擊上方“藍色字”可關注我們!暴走時評:大學幫助進行區塊鏈相關的研究已經有一段時間了,現在,一些世界頂尖大學已經將該技術加入到他們的課程中.
1900/1/1 0:00:00