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

以太坊:从一道CTF题折射出的智能合约安全问题

作者:

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

belluminarbank是俄罗斯战队在WCTF上出的一道EVM题目,其中用到了很多ETH中经典的漏洞。虽然难度都不是很大,但是如果对EVM相关特性不了解的话还是有一定难度的,我们就来介绍一下ETH智能合约中的安全问题。

这道题的题目是一个存储交易类合约,用户可以通过给合约发送ether实现将ether存储在合约中的目的。攻击者的目标就是将存储在这个合约里的所有ether全部取走。

我们不讲这个WCTF的题目,主要是了解智能合约中的安全问题有哪些,危害多大;

就以太坊智能合约的安全漏洞。新加坡国立大学的LoiLuu提出了现在的智能合约存在的几种安全漏洞。然而,由于智能合约目前还只是初级阶段,相信各种安全问题会不断的发现。

重入漏洞:

也被称为或与空竞争,递归调用漏洞,未知调用等。

印度尼西亚将于本月推出加密货币交易所:金色财经报道,印尼期货和商品交易监管局(Bappebti)将于2023年7月为印尼加密货币交易所揭幕。Bappebti负责人Didid Noordiatmoko表示,一旦交易所启动,所有加密货币交易只能通过交易所进行。昨天我们就证券交易所的规则达成了一致。因此,KYC流程和所有类型的交易都已被规范。

Noordiatmoko称,Bappebti已经在加密货币交易所推出之前做好了准备。昨天在交易商、交易所、清算和托管机构之间进行了系统集成测试。[2023/7/14 10:55:52]

菲尔戴安说过:这种漏洞在很多时候被很多不同的人忽略:审阅者倾向于一次一个地审查函数,并且假定保护子例程的调用将安全并按预期运行。

重入攻击介绍:

1.重入攻击,可能是最着名的以太坊漏洞;第一次被发现时,每个人都感到惊讶。

Bitfinex上线新API功能,允许用户将最多20个IP地址添加至白名单:6月2日消息,据官方公告,Bitfinex已上线新API功能,允许用户为每个API密钥最多将20个IP地址添加至白名单。通过使用该功能,用户的API密钥只能从特定的IP地址访问,可以防止API密钥遭到泄露后未经授权的使用。[2023/6/2 11:54:06]

2.它在数百万美元的抢劫案中首次亮相,导致了以太坊的分叉。

3.当初始执行完成之前,外部合同调用被允许对调用合同进行新的调用时,就会发生重新进入。

4.对于函数来说,这意味着合同状态可能会在执行过程中因为调用不可信合同或使用具有外部地址的低级函数而发生变化。

在以太坊中,当一个合约调用另一个合约的时候,当前的操作就要等到调用结束之后才会继续。这时,如果被调用者需要使用调用者当前所处的状态,那么这就产生了问题。

观点:比特币上涨或再次受益于美国银行业危机:金色财经报道,部分分析师将今日比特币大幅反弹的原因归咎于美国银行业危机的再次发酵。据美股数据显示,美股第一共和银行今日最大跌幅近 20%,盘中已两度停牌,目前跌幅收窄至 16%。另据 CNBC 援引消息人士报道,目前美国白宫或财政部似乎不愿意向银行施压,要求它们制定第一共和银行的资产出售计划。[2023/4/26 14:28:44]

著名的DAO攻击事件就是因为这个漏洞而发生的。

示例:

1.个聪明的合同跟踪些外部地址的平衡,并允许户通过其公共资检索withdraw()功能。

2.个恶意的智能合同使withdraw()函数检索其全部余额。

3.在更新恶意合同的余额之前,受害者合同执call.value(amount)()低级别函数将以太发送给恶意合同。

欧盟专员敦促加快对加密货币法律的表决速度:金色财经报道,欧盟专员Mairead McGuinness希望加快对加密货币法律的投票,该法律因程序原因被反复推后。

欧洲议会原定于本月对该立法进行表决,但由于担心文本的长度和复杂性,必须翻译成24种语言,因此被推迟到2月。尽管该立法原则上在去年6月达成一致,但投票也有可能在3月举行。它将在集团官方期刊上发表后的12至18个月内生效。官员们指出,根据禁止滥用客户资金的规定,MiCA本可以阻止FTX涉嫌的不当行为,但一些议员似乎持怀疑态度。(the block)[2022/12/10 21:34:47]

4.该恶意合同有个付fallback()接受资的功能,然后回调到受害者合同的withdraw()功能。

5.第次执会触发资转移:请记住,恶意合同的余额尚未从次提款中更新。结果,恶意合同第次成功退出了全部余额。

以下函数包含易受重攻击影响的函数。当低级别call()函数向msg.sender地址发送ether时,它变得易受攻击;如果地址是智能合约,则付款将触发其备功能以及剩余的交易体:

交易顺序依赖合约:

交易顺序依赖就是智能合约的执行随着当前交易处理的顺序不同而产生差异。例如,有两个交易T和T,两个区块链状态S和S,并且S状态处理完交易T后才能转化为状态S。那么,如果矿工先处理交易T,交易T调用的就是S状态下的智能合约;如果矿工先处理交易T再处理交易T,那么由于先执行的是T,合约状态就转化为S,最终交易T执行的就是状态S时的智能合约。

攻击方法举例:

