木星链 木星链
Ctrl+D收藏木星链
首页 > XLM > 正文

ENS:白帽黑客samczsun:针对NFT资产的攻击会越来越频繁

作者:

时间:1900/1/1 0:00:00

注:原文作者是拥有“审计上帝”之称的白帽黑客samczsun,同时他也是Paradigm的研究合伙人,其最近出手拯救了BitDAO MISO荷兰拍卖资金池中的3.5亿美元资产,而在这篇文章中,他提醒了关于NFT代币标准的潜在安全风险,他还预测称,随着ERC-721和ERC-1155代币标准变得越来越流行,针对NFT的攻击很可能会越来越频繁。

如果你从事软件工程方面的工作,很可能你听说过至少一条软件工程原则。虽然我不主张严格遵守每一条原则,但有一些确实是值得关注的。

我今天要讲的就是最小惊讶原则,它有一个奇特的名字,但却是一个非常简单的想法。它所说的是,当呈现声称要做某件事的代码时,大多数用户都会假设它是如何完成这件事的。因此,作为开发人员,你的工作是编写符合这些假设的代码,这样你的用户就不会感到意外。

这是一个很好的原则,因为开发人员喜欢对事物进行假设。如果你导出一个名为calculateScore(GameState) 的函数,很多人就会假设该函数只会从游戏状态中读取。如果你还改变了游戏状态,你会使得很多人面临困惑的状态,他们试图弄清楚为什么他们的游戏状态会随机被破坏。即使你把它放在文档中,仍然不能保证人们会看到它,所以最好首先确保你的代码不会令人惊讶。

Euler:黑客若归还被盗DAI和ETH的90%,剩余10%可作为白帽黑客赏金:3月15日消息,借贷协议 Euler Finance 继续在链上向黑客发布消息,Euler 称,最简单的方法是将你控制下的 DAI 和 ETH 的 90% 返还到 EulerDAO 金库地址,10% 作为白帽黑客赏金,然后就会停止调查,重点可以转向向协议用户分发资金,而不需要走法律途径。

今日早些时候,Euler称,黑客若不及时还90%资金,将悬赏100万美元征集线索。

?[2023/3/16 13:06:39]

“6小时的调试工作,可以为你们节省5分钟的文档阅读时间。”

早在 2018 年初,当ERC-721 标准被起草出来时,有人就提出了实施转账安全性?的建议,以确保代币不会被卡在不用于处理代币的接受者合约中。为此,提案作者修改了transfer函数的行为,以检查接收方是否能够支持代币转账。他们还引入了unsafeTransfer函数,如果发送者愿意,该函数将绕过这个检查。

Aurora向白帽黑客奖励100万美元:9月29日消息,Aurora向一名通过Immunefi报告错误的白帽黑客奖励100万美元,以Aurora代币的形式支付。

据悉,白帽黑客在6月10日通过Immunefi向Aurora提交了一个严重漏洞,目前该漏洞已修复。[2022/9/29 6:02:07]

然而,由于担心向后兼容性,这个函数在随后的提交中被重命名了。这使得ERC-20 和 ERC-721 代币的transfer函数表现相同。但是,现在需要将接收方检查转移到其他地方。因此,标准作者就引入了safe类函数:safeTransfer 以及 safeTransferFrom。

这是一个关于正当性问题的解决方案,因为有许多 ERC-20 代币被意外转移到从未期望收到代币的合约的例子(一个特别常见的错误是将代币转移到代币合约中,将其永久锁定)。而在起草 ERC-1155 标准时,提案作者从ERC-721标准汲取了灵感,不仅在转账时,而且在铸造(mint)也纳入了接收方检查,这一点也不足为奇。

白帽黑客帮助MetaMask网络钓鱼攻击受害者收回11.7万美元加密货币:一位MetaMask用户遭遇网络钓鱼攻击,无意中将其私钥交给了子。一名白帽黑客成功挽救该用户钱包(持有24万美元资金)的一半资金。

Reddit用户“007happyguy”被引导填写Whitehat热线表格,并发布其详细信息。表格的另一端是一些白帽黑客。这是一项临时服务,如果有空的话,开发者可以选择回应请求。前ZenGo区块链研究员Alex Manuskin回应了请求。Manuskin做的第一件事是核实该Reddit用户拥有的钱包,并且确认其没有试图获取其他人的资金。此时他必须通过索要私钥来访问钱包。然后他确保子不能再从钱包转移走资金。为了在以太坊进行交易,用户需要一些ETH来支付交易费用。因此,他确保任何发送至该钱包的ETH都会被自动发送出去。

