據JetProtocol官方博客披露,他們近期修復了一個賞金漏洞,這個漏洞會導致惡意用戶可以提取任意用戶的存款資金,慢霧安全團隊對此漏洞進行了簡要分析,并將分析結果分享如下。
相關信息
JetProtocol是運行在Solana上的一個借貸市場,用戶可將賬號里的代幣存入金庫,賺取年化收益,同時也可以按一定的比例借出另一種代幣。在這個過程中合約會給用戶一個note憑證,作為用戶未來的提款憑證,用我們熟悉的字眼來說就是LP,而本次漏洞發生的原因也和這個LP的設計有關。
我們知道和以太坊合約相比,Solana合約沒有狀態的概念,取而代之的是賬號機制,合約數據都存儲在相關聯的賬號中,這種機制極大提升了Solana的區塊鏈性能,但也給合約編寫帶來了一些困難,最大的困難就是需要對輸入的賬號進行全面的驗證。JetProtocol在開發時使用了Anchor框架進行開發,Anchor是由Solana上的知名項目Serum團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。
BitKeep完成對800萬美元APK漏洞的補償:金色財經報道,多鏈錢包BitKeep宣布已對受7.2.9影響的用戶進行全額補償。截至3月29日,受事件影響的 11,090 個錢包已獲得全額賠償。此外,BitKeep表示其客戶服務渠道仍然開放,以處理一些非常規的索賠和申訴。
此外,繼上周Bitget加密貨幣衍生品交易所以 3 億美元的估值投資 3000 萬美元后,BitKeep將更名為Bitget Wallet。作為整合的一部分,BitKeep 將能夠在未來出現安全威脅時使用 Bitget 的 3 億美元 Bitget 用戶保護基金。[2023/3/29 13:33:17]
Anchor是如何工作的呢?我們可以從JetProtocol的一段代碼說起:
programs/jet/src/instructions/init_deposit_account.rs
Solana開發人員:Solana的600萬美元漏洞利用可能與Slope錢包有關:金色財經消息,Solana區塊鏈背后的開發人員表示,Solana的600萬美元從9,000多個熱錢包中被盜的漏洞利用可能與Slope錢包有關。受影響的錢包都被確認是在Slope移動錢包應用程序中創建或使用過的。(Coindesk)[2022/8/4 2:57:34]
這里的deposit_account賬號就是用于存儲LP代幣數據的賬號,用戶在首次使用時,需要調用合約生成該賬號,并支付一定的存儲費用。
而這里的?#?宏定義限定了這個賬號的生成規則:
規則1:#這個約束中,init是指通過跨合約調用系統合約創建賬號并初始化,payer=depositor意思是depositor為新賬號支付存儲空間費用。
聲音 | 交易員:Dx.Exchange有嚴重的安全漏洞 很容易被定罪:據CCN消息,數字貨幣交易所DX.Exchange近日表示,將提供基于10家納斯達克上市公司股票的數字代幣。一位在線交易員表示,該平臺泄漏了一些敏感的財務數據,存在嚴重安全漏洞,可能會“非常容易被定罪”。[2019/1/10]
規則2:#這個約束中將檢查給定帳戶是否是當前執行程序派生的PDA,PDA(ProgramDerivedAddress)?賬號是一個沒有私鑰、由程序派生的賬號,seed和bump是生成種子,如果bump未提供,則Anchor框架默認使用canonicalbump,可以理解成自動賦予一個確定性的值。
使用PDA,程序可以以編程方式對某些地址進行簽名,而無需私鑰。同時,PDA確保沒有外部用戶也可以為同一地址生成有效簽名。這些地址是跨程序調用的基礎,它允許Solana應用程序相互組合。這里用的是"deposits"字符+?reserve?賬號公鑰+?depositor?賬號公鑰作為?seeds,bump?則是在用戶調用時傳入。
區塊鏈評級機構:市場對 EOS 漏洞反應過激,投資者務必警惕主力資金借機套利:公眾號標準共識評論本次EOS“漏洞事件”稱,本次漏洞很嚴重,但并非 EOS 的系統性問題,而且 EOS 已經解決。加之二級市場的價格波動為負面消息帶來的恐慌情緒所致,標準共識不會對 EOS 現有的\"BB\"評級作出調整。不過,投資者仍需在短期內警惕做空資金利用恐慌趁機砸盤的風險。[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
黑客利用甲骨文漏洞盜取611個門羅幣:SANS Technology Institute近日發布了一份報告稱,攻擊者利用甲骨文去年年底修補的Web應用程序服務器漏洞,針對PeopleSoft和WebLogic服務器開展了多輪攻擊。然而攻擊者并沒有利用這個漏洞來竊取數據,而是將PeopleSoft和WebLogic服務器變成了挖礦工具。研究人員表示,有一名攻擊者利用這個漏洞獲得了至少611個門羅幣(XMR),總價值約為22.6萬美元。[2018/1/10]
有了這些前置知識,我們就可以直接來看漏洞代碼:
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開發者,注意對賬號體系進行嚴密的審查。
人是萬物的尺度——普羅塔格拉身份是人的尺度,數字是世界的尺度——Web3 漫聊身份 遠古社會到現代社會,人一出生就帶有身份屬性,身份的來源主要兩大方面:自然和社會.
1900/1/1 0:00:00文│復旦大學網絡空間國際治理研究基地主任沈逸2021年3月,創建于2004年的游戲公司羅布樂思在招股概念書中引入完成于30年前的小說《雪崩》中創造的概念“元宇宙”,引發了資本市場的激烈響應.
1900/1/1 0:00:00據西班牙《經濟學家報》網站近日報道,NFT的熱潮使這些數字文件的銷售額在2021年飆升,總額超過170億美元。也就是說,與上一年的8200萬美元相比,增長了210倍.
1900/1/1 0:00:00DeFi數據 1.DeFi代幣總市值:1242.41億美元 DeFi總市值數據來源:coingecko2.過去24小時去中心化交易所的交易量:37.
1900/1/1 0:00:00據四位熟悉此事的業內人士透露,英國政府將很快公布監管加密貨幣市場的計劃,重點關注穩定幣。消息人士告訴CNBC,英國財政部長RishiSunak預計將在未來幾周內宣布一個關于加密貨幣的新監管制度,
1900/1/1 0:00:004月1日,以太坊創始人VitalikButerin在個人博客發布文章《為比特幣最大主義辯護》支持比特幣最大主義.
1900/1/1 0:00:00