NBA最近發行了數字藏品,然而我們發現,其售賣數字藏品的合約存在非常嚴重的漏洞。攻擊者(“科學家”)可以通過漏洞無成本鑄造藏品然後出售獲利。

漏洞的成因在於對白名單用戶的簽名校驗有安全問題。具體來說,合約沒有保證白名單簽名只能被特定用戶使用而且只能使用一次。因此,攻擊者可以重用其他白名單用戶簽名鑄造藏品。

從代碼我們可以看出, verify函數並沒有將發送者地址放到簽名中。另外,也沒有機制保證該簽名只能被使用一次。我們認為這一些安全實踐是最基本的軟件安全入門知識。我們非常驚訝這樣的漏洞居然出現在非常知名的項目裡面。