为了拯救剩余资金,Manuskin使用了Flashbots,这是一种支持开发人员和矿工之间通信的服务。简而言之,开发人员可以使用Flashbots向矿工发送一个交易“包”,直接包含在一个区块中,而不是向网络广播交易。

之所以有效是有两个原因。这种情况的主要原因是,如果钱包里没有任何ETH,任何零交易费用的交易都不会被任何矿工打包。使用Flashbots的情况是,进行了一项复杂的交易,将资金转移到另一个钱包,并一次性使用其他资金支付给矿工。第二个原因是它更隐蔽。如果任何交易被广播到公共网络上,者就有机会抢先交易。

Manuskin解释说,编写定制脚本和执行交易大约需要5-6个小时。时间的长短取决于交易的复杂性以及他以前是否经历过类似的情况。在子开始转移钱包资金后,Manuskin设法从钱包剩下的12万美元代币中挽救了大约11.7万美元。(The Block)[2021/7/18 0:59:49]

在接下来的几年里,这些标准大多处于休眠状态,而 ERC-20代币标准保持了它的流行状态,而最近gas成本的飙升,以及社区对NFT兴趣的增强,自然而然导致开发者越来越多地使用ERC-721和ERC-1155代币标准。有了这些新的兴趣,我们应该庆幸这些标准的设计考虑了安全性,对吗?

白帽黑客从Lien Finance智能合约漏洞中解救出960万美元:安全研究员和白帽黑客Sam Sun(又名Samczsun)发现一个脆弱的合约持有超过25000 ETH,当时价值超过960万美元。Sun迅速意识到情况的严重性,开始深入研究,发现该合约是Lien Finance协议的一部分。9月15日,Sun等人从该智能合约中解救出960万美元。9月22日,Lien宣布已获知“BondMaker”程序中的bug。Lien表示在“救援”过程中没有资金损失。(Cryptonews )[2020/9/26]

Ok,但对于转帐和铸造来说,安全意味着什么呢?不同的当事人对安全有不同的解释。对于开发人员来说,一个安全函数可能意味着它不包含任何bug或引入额外的安全问题。而对于用户来说,这可能意味着它包含额外的护栏,以保护他们不被意外射中自己的脚。

事实证明,在这种情况下,这些函数更多的是后者,而较少会是前者。这是特别令人遗憾的,因为在transfer和safeTransfer函数之间进行选择时,你为什么不选择安全的那个函数呢?名字都体现出来了!

动态 | 白帽黑客在过去7周通过修复加密货币项目漏洞赚取超32150美元:据thenextweb报道,在过去的七周里,白帽黑客通过修复加密货币项目和区块链平台(如TRON、Brave、EOS和Coinbase)的安全漏洞,至少赚取了32150美元。根据Hard Fork的数据,在3月28日至5月16日期间,共15家区块链相关公司向安全研究人员支付了奖金,其中包括共30份公开发布的漏洞报告。[2019/5/20]

好吧,其中的一个原因可能是我们的老朋友reentrancy(可重入性),或者我一直在努力将其重命名为:不安全的外部调用。回想一下,如果接收方是攻击者控制的,则任何外部调用都可能不安全,因为攻击者可能会导致你的合约转换为未定义状态。根据设计,这些“安全”函数执行对代币接收者的外部调用,通常在铸造或转移期间由发送者控制。换句话说,这实际上是不安全外部调用的教科书示例。

但是,你可能会问自己,如果允许接收方合约拒绝他们无法处理的转账,那最坏的后果是什么?好吧,让我通过两个案例研究来回答这个问题。

Hashmasks是一个供应有限的 NFT头像项目,用户每次交易最多可以购买 20 个mask NFT(尽管它们已经售罄数月了)。下面是购买mask的函数:

你可能觉得这个函数看起来非常合理。然而,正如你可能已经预料到的,在 _safeMint 调用中隐藏着一些险恶的东西。让我们来看看。

为了安全性,这个函数对token的接受者执行了一次callback回调,以检查他们是否愿意接受转账。然而,我们是token的接收者,这意味着我们刚刚得到了一次callback回调,在这个点上我们可以做任何我们想做的事情,包括再次调用mintNFT函数。如果我们这样做,我们将在仅铸造了一个mask后重调用该函数,这意味着我们可以请求再铸造另外19个mask。这导致最终铸造出了39个 mask NFT,尽管规则允许铸造的最大数量只有20个。

