宇宙链 宇宙链
Ctrl+D收藏宇宙链

以Kadena智能合约为例 简析如何规避重入攻击和跨函数攻击

作者:

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

在这篇文章中,我们将简要地解释重入和跨函数重入之间的区别,以及图灵不完备性如何能够防止一些这样的攻击。

其中我们将提供一个跨函数重入利用的案例,该案例中Kadena区块链使用的是编程语言Pact,但图灵不完备性并未防止该恶意利用的发生。

事件简介

Kadena区块链旨在实现比其他L1链更高的可扩展性、安全性和可用性。其开发了一种新的语言用以编写智能合约:Pact。

这种语言是人类可读的,且易于形式化验证,并具备可提高安全性的图灵不完备性。

这里提到的图灵不完备性意味着Pact无法做到图灵完备编程语言所能做到的那些事——看起来好像是个劣势,但其实智能合约编程,哪怕是最复杂的DeFi协议也很少会需要用到图灵完备性。

图灵不完备性最重要的一点是没有无界递归。虽然这确实大大减少了攻击面,但一些「经典」攻击是无法被100%避免的,接下来我们就会讲述跨函数重入的问题。

BTC突破30000美元 创2022年6月以来新高:金色财经报道,行情显示,BTC突破30000美元,现报30001.0美元,日内涨幅达到5.56%,行情波动较大,请做好风险控制。[2023/4/11 13:55:56]

经典重入攻击

重入攻击是非常常见的安全问题。这个问题不仅很难被开发者发现,也很难被审计师审查出其会导致的所有潜在后果。

重入攻击取决于函数在进行外部调用之前和之后执行的特定任务的顺序。

如果一个合约调用了一个不受信任的外部合约,攻击者可以让它一次又一次地重复这个函数调用,形成一个递归调用。而如果重新输入的函数执行重要的任务,那这可能就会导致灾难性的后果。

下方是一个简化的例子。

我们把易受攻击的合约称为unsafe合约,把恶意的合约称为Attack合约。

1.攻击者调用unsafe合约,以将资金转移到Attack合约中。

灰度GBTC三月日均交易额升至5500万美元,创2022年12月以来新高。:金色财经报道,据The Block Pro数据显示,灰度的比特币信托基金GBTC日均交易额在三月份增长了67.6%,升至5500万美元,创下自2022年12月以来的新高。此外,三月调整后比特币和以太坊链上总交易额增加了48.8%,上涨至2550亿美元,其中比特币链上交易额增长48.3%,以太坊链上交易额涨幅达到了62.7%。[2023/4/5 13:46:00]

2.收到调用之后,unsafe合约首先检查攻击者是否有资金,然后将资金转移到Attack合约。

3.收到资金后,Attack合约执行回退函数,在它能够更新余额之前回调到不安全的合约,从而重新启动该过程。

JackDorsey为去中心化社交网络Nostr提供14枚BTC:金色财经报道,JackDorsey捐赠了大约14枚BTC,价值约245,000美元,以进一步资助Nostr的开发。(Coindesk)[2022/12/16 21:48:21]

因为这种攻击是通过无界递归调用进行的,所以如果语言不是图灵完备的,攻击就不可能进行。

跨函数重入

跨函数重入类似于经典的重入攻击,除了重入的函数与进行外部调用的函数功能不同。这种重入攻击通常更难被发现——因为在复杂的协议中,组合的可能性太多,无法手动测试每个可能的结果。

这就引出了我们的概念证明:使用Pact语言进行简单的跨函数重入攻击。

Pact模块中的简单跨函数重入

正如我们在下方代码片段中看到的,合约中的函数对另一个实现特定接口的合约进行外部调用。这允许重入一个设计好的攻击合约。Pact中的功能是内置函数,可授予用户权限来执行敏感任务。以下代码仅供说明之用,并非取自真实案例合约。

MetaMask将支持通过Snap扩展功能直接托管BTC:11月8日消息,据外媒报道,BTCSnap正利用MetaMask Snap扩展功能允许用户在MetaMask界面中直接管理自己的BTC。由于BTC不是ERC-20Token,因此此前无法被添加到MetaMask上,只能使用封装比特币wBTC或Binance挂钩的比特币BTCB进行交易。

据BTC Snap背后开发公司Just Snap透露,BTC Snap扩展已正式发布主网版本,不过由于MetaMask的Snap扩展功能属于预发布软件,所以现阶段Bitcoin Snap仅在开发人员访问的金丝雀发行版Metamask Flask上运行。新用户应等待MetaMask的公告和完全集成,以避免任何潜在的问题或欺诈。(Influencive)[2022/11/8 12:31:11]

我们将使用的代码例子包含三个部分:

1.?合约接口

