主页 > imtoken安卓官网 > a16z:NFT新花样“Sleep Minting”原理及防范解析
a16z:NFT新花样“Sleep Minting”原理及防范解析
作为 NFT 收集者,您应该关注链上合约的出处。 NFT 最真实的出处是直接从创建者的钱包或创建者拥有的智能合约中铸造出来的。然而,通过一些技巧,有人可以使用一种称为“睡眠铸币”的技术来操纵 NFT 创建者的来源。
Sleep Minting 是指骗子直接将 NFT 铸造到知名创作者的钱包中,并从创作者的钱包中回收 NFT。
这会产生错觉:
(1)创作者本人实际上铸造了一个 NFT;
(2)@ >将 NFT 发送给骗子;
基于“链上”出处,诈骗者可以声称他们拥有由著名创作者铸造的 NFT,并以更高的价值出售。
这在技术上是如何工作的?
首先,了解智能合约如何存储 NFT 的出处和所有权至关重要。任何人都可以使用 ownerOf(tokenId) 函数查询 NFT 智能合约,以确定 NFT 的当前所有者是谁。您甚至可以通过更改 eth_call RPC 方法参数来向 NFT 所有者查询特定的块号。但是,查看所有权更改的最简单方法是查看 ERC -721 Transfer 事件日志。
我的 a16zCrypto 同事 Daren Matsuoka 在 Twitter 上写了一篇关于事件日志及其工作原理的精彩文章。转账事件日志是智能合约向外界发送的消息,包含有关 NFT 转账的详细信息(NFT 从谁转账,NFT 被转账给谁,以及转账的 TOKEN ID)。传输事件日志提供了一种检查 NFT 来源的有效方法。
Sleep Minting 的骗局
普遍认为,如果您发送交易以转移 NFT,则您的地址应位于事件的“发件人”字段中。然而,当一个骗子从一个著名的创作者那里检索一个 sleepNFT 时,情况并非如此。诈骗者可以人为地将“发件人”字段添加到著名创作者的地址中。
这是 beeple 的数百万美元的“前 5000 天”在 rarible 出售。看截图,明明写着“创作者:
但这是一个骗局。它的创造者,也称自己是 NFT 的 Banksy 的 Personne 先生,使用一种称为睡眠铸造的技术,故意以 beeple 的名义铸造了这件作品。那么他是怎么做到的呢?
NFT 是使用 ERC-721 智能合约创建的,它们将 NFT 的所有权记录保存为一个列表。作品的地址和序号形成一对。像这样(我将“Bob”替换为“Booble”)。
爱丽丝:1
布布尔:2
马洛里:3
交易完成后,Alice 可以通过以下方式将她的 NFT 转移到 Booble。
转移 1:Alice ==> Booble
列表现在更新如下:
爱丽丝:
布布尔:2、1
p>
马洛里:3
在以太坊中,我们是通过地址名称来识别的,我们需要对转账进行签名授权。但在本文提供的示例中,我将使用明确的名称来简化解释。
如今,开发人员通常以合理的方式实施 ERC-721 合约。 Alice 只有在拥有 NFT 并且可以提供有效签名的情况下才能进行转账。
ERC-721 标准只是一个社会契约,它定义了一个允许艺术平台互操作的接口。只要合约的接口与ERC-721合约的接口匹配,任何机器都会认为是有效的。
但是,正如我们现在所看到的,这可能会导致以太坊上 NFT 出处的安全问题,并且可以被篡改。
正如我所说,任何合理的 ERC-721 合约都将允许矿工只为自己铸造硬币,并且只转移他们拥有的分片。
但是,假设我们自定义了 ERC-721 合约,以便我们可以铸币到其他账户。假设我们调整转账功能,让我们的账户在某些情况下也可以转账他人的 NFT。然后,我们可以建立一个合约,让我们可以睡觉。
示例:作为攻击者 Malory,我们为 Booble 铸造了一个序列号为 1 的作品。
mint 1:地址(0) => Booble(由 Malory 执行)
现在我们的配对看起来像这样:
爱丽丝:
布布尔:1
马洛里:
那么,既然Malory已经调整了合约,将序列号为1的作品从Booble的账户转移到任何其他账户,她就可以在Rarible等NFT平台上进行发售了。
显示了她从地址(0) 到 Booble 作为“creator --Booble”的铸币。
>
一旦 Malory 成功欺骗了买家,她将收到她的“以太币”并将仿冒作品卖给买家。
任务 1:Booble => 买方(由 Malory 执行)。
更新后的所有权记录现在如下所示。
爱丽丝:
布布尔:
马洛里:
买家:1
就这样,Malory 成功伪造了 NFT 的出处记录usdt假转账手法usdt假转账手法,并以高于作品价值的价格出售了她。
具体细节:
仔细查看rarible和Etherscan的信息,我们会发现这与其说是安全漏洞,不如说是接口问题。没有人可以进入beeple账号。
另外,仔细查看交易记录,可以发现骗子的套路:
对于铸币交易,我们可以看到 Etherscan 显示两个“发件人”字段。一个是msg.sender发送的交易,另一个是NFT的发送者。
对于交易的发送者字段 msg.sender ,它不能被操纵,因为它需要发送者的私钥的有效签名。但是,“Tokens Transferred”字段的授权易受智能合约漏洞的影响,因此可能会被操纵。
简单地说,骗子可以对“Tokens Transferred”字段进行任意修改。
所以我们必须检查 From 和 Tokens Transferred 是否与 beeple 的正确地址匹配。如果不是,那就是假的。
这种攻击类似于“rugpull”,有人认为区块链让web2问题消失,因为每一个数据都经过验证和检查。但事实是,这些问题并没有消失。他们只是搬到了别处。