最近,来自ENS 的Nick Johnson联系了我,他想让我看看他们正在进行的ENS域名封装器工作。这个域名封装器允许用户用新的ERC-1155 token代币化他们的ENS域名,这提供了对细粒度权限以及更一致的 API 的支持。

概括地说,为了封装任何ENS域名(更具体地说,除了 2LD.eth 之外所有的ENS域名),你必须首先批准域名封装器以访问你的ENS域名。然后,你调用wrap(bytes,address,uint96,address),它既为你铸造一个ERC-1155 token,也负责管理底层的ENS域名。

下面就是这个wrap函数,它相当简单。首先,我们调用_wrap,它执行一些逻辑并返回哈希域名。然后,我们确保交易发送方确实是ENS域名的所有者,然后再接管该域名。请注意,如果发送方不拥有底层的ENS域名,则整个交易应还原,撤销在_wrap 中所做的任何更改。

下面是_wrap函数本身,这里没有什么特别的。

不幸的是,正是这个 _mint 函数,它可能会给毫无戒心的开发者带来可怕的惊喜。ERC-1155 规范规定,在铸造token时,应咨询接收者是否愿意接受该token。在深入研究库代码(该代码库根据OpenZeppelin的基础稍作了修改)后,我们发现情况确实如此。

但这到底对我们有什么好处呢?好的,我们再一次看到了一个不安全的外部调用,我们可以用它来执行重入攻击。具体地说,请注意,在callback回调期间,我们拥有了代币ENS域名的ERC-1155 token,但域名封装器尚未验证我们拥有基础ENS域名本身。这使我们能够在不实际拥有ENS域名的情况下对其进行操作。例如,我们可以要求域名封装器解开我们的域名,燃烧掉我们刚刚铸造的token并获取底层的ENS域名。

现在我们拥有了底层的ENS域名,我们可以用它做任何我们想做的事情,比如注册新的子域名或者设置解析器。完成后,我们只需退出callback回调。域名封装器将和底层ENS域名的当前所有者(即我们)交互,并完成交易。就像那样,我们已经取得了域名封装器被批准用于的任何ENS域名的临时所有权,并对其进行了任意更改。

令人惊讶的代码可能会以灾难性的方式破坏事物。在本文的两个案例下,开发人员合理地假设safe函数类可以安全地使用,却无意中增加了他们的攻击面。随着ERC-721和ERC-1155代币标准变得越来越流行及广泛,这类攻击情况很可能会越来越频繁。开发人员需要考虑使用safe类函数的风险,并确定外部调用如何与他们编写的代码进行交互。

标签:ENSSAFETRAASKGenshiroSAFETESLA价格Trade Tech AImetamask苹果手机版

XLM热门资讯
区块链:金色早报 | 上半年加密货币及区块链领域投资总价值共计87亿美元

头条▌毕马威:2021年上半年加密货币及区块链领域投资总价值共计87亿美元,较2020年翻番8月12日消息.

1900/1/1 0:00:00
NFT:NFT赋予游戏新体验

从2020年末开始,NFT领域迎来了前所未有的迅猛增长,社群中对NFT的讨论也与日俱增,这是NFT自2020年9月的小高潮之后迎来的真正爆发.

1900/1/1 0:00:00
POLY:首发 | Poly Network攻击事件分析

本文由Certik原创,授权“金色财经”首发,转载请注明出处。“黑客拿着房主证明找物业拿钥匙,证明是假的,却从物业那里拿到了真的钥匙”事件回顾2021年8月10日,PolyNetwork遭受了跨.

1900/1/1 0:00:00
NFT:深度解析:NFT的价值与社会网络的关系

使用 "社会地位即服务(Status-as-a-Serice) "框架将NFT作为社会网络进行分析.

1900/1/1 0:00:00
区块链:两部门:建设先进的区块链产业体系

“十四五”时期,随着全球数字化进程的深入推进,区块链产业竞争将更加激烈,两部门出台《指导意见》,强调建设基于区块链的大数据服务平台,促进数据合规有序的确权、共享和流通.

1900/1/1 0:00:00
PSG:金色前哨 | 梅西接受巴黎圣日尔曼粉丝代币PSG作为部分薪酬

据巴黎圣日尔曼俱乐部官方信息,足球明星利昂内尔·梅西在转会到法国巴黎圣日尔曼俱乐部后的财务方案将包括以加密货币粉丝代币PSG支付.

1900/1/1 0:00:00