加密貨幣錢包商 ZenGo 的研究人員馬努什金(Alex Manuskin)在昨晚發表的一系列推文,披露一個名為 UniCats 的 DeFi 項目疑似在程式碼中嵌入惡意代碼,造成至少一位用戶丟失價值 14 萬美元的 UNI,再次引起眾人對 DeFi 協議審計需求的關注。
(資安事件補充:資安月報|DeFi 詐騙、跑路頻發!9 月安全事件共 33 起,危害程度評級 HIGH)
研究人員馬努什金昨(5)日推文表示,DeFi 流動性挖礦項目 UniCats 在智能合約中嵌入了一個狡猾的函數,允許項目方保留對用戶資金的控制權,UniCats 背後團隊便藉此奪走了眾多用戶總計約價值 20 萬美元的加密貨幣。
If you are not yet convinced that you should NOT be approving infinite tokens to some random smart contract/Dapp, here’s a story of how Jhon Doe lost $140K worth of UNI in their sleep.
1/
👇 pic.twitter.com/QltkevnzDY— Alex Manuskin (@amanusk_) October 5, 2020
一夜清空
馬努什金講述了一個故事。一位匿名用戶在以太坊上找到了名為 UniCats 的新 DeFi 協議,毫無戒心地拿出了一部分 Uniswap 的治理代幣 UNI 存入 UniCats 的流動性資金池;在批准 UniCats 協議動用其錢包中的資金,匿名用戶就開始挖掘 UniCats 的治理代幣 MEOW。
挖了一段時間後,在該匿名用戶認為差不多該提出放置在資金池中的 UNI 時,意外就發生了。馬努什金表示,這位匿名用戶不知道的是,一但他同意 UniCats 協議對其投入資金的使用權,只要不取消同意,UniCats 協議就擁久握有了對該資金的控制權,即便是在用戶退出協議後。
馬努什金指出,UniCats 在智能合約的程式碼中嵌入了一行 setGovernance 函式,該函式允許協議控制人將任何數據傳遞至任何地址;如此,UniCats 背後團隊就將該匿名用戶的 UNI 拿去 Uniswap 上兌換成以太幣(ETH),然後揚長而去。
總計,這位在馬努什金故事中的悲劇主角,共計損失了約 36,000 枚 UNI。
狡猾的智能合約
馬努什金表示,UniCats 背後的開發團隊是一群狡猾的混蛋,他們為了掩人耳目,會在每一個新用戶進場時將 UniCats 的流動性資金池所有權轉移至新的智能合約上,並且每次都會提取出部分資金,再到 Uniswap 上兌換成以太幣,才轉入 UniCats 手上的錢包。
據了解,除了馬努什金故事中的爐主,另外還有其他受害者約損失了 50,000 美元。馬努什金認為,實際受害金額只會更高,因為 UniCats 在兌換成以太幣後,立即就透過混幣器 Tornado.cash 試圖消抹鏈上蹤跡,也意味著這些資金的追回難度大大提高了。
毫無疑問地,這再度凸顯了 DeFi 協議需要經過審計的重要性。在 DeFi 崛起後,許多項目都是未經審計便直接面向用戶,瞄準著 DeFi 使用者們一頭熱的心態,大肆搜刮被流動性挖礦吸入的資金,接著便拂袖離去,顯得毫不費力。
DeFi 困境
值得一提的是,類似的攻擊也曾發生在另一個 DeFi 協議 Bancor 身上。今年 6 月中旬,Bancor 就在檢測時發現智能合約中出現嚴重漏洞,造成約 590,000 美元面臨被盜風險;不過,與 UniCats 不同,Bancor 並非刻意在程式碼中置入後門。
另一方面,造成 UniCats 這種惡意協議出現的原因,馬努什金認為正是現下流行的無限次批准造成的。目前,多數以 ERC-20 協議發行的 DeFi 項目,通常通設置無限次批准機制,意即用戶僅需花費一次性的 Gas 費,無需再分多次批准每筆協議請求:
很多問題都是由於用戶無限次批准協議使用權造成的,畢竟這也是目前 DApp 最流行的用法 ⋯⋯ 對於 DApp 項目方來說,他們應該考慮僅供有限次的必要批准,就算這會造成用戶的不便;錢包方面,應該提醒用戶他們正在授權代幣使用權。
📍相關報導📍
九月交易量超越 Coinbase 位居第四!Uniswap 能延續氣勢,挽救狂跌的 UNI?
比特幣DeFi|BitGo聯手Chainlink預言機,使「10億美元wBTC 」獲取儲備證明
加密貨幣「市場結構」迭代史:這是第3次的大變異,CeFi、DeFi或將融合
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務