作者:昏鴉 & laker
日期:2021年3月6日

前言

PAID Network(PAID) 是一個生態系統DAPP,它利用區塊鏈技術來交付DeFi支持的智能協議,從而使業務效率成倍提高。其允許用戶創建自己的策略,以確保他們獲得報酬。

2021年3月6日,據星球日報消息,其流動性代幣出現問題,敦促用戶緊急取出流動性質押。

據悉,本次攻擊導致增發鑄造近5970枚 PAID 代幣,并已在uniswap上交換獲利 2400枚 ETH(約 380 萬美元),目前已經有受害者向攻擊者尋求歸還。

知道創宇404區塊鏈安全研究團隊在第一時間跟進并分析攻擊細節,具體分析如下

分析

攻擊者0x18738290AF1Aaf96f0AcfA945C9C31aB21cd65bE鑄幣獲得 59,471,745.571 PAID,然后通過Uniswap換成了ETH獲利。

鑄幣交易tx:0x4bb10927ea7afc2336033574b74ebd6f73ef35ac0db1bb96229627c9d77555a0

跟進代理合約,指向了地址0xB828E66eB5B41B9Ada9Aa42420a6542CD095B9C7,是一個未開源的合約

而在該合約的反編譯偽代碼中,能看到存在用于鑄幣的mint函數,并且會校驗調用者身份必須是地址0x18738290af1aaf96f0acfa945c9c31ab21cd65be

這一校驗就顯得相當可疑了,如果不是項目方故意留后門,那可能就是項目方的管理地址賬號私鑰被盜而造成的。

那么接下來我們再來看看相關代理合約上是否有轉移管理權限的事件記錄

代理合約的升級事件日志如下:

恰好在攻擊發生之前存在兩次升級操作,這升級時的兩個合約都是存在鑄幣函數的惡意合約,而發起這兩筆交易的正是地址0x18738290AF1Aaf96f0AcfA945C9C31aB21cd65bE

接下來,找到代理合約的創建交易tx:0x722caf4a8ba43f06f2c26e41cf49b9200af9f0593444d0b81713c2292782d15b

在Input Data中找到構造函數的傳入參數,解碼如下:

// 構造函數
constructor(address _logic, address _admin, bytes memory _data)

// 傳參
_logic = 0xd34bb7119a26f416a79889bacc9159b2bd2eb79e  // 邏輯合約地址
_admin = 0x7bb7580edb70170daf8a24afc6aaef93db720c24  // 代理合約管理員地址
_data = 0x8129fc1c  //函數簽名,即 abi.encodeWithSignature("initialize()")

可以發現一開始的管理員是0x7bb7580edb70170daf8a24afc6aaef93db720c24,跟進地址,發現同樣是個代理合約,不過在其事件記錄中發現存在所有權的轉移:

恰好是由PAID項目方的合約部署者0x6ba10437fD18899a4D920B60A9663b9a1D7a1120轉給攻擊者0x18738290AF1Aaf96f0AcfA945C9C31aB21cd65bE

總結

通過對整個事件的分析來看,此次攻擊原因由于PAID項目方的合約部署者(0x6ba10437fD18899a4D920B60A9663b9a1D7a1120)出于不明原因(或有意或私鑰被盜),將代理合約(0x7bb7580edb70170daf8a24afc6aaef93db720c24)的管理員轉移至攻擊者(0x18738290AF1Aaf96f0AcfA945C9C31aB21cd65bE)

隨后攻擊者(0x18738290AF1Aaf96f0AcfA945C9C31aB21cd65bE)通過upgrade升級了邏輯合約,添加了新的mint函數后進行鑄幣操作。

最后將得到的 2500000 / 59,471,745.571枚PAID代幣在uniswap交易所進行交換,獲利2,040 枚ETH,同時該賬戶剩余大量PAID代幣。

建議

目前,該攻擊者地址內仍剩余大量PAID代幣,建議用戶立即對質押進行回撤,防止進一步的損失。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1496/