攻击者提交一个有奖竞猜合约,让用户找出这个问题的解,并允诺给予丰厚的奖励。攻击者提交完合约后就持续监听网络,如果有人提交了答案的解,此时提交答案的交易还未确认,那么攻击者就马上发起一个交易降低奖金的数额使之无限接近0。当矿工处理这两个交易时,当前交易池就有两个待确认交易:一个交易是提交答案,一个交易是更改奖金数额。如果矿工先处理的是敌手更改奖金的交易,而敌手可以通过增加交易费用让矿工先处理自己的交易,那么等到矿工处理提交答案的交易时,答案提交者所获得的奖励将变得极低,敌手就能几乎免费的获得正确答案。

时间戳依赖合约,也称时间篡改;

矿工处理一个新的区块时,如果新的区块的时间戳大于上一个区块,并且时间戳之差小于900秒,那么这个新区块的时间戳就是合法的。这是以太坊协议所规定的。时间戳依赖顾名思义就是指智能合约的执行依赖当前区块的时间戳,随着时间戳的不同,合约的执行结果也有差别。

攻击方法举例:

1.一场比赛在今天午夜付出了第一名球员。

2.恶意矿工包括他或她试图赢得赛并将时间戳设置为午夜。

3.在午夜之前,矿工最终挖掘该块。当前的实时时间“能够接近”到午夜,络上的其他节点决定接受该块。

以下功能只接受特定期之后的呼叫。由于矿可以影响他们区块的时间戳,他们可以尝试挖掘个包含他们交易的区块,并在未来设定个区块时间戳。如果够接近,它将在网络上被接受,交易将在任何其他玩家试图赢得比赛之前给予矿工以太:

误操作异常:

在以太坊中,一个合约调用另一个合约可以通过send指令或直接调用另一个合约的函数。然而在调用过程中可能会出现错误,调用的合约就会回退到之前的状态。那么这个异常就可能无法很好地被调用者获知,这取决于调用方式。例如,通过send指令调用的合约应该通过检查返回值来验证合约是否被正确执行。

攻击方法举例:

有个名KingOfTheEtherThrone的智能合约:用户可以通过一定数量的以太币成为“以太币国王”,支付的数额由现任国王决定。很显然,当前国王可以通过买卖国王获得利润。当一个用户声称为国王后,合约就发送赔偿金给现任国王,并指定这个用户为新的国王。然而,这个合约并没有检查支付赔偿金的交易的结果。这样一旦合约在执行过程中产生了异常,现任国王就有可能同时失去王座和赔偿金。

可能的攻击方式就是敌手故意超出调用栈的大小限制。以太坊虚拟机规定调用栈的深度为1024。敌手在攻击之前,首先调用自身1023次,然后发送交易给KoET合约,这样就造成了合约的调用栈超出了限制,从而出现了错误。合约出错后,因为这个合约没有检查合约的返回值,那么如果合约在发送赔偿金给现任国王的过程中出现了异常,那么现任国王极有可能失去王座和赔偿金。

标签:以太坊ETHWCT以太坊币是什么币ETH钱包地址ETH挖矿app下载Etherael指什么寓意WCT币是什么币

狗狗币最新价格热门资讯
数字货币:【7.31行情分析】区块链行业:应用落地倒逼代币经济

首先我们讨论2个问题:第一个是区块链到底能解决什么问题;第二个是如果有一天国家的法定数字货币发行后,现有的数字货币还有没有价值.

1900/1/1 0:00:00
区块链:预警!“中国版Fomo3D” 3天吸金1亿元,区块链游戏Last Winner被质疑将套币跑路

“LastWinner项目方先用大地址给上万个新地址打币,然后再通过新地址往游戏的奖池地址里转移,制造出虚拟繁荣的现象,以吸引不明真相的吃瓜群众进场参与博弈.

1900/1/1 0:00:00
BCH:虫洞协议可能有坑 别急着烧掉你的BCH

来源:币圈邦德 8月1号是比特币的“独立日”,也是比特币现金的一周年纪念日。作为比特币最有价值的分叉币,比特币现金一直试图另辟蹊径,希望摆脱“支付陷阱”,避免与历经9年时间洗礼的老大哥在同一个赛.

1900/1/1 0:00:00
SAN:小儿脐疝不要慌,这些巧方法教各位宝妈如何治疗

新生儿身体各个方面都是很脆弱的,护理不当就会引起一些伤害,而这些伤害,可能会对宝宝生长发育带来不好的影响,所以家长千万要注意.

1900/1/1 0:00:00
XRP:「10.2行情分析」比特币先跌后涨,短期震荡行情持续

全球数字资产市场在昨日晚间震荡上升之后再2225亿上下区间小幅震荡。在昨日下午15:00开始,数字资产市场开始上涨,市值从2164.68亿美元上涨至2228.64亿美元.

1900/1/1 0:00:00
迪拜币:迪拜迪拉姆币,几朗币,中间币种你肯定不认识

迪拉姆中间币种你认识不,看下面答案迪拉姆1阿联酋迪拉姆=1.8523人民币卡塔尔币两把阿拉伯弯刀象征捍卫祖国的独立和自由;白色帆船象征不断发展的海上贸易和渔业生产;两棵椰子树象征丰富的自然资源;.

1900/1/1 0:00:00