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

ALA:智能合约中的重入攻击_USD

作者:

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

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由NickSzabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。

漏洞概述:

因为以太坊智能合约中是可以调用外部的合约代码,外部合约可能是攻击者构造的恶意不安全的合约代码,当在转账操作时执行代码,迫使攻击的合约回调包括自身的代码,和绕过源代码的限制发生了重入攻击事件。

发生重入攻击漏洞有两个原因:

IBC Group创始人:Alameda Research开始转移其Arbitrum链上资金:11月14日消息,IBC Group创始人兼首席执行官Mario Nawfal在社交媒体上透露,Alameda Research开始转移在Arbitrum链上的资金。据Dune Analytics数据显示,当前Alameda Research钱包总余额已降至54,839,475美元,FTX钱包总余额已降至81,516,591美元。[2022/11/14 13:02:41]

1.?调用了外面不安全的合约代码

21.co研究总监:Alameda在Aave上借入做空USDT并在Curve上卖出USDT换取USDC:11月10日消息,21Shares母公司21.co研究总监elindinga表示,Alameda通过在Aave上借入做空USDT(因此USDT的APY较高),并在Curve上卖出USDT换取USDC。[2022/11/10 12:44:59]

2.?外部合约的函数早于状态变量的修改

数据:1,437枚BTC从Xapo转移到未知钱包:金色财经报道,Whale Alert数据显示,1,437枚BTC从Xapo转移到未知钱包。[2022/8/16 12:27:38]

漏洞分析:

看withdraw函数,我们可以看到它接收了一个_amount参数,将其与发送者的balance进行比较,不超过发送者的balance就将这些_amount发送给sender,同时我们注意到这里它用来发送ether的函数是call.value,发送完成后,它才在下面更新了sender的balances,这里就是可重入攻击的关键所在了,因为该函数在发送ether后才更新余额,所以我们可以想办法让它卡在call.value这里不断给我们发送ether,同样利用的是我们熟悉的fallback函数来实现。

数字交易平台Linqto收购DeFi服务平台Trustline:金色财经消息,数字交易平台Linqto宣布已完成收购Trustline。据悉,Trustline以XRP Ledger为基础,在支付、交易和贷款方面提供去中心化金融服务的技术平台。(PR News Wire)[2022/8/12 12:19:43]

当然,这里还有另外一个关键的地方——call.value函数特性,当我们使用call.value()来调用代码时,执行的代码会被赋予账户所有可用的gas,这样就能保证我们的fallback函数能被顺利执行,对应的,如果我们使用transfer和send函数来发送时,代码可用的gas仅有2300而已,这点gas可能仅仅只够捕获一个event,所以也将无法进行可重入攻击,因为send本来就是transfer的底层实现,所以他两性质也差不多。

2016年6月以太币组织TheDAO被攻击,攻击者利用两个代码漏洞创建子合约提取了360万个以太币。接下来我们简单说一下这个事件

攻击者利用the?DAO函数智能合约中splitDAO()函数,重复对DAO资产进行重入攻击,不断从项目的资产里面分离出DAO资产并转移到自己的账户中

1.?创建钱包,调用splitDAO函数

2.?创建一个分割提案到一个新的钱包地址

3.?等待再调用splitDAO函数

4.?成功获取了ether

?解决方法:

1.?使用其他转账函数

进行以太坊转账时发送给外部地址时使用Solidity的内置函数,这将不足以调用另一份合约.

2.?先修改状态变量

这种方式就是确保状态变量的修改要早于转账操作,即Solidity官方推荐的检查-生效-交互模式(checks-effects-interactions)。

1.?使用互斥锁

互斥锁就是添加一个在代码执行过程中锁定合约的状态变量以防止重入攻击。

2.?使用OpenZeppelin官方库

OpenZeppelin官方库中有一个专门针对重入攻击的安全合约

??本文作者:权星实验室团队

来源:金色财经

标签:ALADAOUSDEDAgala币最新消息StakerDAOAave USDCDOGEDASH

DAI热门资讯
UND:Sundaewap作为Cardano的先驱 DEX, 或成为Dex游戏规则改变者_Safeswa

“虽然仍处于早期阶段,但Sundaewap作为Cardano推出的DeFi生态系统中的先驱DEX,首次亮相对于希望在更具可扩展性的智能合约生态系统中交换代币的加密用户来说是一个游戏规则改变者.

1900/1/1 0:00:00
NFT:晚间必读5篇 | 明星扎堆入局NFT 谁才是真正的掘金者_CranberrySwap

1.元宇宙进入“军备赛”时代1月24日,工业和信息化部中小企业局局长梁志峰在发布会上表示,特别要注重培育一批深耕专业领域工业互联网、工业软件、网络与数据安全、智能传感器等方面的“小巨人”企业.

1900/1/1 0:00:00
比特币:简述比特币的安全性到底有多高?_比特币sv是什么

比特币从09年诞生直径,已经过去12年了,从一文不值到目前的近4万美金一枚,总市值7500多亿美金.

1900/1/1 0:00:00
ETH:Opyn推出Squeeth:像永续期权的杠杆代币,那为何不用永续期权呢?_togetherbnb更新了吗

作者:北辰DeFi领域最老牌期权项目是Hegic和Opyn,他们的产品是传统期权。Hegic的期权类型比较单一,只有ETH和WBTC的看涨/看跌期权.

1900/1/1 0:00:00
NFT:金色Web3.0周报 | 推特推出NFT头像功能 马斯克称该功能“很烦人”_CAP

DeFi数据1.DeFi代币总市值:1164.42亿美元 DeFi总市值数据来源:Coingecko2.过去24小时去中心化交易所的交易量:90.

1900/1/1 0:00:00
BNB:以太坊大饼今日最新波动动态以及操作提示_以太坊交易是什么

??大家早上好,目前以太坊实时价格2451美金,大饼35600美金;根据目前一小时级别线,短线处于附近较小点位震荡,有继续回调趋势;根据K线形态,以太坊目前高点2540一线压力位短期比较难突破.

1900/1/1 0:00:00