據JetProtocol官方博客披露,他們近期修復了一個賞金漏洞,這個漏洞會導致惡意用戶可以提取任意用戶的存款資金,慢霧安全團隊對此漏洞進行了簡要分析,并將分析結果分享如下。
相關信息
JetProtocol是運行在Solana上的一個借貸市場,用戶可將賬號里的代幣存入金庫,賺取年化收益,同時也可以按一定的比例借出另一種代幣。在這個過程中合約會給用戶一個note憑證,作為用戶未來的提款憑證,用我們熟悉的字眼來說就是LP,而本次漏洞發生的原因也和這個LP的設計有關。
我們知道和以太坊合約相比,Solana合約沒有狀態的概念,取而代之的是賬號機制,合約數據都存儲在相關聯的賬號中,這種機制極大提升了Solana的區塊鏈性能,但也給合約編寫帶來了一些困難,最大的困難就是需要對輸入的賬號進行全面的驗證。JetProtocol在開發時使用了Anchor框架進行開發,Anchor是由Solana上的知名項目Serum團隊開發的,可以精簡很多賬號驗證及跨合約調用邏輯。
FriesDAO因Profanity漏洞遭到攻擊,損失約230萬美元:金色財經報道,據CertiK監測,FriesDAO于今日遭到攻擊,損失約230萬美元,起因是攻擊者獲得了該協議操作者錢包的控制權——似乎是由于Profanity錢包生成器的漏洞導致的,這一漏洞會令通過該工具生成地址的私鑰被強制使用。
1.在獲得對操作者錢包的訪問權后,攻擊者從DAO的資金錢包中提取了$FRIES,并將其于Uniswap上以wETH的價格出售。
2.攻擊者使用只能由操作員地址調用的函數governanceRecoverUnsupported()從抵押池中提取資金。
3.攻擊者最終將所有資金轉換為DAI。
截至撰寫本文時,存儲被盜資金的錢包價值約為232.5萬美元。
FriesDAO在官方Discord頻道中確認了這次攻擊,指出錢包地址確實是用Profanity生成的。
目前官方開發人員試圖與攻擊者進行談判,協商用白帽賞金來換取被盜資金的歸還。
這次攻擊本可以被預防,因為Profanity漏洞作為做市商Wintermute被盜超過1.6億美元攻擊事件的罪魁禍首,已經被公開了一個多月了。
CertiK呼吁所有使用過Profanity工具的Web3.0項目立即將受影響錢包中所有資產的控制權轉移到安全生成的地址。[2022/10/28 11:52:27]
Anchor是如何工作的呢?我們可以從JetProtocol的一段代碼說起:
Decentraland安全報告:已修復LAND智能合約嚴重漏洞,將持續打擊IP侵權行為:5月4日消息,元宇宙項目Decentraland發布安全報告,報告顯示一名安全研究人員曾于3月發現了LAND智能合約的一個嚴重漏洞,該漏洞允許任何人在未經LAND所有者許可的情況下轉讓LAND,Decentraland在確認后的兩小時內修復了漏洞并對LAND智能合約進行了兩次額外的審計。
此外,Decentraland基金會表示其在過去的幾個月中分析了881個網站頁面、400個域名、399個移動和桌面應用程序以及1187個社交媒體列表,成功刪除了侵權的2個網站、24個域名和5個社交媒體帳戶。[2022/5/4 2:48:57]
programs/jet/src/instructions/init_deposit_account.rs
RAI Finance因ChainSwap合約漏洞被盜290萬枚RAI代幣:7月4日消息,基于Polkadot區塊鏈的跨鏈交易協議RAI Finance發文稱,因ChainSwap智能合約漏洞,與其連接的RAI訪問和支付權限地址也被黑客攻擊和盜用,帳戶中被盜RAI總額達290萬枚。RAIFinance表示,已經第一時間聯系所有中心化交易平臺并暫停RAI的充值,目前Huobi及Bithumb已經暫停了RAI的資產充值業務,待問題得到妥善解決后再解除限制。
此前消息,跨鏈資產橋ChainSwap合約遭到攻擊,目前合約已修復,跨鏈橋暫停使用。[2021/7/4 0:25:58]
這里的deposit_account賬號就是用于存儲LP代幣數據的賬號,用戶在首次使用時,需要調用合約生成該賬號,并支付一定的存儲費用。
而這里的?#?宏定義限定了這個賬號的生成規則:
報告:Compound開放式預言機集成Uniswap V2無嚴重漏洞:據官網消息,網絡安全公司OpenZeppelin已發布Compound的開放式預言機(Open Oracle)集成Uniswap V2的審計報告。報告顯示無嚴重或高危漏洞,但提出了部分的變化。
報告指出,開放式預言機旨在允許受信任的匯報者在鏈上發布一系列資產價格,這些價格將以Uniswap V2的市場價格作為基礎,發布價格的人只能在一定程度上偏離Uniswap V2的價格(具體由部署者決定),這可以很大程度上限制匯報者操縱預言機的權力。[2020/7/20]
規則1:#這個約束中,init是指通過跨合約調用系統合約創建賬號并初始化,payer=depositor意思是depositor為新賬號支付存儲空間費用。
規則2:#這個約束中將檢查給定帳戶是否是當前執行程序派生的PDA,PDA(ProgramDerivedAddress)?賬號是一個沒有私鑰、由程序派生的賬號,seed和bump是生成種子,如果bump未提供,則Anchor框架默認使用canonicalbump,可以理解成自動賦予一個確定性的值。
動態 | Monero開發人員修復加密貨幣硬件錢包 Ledger的漏洞:Monero開發人員在reddit上發帖子稱,已經修復了一個涉及加密貨幣硬件錢包 Ledger的一個漏洞,該補丁由Monero開發人員luigi1111和stoffu發布。據了解,該問題僅影響使用Ledger Nano S設備訪問其XMR錢包的用戶。[2019/4/9]
使用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開發者,注意對賬號體系進行嚴密的審查。
編者按 SeeDAO翻譯公會非常喜歡這篇文章。根據我們的一系列實踐,深深地感到了Vibe是比Token等金融化手段,以及一切DAO協作工具更加重要的東西.
1900/1/1 0:00:00頭條 ▌俄羅斯:愿意接受比特幣用于自然資源出口?????金色財經報道,俄羅斯國會能源委員會主席帕維爾·扎瓦爾尼在周四的新聞發布會上表示,俄羅斯愿意接受比特幣用于其自然資源出口.
1900/1/1 0:00:00據媒體報道,到2022年底,山東省濟南市各類企業、經濟組織將全面實行勞動合同電子數據化簽署,以期實現簽約數據依法共享、實時查驗。無獨有偶.
1900/1/1 0:00:00如今,元宇宙市場被業界普遍看好。市場研究公司GrandViewresearch的報告預測,2021年至2030年,全球元宇宙市場規模有望從388.5億美元增長到6788億美元,年復合增長率達到3.
1900/1/1 0:00:00BySaraCampbellMetalabel、Ampled和UnnamedFund的創始人奧斯汀·羅比最近在Crypto,Culture.
1900/1/1 0:00:00近日,AZUKI交易量頻頻上漲,日交易量已多次超過BAYC,并且還吸引了NFT藏家dingaling、加密KOL神魚等很多行業內大V爭相入場.
1900/1/1 0:00:00