Immunefi的一枚赏金600万美金的智能合约漏洞挖掘过程

VSole2022-08-08 12:34:09

如果您是 Web2 或 Web3 开发人员,并且最终正在考虑在 Web3 中寻找 bug 的职业,那么我们为您服务。查看我们的终极区块链黑客指南,并开始从 Immunefi(Web3 领先的漏洞赏金平台)上获得 1.44 亿美元的奖励。

官网:https://immunefi.com/

概括白帽黑客 pwning.eth 于 4 月 26 日通过 Immunefi 在 Aurora 提交了一个严重漏洞。

该漏洞包含一个无限支出漏洞,如果被恶意用户利用,可能会导致 7 万 ETH 和 2 亿美元其他资产的直接损失。

值得庆幸的是,由于 pwning.eth 的高超技术,该漏洞被负责任地披露,而不是被利用。

没有用户资金损失,Aurora 迅速修复了这个错误,为每个人带来了积极的结果。

由于该漏洞被评估为严重级别,因此白帽公司已从 Aurora 获得 600 万美元的奖金,这是历史上第二大赏金支出。

Aurora 应该受到赞扬,因为它拥有运行良好的赏金计划、快速的响应时间和大量的漏洞赏金奖励,这些奖励激励了这类项目节省报告。

详细漏洞报告:

https://aurora.dev/blog/aurora-mitigates-its-inflation-vulnerability

Immunefi 很高兴使用我们的平台促进了这种负责任的披露。我们的目标是通过激励黑客负责任地披露错误并获得干净的金钱和声誉作为交换,使 Web3 更安全。

由于 Aurora 中受影响的部分——彩虹桥——是一座跨链桥梁,我们将首先简要讨论跨链桥梁的工作原理,然后再深入探讨无限支出漏洞本身。

彩虹桥简介有许多正在积极使用的区块链网络,例如 Ethereum、NEAR、Polygon、Fantom、Avalanche、BSC 或 Solana,每个都有自己的价值主张。随着用户(和资金)涌入 DeFi,对具有低交易费用和快速确认/最终确定性的区块链的需求呈爆炸式增长。

为了满足这一需求,L2 扩展解决方案和侧链出现了激增。但是,这些解决方案(通常)不能互操作和相互通信。许多 DeFi 协议是不同链的原生协议。例如,Aave 是以太坊原生的,但 PancakeSwap 是 BSC 原生的。

爆炸式增长的 NFT 空间也是如此,我们看到大量的收藏不仅在以太坊上推出,还在 Polygon、Solana 和 NEAR 上推出。但是,如果我们想将宝贵的 NFT 或有价值的代币从一条链转移到另一条链上怎么办?

这个问题的答案是区块链跨链桥技术。桥接器是连接两个或多个不同区块链并使用户能够在它们之间移动资产的一种方式。有不同的桥梁设计和方法。没有任何标准化的方式来设计您自己的桥梁。我们仍处于未知领域。

与“常规” DeFi 项目相比,桥接器还具有额外的“攻击面”。虽然收益农场或去中心化交易所可能拥有一系列智能合约和 dapp 网页,但桥接器通常需要监控节点、验证器密钥以及在这些合约和 dapp 之上的安全通信通道。这种增加的复杂性意味着更多的代码行可以隐藏错误,以及黑客入侵的更多方式。

将在一个网络上获得/赚取的代币转移到另一个网络的需求每天都在增加。流经桥梁的数量是巨大的。

大多数跨链桥接器都实现了所谓的 IOU(我欠你)的方法:

用户向桥接器协议发送资金,然后这些资金被桥接器智能合约锁定,而桥接器协议在来自第二个跨链桥智能合约的第二个网络。

通常,目标链上的代币被称为 IOU 代币或包装代币。例如,如果用户想通过彩虹桥将以太币从以太坊发送到 NEAR,以太币将被以太坊端的桥接合约锁定,用户可以从 NEAR 的桥接合约中兑换等价的代币。对于从一条链转移到另一条链的每一美元,桥必须将该美元保留在其“本机”链上,以防用户想要将资金转移回去。

可想而知,跨链桥中堆积如山的资金。

什么是Aurora?Aurora 是建立在 NEAR 网络上的 EVM 实现,它支持以太坊生态系统中可用的所有工具。除了 EVM,Aurora 还开发了 Rainbow Bridge,允许用户在 Ethereum、NEAR 和 Aurora 之间转移资产。换句话说,它允许用户将 ETH 和 ERC20 代币从以太坊主网存入 NEAR 的嵌套层,即 Aurora。

