月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Coinw > 正文

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

作者:

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

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

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

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

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

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

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

巨鲸地址于4小时前卖出108万枚ARB,亏损27.6万美元:6月12日消息,据 lookonchain 数据显示,0x494a 开头巨鲸地址于 4 小时前卖出 108 万枚 ARB,亏损 27.6 万美元。

据悉,该巨鲸地址此前于 6 月 2 日以 1.25 美元均价买入 108 万枚 ARB,共计投入 134 万美元。值得注意的是,该地址在 Andrew Kang 买入 ARB 2 小时后买入,或受到 Andrew Kang 交易动作影响。

此前报道,加密风险投资公司 Mechanism Capital 联合创始人兼合伙人 Andrew Kang 曾于 6 月 2 日以 1.21 美元均价买入 117 万枚 ARB,6 月 10 日晚将其 21.7 万枚 ARB 在链上以 0.97 美元的价格售出;95.3 万枚 ARB 转入 Binance,预计其本次 ARB 投资实现了 28 万美元亏损,亏损率 20%。[2023/6/12 21:31:14]

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

Yat Siu:Open Campus核心贡献方TinyTap已为超900万个家庭和10万名教师提供服务:金色财经报道,Animoca Brands主席Yat Siu发表长推特,向公众介绍了Open Campus的核心贡献方TinyTap及愿景。据他描述,早在2012年TinyTap推出之时,其教育公平的理念和愿景就已诞生。TinyTap的平台现已为超过900万个家庭及超10万名教师提供过服务。

他表示:数据显示,去年全球个人、家庭和国家在教育上的花费超过5万亿美元,预计在十年内将翻一番。在线教育潜力巨大,86%的美国用户都曾通过YouTube进行过学习。

Animoca Brands将成为TinyTap的支持者,未来TinyTap将完全采用新的Open Campus教育框架。[2023/4/22 14:19:13]

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

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

派拉蒙影业为电影《MEAN GIRLS》申请加密货币商标:9月12日消息,美国专利商标局许可商标律师Mike Kondoudis披露电影和电视制作巨头派拉蒙影业(Paramount Pictures)已经为其电影《MEAN GIRLS》申请了两个加密货币相关的商标,以期将电影品牌拓展到NFT和数字藏品及其相关软件领域,据悉相关申请于9月7日正式提交。(The Crypto Basics)[2022/9/13 13:25:05]

下方是一个简化的例子。

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

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

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

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

BTC最后活跃大于10年的供应量达到历史新高:金色财经报道,Glassnode数据显示,BTC最后活跃大于10年的供应量达到 2,496,282.068 BTC的历史新高。[2022/8/13 12:22:44]

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

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

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

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

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

币安巴林获得巴林中央银行加密资产服务提供商(CASP)类别4许可证:5月26日消息,币安宣布币安巴林(Binance Bahrain)现已获得巴林中央银行(CBB)颁发的加密资产服务提供商(CASP)类别4许可证,允许Binance Bahrain提供加密资产交易服务。[2022/5/26 3:43:13]

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

1. 合约接口

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

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的余额。

之后,(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

链得得

标签:DITREDICRECREDITMicroCreditTokenPussyCreditsecret币币交易Creditcoin

Coinw热门资讯
加密货币:2022 熊市压抑太久 加密市场反弹的「回声泡沫」即将出现?_区块链

撰文:Andrew Kang在金融市场中,泡沫破灭后有时会发生泡沫后反弹,也就是所谓的回声泡沫(EchoBubble),这种情况与泡沫阶段初期的市场结构相似.

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

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

1900/1/1 0:00:00
APP:Apple和Meta的元宇宙「世纪之争」 Web3用户应该是喜是忧?_META

大家可能已经看到了新闻,苹果公司将发布新的VR-AR头盔,这为与Meta公司争夺元宇宙控制权的激烈斗争创造了条件.

1900/1/1 0:00:00
EFI:2022年DeFi行业的25个关键指标_tvl币圈

一方面,DeFi 项目有无数的黑客,以及互联网历史上最灾难性的崩溃之一的 Terra。加上宏观经济情况,这些因素导致 DeFi 市场去年大幅下降,甚至超过了其他区块链行业.

1900/1/1 0:00:00
WEB:Web3 音乐发展史:音乐人不再为爱发电 DAO 与社区助力发展_区块链

来源:mta1verse magWeb3 新浪潮,音乐行业准备好迎接颠覆了吗?音乐产业最早可以追溯到 1900 年代初期,当时出现了录制的音乐。在过去的几十年里,该行业随着技术变革而不断进步.

1900/1/1 0:00:00
WEB:Web3发展简史:去中心化思潮深入人心 我们究竟为何而战?_WEB3

来源:BanklessDAO加密货币是一个巨大的“灰色地带”,一个无法治理的公共区域。要了解它的真正潜力,我们应该搞清楚它的来源、原则以及它赖以发展的基本价值主张.

1900/1/1 0:00:00