TOK
相关类型: 其它
2022-01-19 22:19
NFT 的安全性取决于其创建者的安全性。与任何新兴技术一样,在设计阶段走捷径可能会产生灾难性的后果。
Kraken 安全实验室扫描了以太坊区块链上的数千个智能合约,以利用某些不可替代令牌 (NFT)合约中的漏洞。
下面,团队详细介绍了我们如何能够毫不费力地接管两个易受攻击的 NFT,并展示如何保护自己免受这种不安全的 NFT 的侵害。 NFT 的媒体和元数据是如何存储的
与普遍看法相反,并非所有 NFT 媒体(或元数据)都存储在区块链上。在许多情况下——比如在我们即将看到的 ERC-721 合约中——区块链只存储一个指向媒体保存位置的指针,就像一个银行保险库,里面有一张纸,上面有一张纸的地址。艺术被存储。
无论您的银行是否安全,如果有人去地址并更换艺术品,那张纸就没有多大用处。
区块链仅存储媒体链接。
这是恶意行为者感兴趣的地方。哪个网站或主机持有媒体?谁付钱让他们存储它?该链接将存在多长时间?链上指针可以更新吗?
Kraken 安全实验室扫描了数千个 NFT 以查找过期链接(过期网站或来自托管服务的自定义 URL)。令人惊讶的是,这次扫描发现了大量易受攻击的令牌。接管托管在 GitHub 上的 NFT
该团队首先确定了一个名为UniOption 的代币,其合约创建于 2020 年 12 月。该合约的TokenURI方法显示该代币的元数据托管在stacksideflow.github.io 上:
令牌元数据的 URL。
但是在访问该页面时,弹出一个 404 错误——表明该页面不存在。
通常, github.io域使用 username.github.io格式的 URL 托管用户内容。但是,我们找不到名为stacksideflow的用户——这表明该帐户已被重命名或删除。
从那里,我们使用用户名注册了一个新帐户并 创建了一个存储库。通过更多配置,我们可以通过 stacksideflow.github.io URL 提供自定义内容:
模仿 NFT 合约中指向的路径,我们将一个简单的 JSON 文件添加到我们的新存储库中,该文件会将我们的元数据传递给令牌:
名称、描述和图像已更改。
就这样,NFT 被劫持了!新名称、描述和图像可以在 OpenSea 和 Rarible 等 NFT 浏览器站点上看到。
接管过期的 NFT
接下来,我们看了一下ksfootball——一个以足球为主题的数字艺术收藏。
团队的下一个受害者。
快速查看后,我们发现内容是由一个名为ksfootball.app 的域提供的:
同样,我们查询了 tokenURI 方法来查找此信息。
搜索显示该域已过期,并且可以以几美元的价格购买。从那里,我们购买了域,并与前面的示例类似,设置了将自定义元数据传递给 NFT 的路径。
同样,如果我们在 Rarible 或 OpenSea 上查找该集合,我们可以看到对图像、标题和描述所做的更改。
现在在 Rarible 上被劫持的 NFT。我如何保护自己免受劫持?
出于本研究的目的,我们针对不活跃的代币——但同样的技术可以应用于你可能拥有的代币。
永远记住,虽然区块链数据可能是不可变的,但它指向的地方并不总是那么安全。当智能合约对可能更改的 URL 进行硬编码时,创建者会将其留给劫持。
此外,某些合约可能包含允许合约所有者或代币持有者更新 URL 的功能,在这种情况下,它不是静态的,将来可能会发生变化。目前没有简单的方法来检测这种“可更新 URL”漏洞,尽管查看 Etherscan 等页面上的智能合约代码(如果可用)可以防止这种情况。
对于 ERC-721 NFT,Kraken Security Labs 建议您始终检查令牌的存储位置。您可以通过调用合约的tokenURI方法来做到这一点,例如使用Etherscan.io 。使用读取合同功能,您可以获得令牌元数据的 URI。
此外,将数据 100% 存储在链上的项目(如OnchainMonkey或CryptoPunks )不容易出现这些漏洞,因为它们不指向外部存储。
除了检查 tokenURI 之外,您还应确保元数据中的图像 URL 也指向受信任的位置。
理想情况下,如果您的 NFT 将其数据存储在链下,它应该托管在诸如Arweave或IPFS (星际文件系统)之类的系统上——不要与 IPNS(星际名称系统)混淆,因为这些链接无法保证是不可变的。例如,常规 IPFS 链接(以 ipfs://ipfs/... 开头)不能被篡改,没有单点故障和内容可寻址存储。然而,随着IPFS,一个需要不断引脚设为IPFS节点上的文件,所以它不是安全从到期,不像系统如Arweave。 分享这个:
- 推特
- 像这样:比如加载中...