我们不会详细解释 Aurora 的工作原理。您可以在 Aurora 官方文档中阅读。我们将深入探讨 Aurora 如何处理从 Aurora 到 NEAR 以及 Aurora 和以太坊之间的取款。

Aurora 引擎中的两个合约对我们来说特别有趣:ExitToNear和ExitToEthereum. 简而言之,它们是特殊的内置(预编译)合约,用于处理来自 Aurora EVM 的提款请求。

在Aurora上映射ERC20代币的模板合约中,我们可以在以下代码中看到这两个合约的触发:

在这两种情况下,ERC20 代币的逻辑看起来都很好,因为调用这些函数将首先烧掉 ERC20 代币,然后再继续调用特殊的内置合约。这就是将 ERC20 代币从 Aurora 提取到 NEAR 或以太坊的方法。以太坊呢?

我们仍然称这些特殊合约,但方式略有不同。我们只需将 ETH 发送到一个特殊的合约,该合约就会生成一个事件ExitToNear,记录此退出的发送者、目的地和金额。在ExitToNear合约执行结束时,exit_event_log返回包含事件信息。

下面是合约代码信息:

https://github.com/aurora-is-near/aurora-engine/blob/5c8691ea6ea5f1b309ef227f7f5c719ffea45d28/engine-precompiles/src/native.rs#L198

主执行完成后,这些日志以及执行期间的所有其他日志将filter_promises_from_logs在aurora-engine/engine/src/engine.rs中进行检查。

只要使用硬编码的地址生成日志ExitTo(Near|Ethereum)::ADDRESS,log.data就会将其作为新的承诺进行处理。

但是,只要调用原生合约的代码,就可以生成这些转账承诺。

漏洞分析在以太坊中,合约调用主要分为三种类型:

常规CALL、STATICCALL和DELEGATECALL。

我们不会处理,STATICCALL因为它在 Aurora 引擎中被明确禁止。

我们将深入研究另外两个。

当合约 ACALL通过调用 对合约 B进行 a 时foo(),函数执行依赖于合约 B 的存储,并将msg.sender设置为合约 A。

这是因为合约 A 调用了函数foo(),因此msg.sender将是合约 A 的地址,并且msg.value将是与该函数调用一起发送的 ETH。

在该函数调用期间对状态所做的更改只会影响合约 B。

但是,当使用 进行相同的调用时DELEGATECALL,该函数foo()将在合约 B 上调用,但在合约 A 的上下文中。这意味着将使用合约 B 的逻辑,但该函数所做的任何状态更改foo()都会影响存储合约 Amsg.sender将指向首先拨打电话的 EOA。在 Aurora 错误的情况下,重要的是msg.value指向第一个调用上下文,而不是第二个。

换句话说,以太坊不被发送delegatecall。(参见示例 2)。

知道我们可以生成从 Aurora 到 NEAR 的传输承诺,通过ExitToNear直接调用内置合约,我们可以DELEGATECALL用来欺骗 Aurora 引擎,使其认为我们实际上发送了 Ether。为什么会这样?因为代码只检查是否LOG由内置地址生成,并且假设msg.value > 0实际上意味着 ETH 已发送到该地址。

如果我们使用delegatecall()调用原生合约,msg.value会继承原来的调用上下文,但是 ETH 不再传递给原生合约。下面的智能合约就是这样做的。

它从调用者那里获取 ETH 值,触发ExitToNear合约中的退出事件,然后将 nETH 发送回调用者。nETH 可以通过 Aurora Bridge 再次存入 Aurora EVM,有效地使攻击者的原始余额翻倍。

步骤:

1.使用彩虹桥(Aurora Bridge)将以太币从以太坊桥接到极光 

2.在 Aurora 上部署恶意合约,使其成为delegatecall原生合约,ExitToNear即0xe9217bc70b7ed1f598ddd3199e80b093fa71124f 

3.调用恶意合约的exploit函数。此时,Aurora 被欺骗,从 Aurora 桥接合约向 NEAR 上的调用者发送 nETH。

4.攻击者的平衡在 Aurora 上没有改变 攻击者然后将 nETH 存回 Aurora,使攻击者的余额翻倍 

5.从第 3 步开始重复。需要注意的是,这个错误会导致 NEAR 和 Aurora 运行时的复杂集成逻辑,如果没有来自 pwning.eth 的深入分析,这样的发现是不可能的。

漏洞修复如果给定的地址与输入的地址不匹配,现在将返回退出错误,这将禁用调用合约的能力,DELEGATECALL类似于 Aurora 禁用STATICCALL。

Aurora 开发了一个测试来确保跟踪该漏洞,以防万一逻辑更改可能导致它再次出现。

