2月19日,全球最大的NFT交易平台OpenSea剛開始支持用戶使用新合約,一些用戶的NFT資產就被盜了。

次日,OpenSea的CEO Devin Finzer在推特上披露,「這是一種網絡釣魚攻擊。我們不相信它與OpenSea 網站相關聯。到目前為止,似乎有32 個用戶簽署了來自攻擊者的惡意有效載體,他們的一些NFT 被盜。」Finzer稱,攻擊者錢包一度通過出售被盜NFT獲得了價值170萬美元的ETH。

用戶NFT被盜後,不少人在推特上猜測,釣魚攻擊的鏈接可能隱藏在假冒的「OpenSea致用戶」郵件中。因為19日當日,該交易平台正在進行一項智能合約升級,用戶需要將列表遷移到新的智能合約中。攻擊者很可能利用了這次的升級消息,將釣魚鏈接偽裝成通知郵件。

2月21日,OpenSea的官方推特更新回應稱,攻擊似乎不是基於電子郵件。截至目前,釣魚攻擊的來源仍在調查中。

OpenSea用戶遭「釣魚」丟失NFT

2月18日,OpenSea開始了一項智能合約的升級,以解決平台上的非活躍列表問題。作為合約升級的一部分,所有用戶都需要將他們在以太坊上的NFT列表遷移至新的智能合約中,遷移期將持續7天,到美東時間的2月25日下午2點完成,遷移期間,用戶NFT在OpenSea上的舊報價將過期失效。

2月19日,用戶需要配合完成的操作開始了。人們沒有想到,在忙亂的遷移過程中,黑客的「黑手」伸向了OpenSea用戶的錢包裡。從用戶們在社交平台的反饋看,大部分攻擊發生在美東時間下午5點到晚上8點。

從後來在以太坊瀏覽器上被標記為「網絡釣魚/黑客」的地址上看,19日晚18時56分,被盜的資產開始從黑客地址轉移,並在2月20日10時30分出現了通過混幣工具Tornado Cash「洗幣」的操作。

黑客鏈上地址的部分動向

用戶NFT被盜後,「OpenSea被黑客攻擊,價值2億美元資產被盜」的說法開始在網絡上蔓延,人們無從得知失竊案的準確原因,也無法確認到底殃及了多少用戶。

直到2月20日,OpenSea的CEO Devin Finzer才在推特上披露,「據我們所知,這是一種網絡釣魚攻擊。我們不相信它與OpenSea 網站相關聯。到目前為止,似乎有32 個用戶簽署了來自攻擊者的惡意有效載體,他們的一些NFT 被盜。」Finzer 駁斥了「價值2 億美元的黑客攻擊的傳言」,並表示攻擊者錢包通過出售被盜NFT 獲得了價值170萬美元的ETH。

區塊鏈安全審計機構PeckShield 列出了失竊NFT的數量,共計315個NFT資產被盜,其中有254個屬於ERC-721標準的NFT,61個為ERC-1155標準的NFT,涉及的NFT品牌包括知名元宇宙項目Decentraland 的資產和NFT頭像「無聊猿」Bored Ape Yacht Club等。該機構還披露,黑客利用Tornado Cash清洗了1100 ETH,按照ETH當時2600美元的價格計算,清洗價值為286萬美元。

攻擊者如何拿到用戶「簽單」授權?

用戶NFT失竊事件發生後,有網友猜測,黑客利用了OpenSea升級的消息,將釣魚鏈接偽造成通知用戶的郵件,致使用戶上當受騙而點擊了危險鏈接。

對此,Devin Finzer表示,他們確信這是一次網絡釣魚攻擊,但不知道釣魚發生在哪裡。根據與32名受影響用戶的對話,他們排除了一些可能性:攻擊並非源自OpenSea官網鏈接;與OpenSea電子郵件交互也不是攻擊的載體;使用OpenSea 鑄造、購買、出售或列出NFT不是攻擊的載體;簽署新的智能合約(Wyvern 2.3 合約)不是攻擊的載體;使用OpenSea 上的列表遷移工具將列表遷移到新合約上不是攻擊的載體;點擊官網banner頁也不是攻擊的載體。

簡而言之,Finzer試圖說明釣魚攻擊並非來自OpenSea網站的內部。 2月21日凌晨,OpenSea官方推特明確表示,攻擊似乎不是基於電子郵件。

截至目前,釣魚攻擊到底是從什麼鏈接上傳導至用戶端的,尚無準確信息。但獲得Finzer認同的說法是,攻擊者通過釣魚攻擊拿到了用戶轉移NFT的授權。

推特用戶Neso的說法得到了Finzer的轉發,該用戶稱,攻擊者讓人們簽署授權了一個「半有效的Wyvern 訂單」,因為除了攻擊者合約和調用數據(calldata)之外,訂單基本上是空的,攻擊者簽署了另一半訂單。

該攻擊似乎利用了Wyvern 協議的靈活性,這個協議是大多數NFT 智能合約(包括在OpenSea上製定合約)的基礎開源標準,OpenSea 會在其前端/API上驗證訂單,以確保用戶簽署的內容將按預期運行,但這個合約也可以被其他更複雜的訂單使用。

按照Neso的說法,首先,用戶在Wyvern上授權了部分合約,這是個一般授權,大部分的訂單內容都留著空白;然後,攻擊者通過調用他們自己的合約來完成訂單的剩餘部分,如此一來,他們無需付款即可轉移NFT 的所有權。

簡單打個比方就是,黑客拿到了用戶簽名過的「空頭支票」後,填上支票的其他內容就搞走了用戶的資產。

也有網友認為,在釣魚攻擊的源頭上,OpenSea排除了升級過的、新的Wyvern 2.3合約,那麼,不排除升級前的、被用戶授權過的舊版本合約被黑客利用了。對此說法,OpenSea還未給出回應。

截至目前,OpenSea仍在排查釣魚攻擊的源頭。 Finzer也提醒不放心的用戶,可以在以太坊瀏覽器的令牌批准檢查程序(Ethereum Token Approval)上取消自己的NFT授權。

(聲明:請讀者嚴格遵守所在地法律法規,本文不代表任何投資建議)

你認為OpenSea是否應該對受損用戶負責?