Connect with us

技術分析

全面拆解 Opensea 掛單「漏洞」!

最近有黑客通過低價買到Opensea的頭部NFT項目 Bored Ape Yacht Club 再立馬高價售出獲利數百ETH,到底怎麼回事?

發表於

日期:

緊貼世界各地區塊鏈社群最新資訊,追蹤 Coindaily 社交平台!

加入 TG 頻道: https://t.me/coindaily_official
Facebook:https://www.facebook.com/CoinDaily_official
Instagram:https://www.instagram.com/coindaily.official

近日Opensea(OS)出現了多個低價成交的頭部項目,疑似掛單有bug被黑客攻擊,黑客通過低價買到頭部的 NFT 項目 Bored Ape Yacht Club 等等,再立馬高價售出,以此獲利數百 ETH,以下為分析結果。

先看OS掛單邏輯:出售NFT時授權(授權完成以後OS的撮合合約可以調用用戶地址的這個NFT)–》確定價格–》簽名–》掛單完成。這時候簽名信息會保存在OS的中心化服務器,並且會有API對外開放。

正常交易流程中,買方購買完後這個訂單的簽名信息就作廢。

「被攻擊」的情況中,用戶在地址A下掛了一個價格為1ETH的NFT賣單,這時候可能會再把NFT轉到地址B。後面NFT價格如果漲到了10ETH這個NFT再回到A地址,OS上這個NFT依然會以1ETH的掛單價出現(親測確實會出現,但是用戶可能不知道),這時候立馬會被人購買,賣家會遭受巨大的差價損失。而買方可以立馬轉手賣出賺取差價,下面黑客地址就是,低價買入三個Bored Ape Yacht Club並立馬賣出賺取了280ETH,約70萬美金。

這個問題對NFT交易平台方有點棘手:OS把訂單信息開放在了API中,公開透明,科學家可以通過API拿到訂單信息。所以上文中的這個NFT一旦回到A地址,就存在被立馬買走的風險。就算OS的功能立馬調整,不再展示1ETH的賣單信息,又或者是直接從數據庫刪除order信息,都解決不了這個問題。

並且現在關閉API也解決不了這個問題,之前存量的掛單信息可以視為已經完全洩露。而且可以從OS界面用爬蟲爬出order信息。所以只要準備足夠充分,NFT再次回到A地址,黑客可以在任何地方以1ETH買走這個NFT。

當然平台可以在用戶轉走NFT的時候提醒cancel order,這個操作後將作廢掉之前掛單的簽名信息,但會上鏈消耗GAS Fee,掛單多次需取消多次。Opensea的撮合合約里也沒有一次取消多個order的方法,這是其他OS競品交易市場可以進行優化的功能。可以一鍵取消多個掛單,減少用戶操作,不過GAS Fee肯定是少不了的。

平台提醒目前看來是一個比較簡單快速的方式,但是是用戶也可以在其他平台直接轉走NFT。比如我在OS掛了個賣單,我也可以imToken、Looksrare、Mintverse等其他平台直接轉走NFT。總結一下就是沒法保證NFT掛單簽名信息百分百和NFT轉移一起失效。這個問題對NFT交易平台來說有點無解,不僅僅是OS,任何NFT交易平台都一樣。除非是中心化的交易平台,所以對平台來說只能不斷的提醒引導用戶,提高用戶風險意識。

對用戶而言,如果知道這個漏洞後注意別再把NFT轉回到之前的地址就沒問題。不過這個行業用戶知識水平參差不齊,轉錯ERC20到合約地址的情況都時有發生,NFT這個問題個人覺得後面也會一直有。也有用戶在掛了賣單情況下去進行質押之類的操作,這種情況取回來只能到原地址。這種情況如果有價格差,肯定有被擼走的風險。如果有這種情況的用戶,可用先取消掉授權,再取回NFT。

2022肯定還會出現一大批NFT交易市場,數據完整性,實時性,準確性;產品安全性,可用性,穩定性;肯定會成為未來NFT交易市場的競爭點。用戶也需要提高安全意識,保管好自己寶貴的NFT。