PS:最近朋友圈也有一位国内的大佬在Imm上提交了一枚智能合约漏洞,收获了11万美金的赏金收入(为保护隐私,我就不放朋友圈截图出来了)

如果大家觉得目前的渗透和安全行业太卷了,不如去研究研究区块链安全,指不定你也可以成为下一个牛逼的区块链黑客大佬!

漏洞挖掘区块链
本作品采用《CC 协议》,转载必须注明作者和本文链接
2019年3月5日,跨国计算机巨头IBM公司提交了两项新的区块专利申请,一项专利是IBM目前正寻求通过区块技术维护网络安全,另一项专利则专注于使用该技术的数据库管理功能。从网络安全的角度来讲,近几年,各个领域都成为黑客攻击的重点。同时,各国也都在重视区块技术在网络安全中的运用,仅仅2018年,75%的CEO和董事会成员都将网络安全和技术收购视为他们的首要任务。除了商界巨头之外,不少平民大众也
没有用户资金损失,Aurora 迅速修复了这个错误,为每个人带来了积极的结果。由于该漏洞被评估为严重级别,因此白帽公司已从 Aurora 获得 600 万美元的奖金,这是历史上第二大赏金支出。许多 DeFi 协议是不同的原生协议。
记一次NFT平台的存储型XSS和IDOR漏洞这是我在 NFT 市场中发现的一个令人兴奋的安全问题,它允许我通过接 IDOR 和 XSS 来接管任何人的帐户,以实现完整的帐户接管漏洞。我们能够用我们自己的价值观修改受害者用户的个人资料。现在我们可以提出任何其他请求来执行其他经过身份验证的操作,例如出售艺术品或转让或删除用户的艺术品漏洞披露
目前已经有超过 10 万“白帽子”参与,积累漏洞超过 5 万个,其中高危漏洞 3 万多。主流公开漏洞库均采用了 CSVV 漏洞评价体系,众多安全厂商也根据各自对 CVSS 的理解制定出不同的评定标准。此外,有将近一半短期内可被利用的漏洞 CVSS 基本得分低于 7,这将导致安全运营团队忽略大量高风险漏洞。静态评价在收到漏洞时即启动,对漏洞自身影响等进行风险评价,以便进行提前预防处理和预警。
2022年信息安全领域四大顶会之一USENIX Security拉开帷幕。今年又有好消息传来——复旦大学教授杨珉等研究员发表的论文被评为“杰出论文奖”。而这些被委托出去的功能也被称为“子APP”,最常见的莫过于微信小程序。结果显示,上述的三种身份混淆在所有47个被研究的APP中普遍存在。另外,研究团队还负责任地向以上APP的开发者们报告了这一结果,并帮助他们进行漏洞修复。
利用网络安全漏洞实施攻击的安全事件频发,使网络安全漏洞治理成为保障国家网络安全的重要议程。当前,囿于在漏洞评级指标、漏洞披露政策以及“白帽子”法律责任层面缺乏整体性考量,我国网络安全漏洞治理框架亟待面向“合作主义”转型。为此,需通过行政与司法的合作明晰“白帽子”法律责任的边界,通过行政部门之间的合作搭建网络安全漏洞协同机制,通过行政与公众的合作拓宽社会公众参与漏洞治理的渠道,协力共筑网络安全漏洞
在过去的一年里,网络安全领域的漏洞频频攀升至新高峰。安全研究巨头Qualys在其《2023年网络威胁安全回顾》报告中指出,全球范围内披露的计算机漏洞数量高达26447个,这一数字在历史横轴上刻下了新的纪录——较之上一年的25050个漏洞,同比激增了5.2%。
12月25日,APEC中国工商理事会数字经济委员会执委会成员、奇安信集团董事长齐向东受邀出席APEC工商领导人中国论坛,并发表“走网络安全科技自立之路”的主题演讲。他指出,网络安全科技自立是应对网络安全挑战和有效解决国际贸易纠纷的必然选择,更是国家发展的战略支撑。
摘 要:科技创新能力已经越来越成为衡量一国综合国力、军事实力的决定性因素,也深刻影响着武器装备发展和未来作战模式。以美国为代表的军事强国高度重视并长期坚持科技创新,通过制定战略规划、强化顶层管理、设立创新机构、加快项目布局等方式,多措并举推动网信重点领域科技创新,加速前沿科技创新成果的军事应用。截至目前,人工智能、区块、网络安全等技术领域很多科技创新成果已经取得突破性进展,未来将对武器装备发展和
上海市经济信息化委 市委网信办 市发展改革委 市科委 市财政局 市通信管理局关于印发《上海市建设网络安全产业创新高地行动计划(2021-2023年)》的通知
VSole
网络安全专家