安全团队:treasure swap项目方遭受攻击,攻击者累计获利3,945个BNB:6月11日消息,据成都链安安全社区消息,treasure swap项目方遭受攻击,根据成都链安技术团队分析,攻击者仅使用0.000000000000000001WETH就可将交易池中的WETH代币兑光,经对源码的逆向发现:被攻击合约的swap函数中缺少K值的校验。目前攻击者已完成对0xe26e436084348edc0d5c7244903dd2cd2c560f88和0x96f6eb307dcb0225474adf7ed3af58d079a65ec9两个合约的攻击,累计获利3,945个BNB,被盗资金仍在收益地址0x0FaCB17eFCb6cA6Ff66f272DE6B306DE9fb5931D上,成都链安链必追系统将持续监控被盗资金动向。[2022/6/11 4:18:31]

用以使主合约与一个恶意的外部模块进行交互

2.主要模块

被攻击的模拟示例合约

首先,数据库被定义为一个表,其中字符串存储在具有关联十进制数的行中。

然后定义了一个能力:CREDIT。这个条件将是credit函数所需要的,但只被with_capability语句中的bad_function内部授予。这意味着直接调用credit会失败。

现在,函数credit被定义如下:它增加了作为输入的字符串的余额。如果该地址不在表中,它还会创建该条目。

最后,函数bad_function增加了legit_address的余额,但也执行了对符合之前定义的接口的合约的调用,该合约可以作为一个输入参数提供。函数get-balance允许我们读取该表格。

3.用于触发重入的模块:

重新进入主模块,调用credit函数

大致流程如下:

a.以攻击合约为参数调用bad_function

b.?CREDIT功能被授予

c.“legit_address”的余额增加了10

d.?调用恶意模块的external_function:因为它仍然具有CREDIT功能,它可以重新进入合约并直接调用credit函数,给"attacker_address"一个100的余额。

之后,返回10,返回100。

重入成功。

现在,如果我们不重入调用credit,而是尝试重入再次调用bad_function,会发生什么?即使第一次调用credit成功,由于重入是在bad_function中,这将是一个递归调用且执行将会失败。

现在,如果我们尝试直接调用external_function,这将不起作用,因为所需的功能CREDIT没有被授予。

写在最后

通过移除无界递归,图灵不完备性可以防止一些重入攻击的载体。

然而,由于跨函数重入可以在没有递归调用的情况下进行,图灵不完备性并不能阻止所有此类攻击载体,因此用户在与这种语言交互时不应该假设重入不会造成恶劣影响。

重入和跨函数重入是非常常见的安全问题,Web3.0领域也因此发生了一系列规模巨大的攻击事件。

Pact作为一种智能合约编程语言,极具潜力。

它采取的方法与其他语言如Solidity或Haskell有些不同。Pact并不完全依靠图灵不完备性来提高安全性;该语言被设计地更容易阅读、理解和正式验证。

然而,没有哪种编程语言能对所有的攻击载体免疫。因此开发者必须了解他们所使用的语言的独特功能,并且在部署前对所有项目进行彻底审计。

目前,CertiK的审计及端到端解决方案已覆盖目前市面上大部分生态系统,并支持几乎所有主流编程语言,就区块链平台、数字资产交易平台、智能合约的安全性等领域为各个生态链提供安全技术支持。

标签:BTCDITCREDITCREBTCL币wesendit币gateYFI CREDITS GROUPcream币还有价值吗

欧易交易所app官网下载热门资讯
除了辉瑞投资的VitaDAO外 还有哪些DeSci项目值得关注?

原文:《Decentralizedscience(DeSci):Web3-mediatedfutureofscience》 编译:十文 1月30日.

1900/1/1 0:00:00
金色早报 | 1月份加密衍生品交易量环比增幅76.1%

头条 ▌1月份加密衍生品交易量环比增幅76.1%,达到2.04万亿美元金色财经报道,据CryptoCompare的数据,1月份交易活动全面强劲增长,但衍生品交易量增长快于现货市场.

1900/1/1 0:00:00
春天要来了?亚马逊或将涉足加密并推出NFT计划

Blockworks根据“知情人士”放出的消息,独家报道了亚马逊在今年春季进入加密领域的具体计划。亚马逊或在今年春天正式公开其加密野心.

1900/1/1 0:00:00
Hashed:2023 年加密领域的十大趋势

原文标题:《Top10Trendsin2023:AnOverviewbyHashed》撰文:SimonSeojoonKim编译:倩雯,ChainCatcher随着加密货币行业不断获得主流采用,其基础设施不断完善.

1900/1/1 0:00:00
当元宇宙遇上Web3.0企业会遇上哪些机会?

作者:孙宝红?陈剑 来源:《哈佛商业评论》中文版文章发表于《哈佛商业评论》中文版2022年11月刊,原标题为《元宇宙呈现从Web2.0到Web3.0的转型》2021年起,元宇宙、Web3.0等概念相继爆火.

1900/1/1 0:00:00
Bitfinex与Tap Global合作开发加密货币万事达信用卡

1月25日消息,金融科技公司TapGlobal已经与Bitfinex达成合作,并成为“卡即服务”B2B产品的第一个客户。Tap基于云的产品使Bitfinex能够为其用户提供预付万事达卡。该卡还提供特定商家的独家优惠、免年费等优惠.

1900/1/1 0:00:00