火星链 火星链
Ctrl+D收藏火星链

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

作者:

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

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

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

事件简介

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

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

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

摩根大通将Coinbase目标价从55美元上调至59美元:金色财经报道,摩根大通将Coinbase目标价从55美元上调至59美元。[2023/5/5 14:44:59]

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

经典重入攻击

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

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

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

下方是一个简化的例子。

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

Nansen创始人:2023年将是针对加密初创公司的一场大屠杀:12月12日消息,Nansen创始人Alex Svanevik发布推特表示,2023年将是针对加密初创公司的一场大屠杀:1.大多数21/22年诞生的种子初创公司都没有钱;2.一些被收购;3.少数能进行新一轮融资(>80%无法融资);4.技术人员工资下降;5.技术职位缩水;6.VC投资其他领域(人工智能等)。[2022/12/12 21:38:55]

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

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

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

CoinFLEX现允许客户提取其账户余额的10%:7月14日消息,加密货币交易所CoinFLEX现在允许客户提取其账户余额的10%,不包括其flexUSD(FLEXUSD)稳定币。另外,从7月15日13:00开始,CoinFLEX将取消所有当前待处理的提款并将所有资金退还到相应的账户余额中。

此前消息,CoinFLEX于6月24日暂停提款,7月10日CoinFLEX披露损失金额上升至8400万美元,已启动仲裁程序并在筹集资金。[2022/7/14 2:13:53]

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

跨函数重入

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

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

沈阳:元宇宙在金融领域更应强调服务实体:金色财经消息,清华大学新闻学院元宇宙文化实验室主任沈阳表示,在整个元宇宙当中,虚拟人是属于主体地位的,因为有了虚拟人就会有虚拟服装、虚拟家居、虚拟房地产、虚拟的环境,所以虚拟人在元宇宙里面的价值是非常高的。

在这个过程中,应当注意的是,元宇宙要虚实和谐,不能脱实向虚,如果虚拟世界过于繁荣,真实世界就会坍塌,元宇宙在金融领域更应该强调服务实体。(中新经纬)[2022/7/1 1:44:53]

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

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

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

1.合约接口

爱德华斯诺登:不要投资加密货币:金色财经报道,爱德华·斯诺登在德克萨斯州奥斯汀举行的共识2022大会上谈到了加密和互联网隐私。爱德华·斯诺登认为加密货币的使用更有价值,但他不鼓励人们把钱投入加密货币作为一种投资。

2013年,泄露美国国家安全局(NSA)监视公民机密信息的斯诺登以虚拟方式出现在了德克萨斯州奥斯汀举行的共识2022会议上,他说:“我使用比特币来使用它。2013年,我用比特币以假名购买服务器。”

面对最近一群技术专家的批评,斯诺登还为加密行业辩护,这些专家批评加密货币和区块链技术,以反击该行业在本月初的游说努力。斯诺登表示,他认为签名者是在故意误解加密行业,重复了过去多次提出的一些相同的传统论点。(coindesk)[2022/6/12 4:19:41]

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

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

标签:DITCREDITCredCRERadditarium NetworkSmartCredit TokenCarbon Creditcredo币上市交易

以太坊价格热门资讯
THE:Tether项目周报(0130-0205)-ODAILY

Huobi开放EURT和XAUT交易火必将于2023年1月30日19:00(GMT+8)开放EURT(EuroTether)现货交易(EURT/USDT)和网格交易(EURT/USDT).

1900/1/1 0:00:00
IGN:SignalPlus每日晨报(20221107)-ODAILY

上周五美国10月非农数据发布,新增就业人数26.1万人,高于市场预期,同时9月前值也上修5.2万,不过10月增幅已经是2020年12月以来最低,失业率则升至3.7%,是2月以来最高.

1900/1/1 0:00:00
HSI:国土恐被淹没,这个太平洋岛国打算在元宇宙里成立数字国家-ODAILY

图瓦卢岛计划成为第一个保存其历史和文化的数字国家,因为岛屿面临着被大海淹没的危机。图瓦卢是位于南太平洋的一个岛国,人口约为1.2万。根据气候变化,联合国将该岛列为“极度脆弱岛屿”.

1900/1/1 0:00:00
ORE:去中心化超抵押稳定币USDD已登陆Coinstore.com-ODAILY

据官方消息,去中心化超抵押稳定币USDD已登陆Coinstore.com。当前,TRC20-USDD已开通充值,USDD/USDT交易将于12月2日18:00(UTC+8)开启.

1900/1/1 0:00:00
FTX:加密货币支付,迈入巴西-ODAILY

原文来源:Decrypt原文编译:白泽研究院巴西没有将比特币定为法定货币,但它做了退而求其次的事:它通过了一项法律,在全国范围内将加密货币作为支付手段合法化.

1900/1/1 0:00:00
OIN:一文回顾2022波场TRON国际化与合规化进程-ODAILY

作为全球增速最快的公链,过去一年波场TRON在国际化与合规化上取得了诸多历史性突破,全球影响力也大幅跃升.

1900/1/1 0:00:00