鑄幣疑雲 —— Paid Network 被盜細節分析
據消息,以太坊 DApp 項目 Paid Network 遭受攻擊。攻擊者通過合約漏洞鑄造近 1.6 億美元的 PAID 代幣,並獲利 2000 ETH(約 300 萬美元)。慢霧安全團隊在第一時間跟進並分析,現在將細節分析給大家參考。

攻擊細節分析
鑄幣疑雲 —— Paid Network 被盜細節分析
以上是整個攻擊過程的調用流程細節。

可以看到整個攻擊過程非常的簡單,攻擊者通過調用代理合約中函數簽名爲 (0x40c10f19) 的這個函數,然後就結束了整個攻擊流程。由於這個函數簽名未知,我們需要查閱這個函數簽名對應的函數是什麼。
鑄幣疑雲 —— Paid Network 被盜細節分析
通過查閱這個函數簽名,我們發現這個簽名對應的正是 **mint **函數。也就是說,攻擊者直接調用了 **mint **函數後就結束了攻擊過程。那麼到這裏,我們似乎可以得出一個 **mint **函數未鑑權導致任意鑄幣的漏洞了。通過 Etherscan 的代幣轉移過程分析,似乎也能佐證這個猜想。
鑄幣疑雲 —— Paid Network 被盜細節分析
但是,事實真是如此嗎?

爲了驗證未鑑權任意鑄幣的這個想法,我們需要分析合約的具體邏輯。由於 Paid Network 使用的是合約可升級模型,所以我們要分析具體的邏輯合約 (0xb8…9c7)。但是在 Etherscan 上查詢的時候,我們竟然發現該邏輯合約沒有開源。
鑄幣疑雲 —— Paid Network 被盜細節分析
這個時候,爲了一探究竟,我們只能使用反編譯對合約的邏輯進行解碼了。通過 Etherscan 自帶的反編譯工具,可以直接對未開源合約進行反編譯。在反編譯後,我們卻發現了一個驚人的事實:
鑄幣疑雲 —— Paid Network 被盜細節分析
通過反編譯,我們不難發現,合約的 **mint **函數是存在鑑權的,而這個地址,正是攻擊者地址 (0x187…65be)。那麼爲什麼一個存在鑑權的函數會被盜呢?由於合約未開源,無法查看更具體的邏輯,只能基於現有的情況分析。我們分析可能是地址 (0x187…65be) 私鑰被盜,或者是其他原因,導致攻擊者直接調用 **mint **函數進行任意鑄幣。

總結

本次攻擊過程雖然簡單,但是經過細節分析後卻有了驚人的發現。同時這次的攻擊也再次對權限過大問題敲響了警鐘。如果這次的 mint 函數給到的鑑權是一個多簽名地址或是使用其他方法分散權限,那麼此次攻擊就不會發生。

參考鏈接:

攻擊交易:
https://etherscan.io/tx/0x4bb10927ea7afc2336033574b74ebd6f73ef35ac0db1bb96229627c9d77555a0

來源鏈接:mp.weixin.qq.com