北京時間2022年9月5日,CertiK審計團隊監測到Daoswap由於挖礦獎勵大於交換過程中收取的費用以及缺乏驗證,允許用戶將邀請者地址設置爲自己,在一次攻擊中損失了58萬USDT。
攻擊步驟
① 攻擊者合約從12個地址中共閃電貸到了218萬美元。
② 攻擊者合約使用DAORouter將所有閃電貸到的USDT交換爲DAO代幣。在交換過程中,攻擊者合約以兩種方式從SwapToEarn獲得DAO代幣作爲獎勵:
a. 代幣獎勵:這是爲換取代幣的用戶准備的。
b. 邀請者獎勵:攻擊者在調用函數時可以任意設置一個“邀請者”地址,相當於推薦人也可以獲取獎勵。在這種情況下,攻擊者合約將邀請者地址設置爲自己。
③ 攻擊者合約用同樣的方法將所有DAO代幣換回USDT,再次獲得這兩種獎勵。
④ 攻擊者合約多次重復步驟②和③。因爲攻擊者收到了DAO代幣作爲獎勵,所以他每次都能獲得更多的USDT。
⑤ 攻擊者合約償還了所有借貸資金,並將剩余的USDT金額轉移給攻擊者。
合約漏洞
DAOSwap包含一個“swap-mining”的獎勵,其實現方式如下。
在函數_swap中調換之後,可調用SwapToEarn.sol中的函數swapCall。
在函數swapCall中,DAO代幣被轉移給用戶和邀請者,二者的地址都是通過參數傳遞的。
當函數在_swap中被調用時,我們可以看到用戶被設置爲信息發送者msg.sender,而邀請者則來自於輸入參數。
邀請者地址可以是任何地址,因爲這個地址沒有設置檢查。攻擊者能夠將邀請者設爲自己,並得到了額外的獎勵。
值得注意的是,攻擊者作爲邀請者得到的獎勵約佔總獎勵的20%。即使不允許攻擊者將邀請人地址設置爲自己,攻擊者仍然可以從交易中獲利。
6次交易的總利潤約爲581,254 USDT。
交易①:
https://bscscan.com/tx/0x414462f2aa63f371fbcf3c8df46b9a64ab64085ac0ab48900f675acd63931f23
交易②: https://bscscan.com/tx/0x6c859ae624002e07dac39cbc5efef76133f8af5d5a4e0c42ef85e47d51f82ae0
交易③:
https://bscscan.com/tx/0x3b1d631542eb91b5734e3305be54f305f26ab291b33c8017a73dcca5b0c32a1b
交易④: https://bscscan.com/tx/0xa7fdefcd80ba54d2e8dd1ab260495dca547993019d90f7885819bb4670b65bad
交易⑤:
https://bscscan.com/tx/0xf1368418344e21a1a09a2c1770ea301bf109ca3b387a59a79242a27d709195a7
交易⑥:
https://bscscan.com/tx/0x8eb87423f2d021e3acbe35c07875d1d1b30ab6dff14574a3f71f138c432a40ef
寫在最後
攻擊發生後,CertiK的推特預警账號以及官方預警系統已於第一時間發布了消息。同時,CertiK也會持續於官方公衆號發布與項目預警(攻擊、欺詐、跑路等)相關的信息。
CertiK的端到端安全解決方案,從智能合約審計和KYC項目背景調查服務,到Skynet天網動態掃描系統和SkyTrace等區塊鏈分析工具,以及漏洞賞金計劃,助力每一個項目充分發揮潛力的同時爲Web3.0打造用戶和投資者高參與的生態系統。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:卡Bug自己給自己「开工資」?Daoswap攻擊事件分析
地址:https://www.torrentbusiness.com/article/14771.html
標籤: