链资讯 链资讯
Ctrl+D收藏链资讯

DAO:以Kadena智能合约为例,简析如何规避重入攻击和跨函数攻击-ODAILY_defibox币有价值吗

作者:

时间:

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

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

事件简介

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

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

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

Kaiko:3月份Coinbase的市场深度腰斩,币安下降13%:金色财经报道,据Kaiko研究的数据,USDC-USD交易对的交易量在3月11日创历史新高,达6亿美元,其中以Kraken为主。此外,Aave和Compound在3月11日收到了超过20亿美元的还款,其中大部分是USDC。

同时,在交易所流动性方面,Gemini市场深度在3月份下降了74%,Coinbase下降了50%,Binance.US下降了29%,但币安则受益于其更多的全球风险敞口,流动性仅下降了13%。[2023/3/14 13:02:49]

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

经典重入攻击

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

INX将上市Hashrate Asset Group比特币挖矿证券型代币:金色财经报道,券商INX Digital Company, Inc.宣布旗下INX平台将上市加密矿企Hashrate Asset Group的比特币挖矿证券型代币。据报道,Hashrate Asset Group已根据Reg D/S向SEC提交注册文件。[2023/3/14 13:02:14]

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

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

下方是一个简化的例子。

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

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

Aavegotchi关闭GHST联合曲线的提案投票现已开启:3月8日消息,Aave 生态 NFT 项目 Aavegotchi 发起的关闭协议 Token GHST 联合曲线的提案投票现已开启,一旦投票人数达到法定的 8%,联合曲线将关闭。

此前报道,2 月 28 日,Aave 生态 NFT 项目 Aavegotchi 发起的关闭协议 Token GHST 联合曲线的提案已获投票通过。提案认为 AavegotchiDAO 经过两年的发展已经具备足够的成熟度和流动性来满足项目发展,因此提议关闭 GHST 联合曲线,将 GHST 与 DAI 脱钩,固定其供应,并使 GHST 成为自由流通的 Token。[2023/3/8 12:49:04]

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

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

美股三大指数集体收跌,标普500指数跌2.8%,本周累涨1.51%:金色财经报道,美股三大指数集体收跌,纳指跌3.8%,本周累涨0.73%;标普500指数跌2.8%,本周累涨1.51%;道指跌2.11%,本周累涨1.99%。[2022/10/8 12:49:05]

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

跨函数重入

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

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

阿根廷加密交易所Buenbit推出当地货币贷款产品,使用DAI作为抵押品:金色财经消息,阿根廷加密货币交易所Buenbit推出了一种使用加密货币作为抵押品的贷款产品。根据该公司的声明,该平台的用户将能够使用MakerDAO的稳定币DAI作为抵押品,并提取最多100万NuARS,这是一种与阿根廷比索挂钩的稳定币。按照目前的汇率,最高金额相当于3,333美元。

该公司CEO Federico Ogue表示,这是一种国外的模式,它们是美元贷款,但美元贷款在拉丁美洲风险太大。(CoinDesk)[2022/7/19 2:21:57]

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

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

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

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

之后,返回10,返回100。

重入成功。

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

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

写在最后

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

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

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

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

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

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

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

标签:DAONFTEFIDITBreederDAOnft币未来价格还有上涨空间吗defibox币有价值吗Validity

fil币价格今日行情热门资讯
POLK:JZL Capital区块链行业周报第38期:CPI超出预期,加息恐慌加剧-ODAILY_DOT

一、上周行业动态 本周二CPI数据高于预期,加密市场跟随美股市场跳水,基本抹平上一周的涨幅。截至撰稿比特币收于19857.3美元,周内跌幅8.24%.

CRYPTO:体育领域与Crypto相互赋予全新价值-ODAILY_CRY

上周关于体育界和Crypto的新闻较少,因为和Crypto有关的比赛都正在赛场上进行。其中棒球比赛即将结束,NBA和NFL赛季即将开始,NHL季后赛也即将到来.

NFT:JZL Capital行业周报第50期:稳定币不断流出,市场持续低迷-ODAILY_ETH

一、行业动态总结 上周加密市场仍处于缩量的窄幅震荡,不管是每股上周二的上涨还是周三的暴跌,加密市场基本都是岿然不动,不同于以往的纳指波动放大器,当前的加密市场颇有纳指波动缩小器的表现.

GET:FTX陨落后,Bitget市场份额增幅最高-ODAILY_BIT

2023年1月19日-尽管2022年市场情绪低迷,但领先的加密货币衍生品交易所Bitget取得了令人欣喜的成绩,不但总交易量增长了300%,更成为全球衍生品领域前3大加密货币交易所.

GET:波场TRON账户总数突破1.32亿-ODAILY_togetherbnb按t打不开了

区块链浏览器TRONSCAN最新数据显示,截至12月29日,波场TRON账户总数达到132,000,370,正式突破1.32亿.

EFI:Chainlink为DeFi衍生品市场推出低延时预言机服务-ODAILY_DEF

保障DeFi衍生品市场的安全将为Web3带来巨大价值。衍生品在全球金融市场中的价值超过1000万亿美元。因此,DeFi金融衍生品将有无限潜力颠覆并改善传统衍生品市场.