火星链 火星链
Ctrl+D收藏火星链
首页 > Ethereum > 正文

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

作者:

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

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

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

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

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

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

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

OKX Web3钱包多链签名SDK已全面开源:7月21日消息,OKX发推称,OKX Web3钱包多链签名SDK现已全面开源,支持逾60条区块链网络。[2023/7/21 15:50:11]

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

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

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

下方是一个简化的例子。

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

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

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

Circle和Binance高管:MiCA刺激欧洲加密初创公司的风险投资激增:金色财经报道,Circle和Binance的高管表示,欧洲VC资金的涌入是因为欧盟在监管方面的进展。在过去的几个月里,大量的风险投资资金涌入欧洲的加密货币市场。

MiCA是一个欧洲加密市场监管框架,在早些时候获得批准,并可能在今年7月成为法律。[2023/5/14 15:01:29]

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

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

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

Chainalysis:去年加密货币盗窃金额达到创纪录的38亿美元:2月1日消息,区块链分析公司Chainalysis在周三发布的一份报告中表示,整体加密货币损失从 2021 年的 33 亿美元增至 2022 年的 38 亿美元。迄今为止,DeFi 协议是加密货币黑客攻击的最大受害者,占黑客窃取的所有加密货币的 82.1%(约 31 亿美元),高于 2021 年的 73.3%。在这 31 亿美元中,64% 来自跨链桥接协议。与朝鲜有关的黑客,例如网络犯罪集团 Lazarus Group 中的黑客,是过去几年中最多产的加密货币黑客。2022 年,他们打破了自己的盗窃记录,共窃取了价值约 17 亿美元的加密货币。[2023/2/1 11:41:39]

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

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

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

Axie Infinity通过Google Play商店的审核:金色财经报道,官方消息,链游Axie Infinity通过了Google Play商店的审核。

Axie Infinity表示,计划首先在马来西亚Play商店试运行Origins,让团队有机会继续测试和改进游戏。此外,该应用的早期Play商店版本功能有限。例如,根据当前的Play商店政策,玩家将无法获得代币。[2022/12/22 22:01:10]

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

1. 合约接口

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

2. 主要模块

中国互联网协会副理事长何桂立:新能源区块链产业的有序发展需要社会各界的积极创新与规范引导:金色财经报道,6月23日,中国互联网协会与蚂蚁链联合举办链上新能源在线研讨会暨《区块链新能源技术应用发展白皮书》发布会。中国互联网协会副理事长何桂立在会上致辞指出,人类社会迈入信息时代,经济形态等都在发生重大变化,数字化、网络化成为时代特征。在数字经济浪潮下,我们看到了云计算、人工智能、5G、大数据等技术的广泛应用,驱动着能源革命。我们要努力改变能源结构,保护我们的地球,我们需要能源,更需要可持续的生存环境。在双碳政策下,我们鼓励绿色可再生能源的发展。随着区块链技术的发展,区块链平台可以为能源的主体提供开发、创建、管理等服务,提供了分布式协同生产机制的基础,在区块链与新能源产业的融合发展中,区块链技术将发挥重要作用。通过区块链技术链接能源物联网设备,通过区块链可信的链接光伏电池等新能源资产,实现技术融合应用,进一步打开区块链赋能实体经济的活力。新能源区块链产业的有序发展,需要社会各界以开放的态度积极参与区块链与新能源场景的应用,需要积极创新与规范的引导。[2022/6/23 1:26:42]

被攻击的模拟示例合约

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

然后定义了一个能力: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的余额。

之后,(get-balance "legit_address")返回10,(get-balance "attacker_address")返回100。

重入成功。

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

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

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

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

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

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

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

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

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

CertiK中文社区

企业专栏

阅读更多

金色财经

金色早8点

Odaily星球日报

Arcane Labs

澎湃新闻

深潮TechFlow

欧科云链

MarsBit

BTCStudy

链得得

标签:区块链DITREDREDI区块链怎么入手Datarius CreditBored TokenCREDI币

Ethereum热门资讯
NFT:区块链企业高管告诉你 如何防止黑客窃取你的NFT

在过去的几年里,NFT越来越受欢迎。不断涌现的Web3和元宇宙创新产业刺激了一些参与者对NFT收藏品的渴望.

1900/1/1 0:00:00
BTC:比特币飙升至2.1万美元 熊市结束了吗?

根据比推终端数据显示,BTC于 1 月 13 日触及 21,095 美元的年度高点。2023 年BTC的飙升仍在继续,这是BTC自 11 月初 FTX 崩盘以来,首次突破 20,000 美元.

1900/1/1 0:00:00
BLU:Blur空投价值几何?NFT交易所估值分析

总结Opensea、Blur、X2Y2、和Looksrare市场份额的占比分别为36.77%、28.05%、24.35%、和7.42%但剔除Wash Trading后的真实份额约为59.1%.

1900/1/1 0:00:00
比特币:观点:加密领域投资者最常犯的 5 个错误

在过去的几年,人们越来越倾向于寻找可替代的高回报投资来积累财富,这使得加密货币也变得水涨船高的流行了起来。然而,就如我们近几年所看到的,加密货币市场常常表现出自身的极度不稳定性和不可预测性.

1900/1/1 0:00:00
比特币:加密矿业演化简史

在加密行业中,矿工是一个特殊的群体,他们是区块链底层安全保障,是加密行业中最富有的和最具话语权的一群人,代表着加密市场的晴雨表;同时,在反对者眼中,其所处的行业是吞噬能源的巨兽.

1900/1/1 0:00:00
USD:速览NFT市场:还有哪些细分市场值得我们关注?

撰写:RightSideNFT 是市场上一个成熟的垂直领域,人们开始逐渐了解它的意义。并且在 NFT 领域中,创新协议正在崛起,这里列出了其中的一些.

1900/1/1 0:00:00