疯狂搬运币的黑客如何攻击区块链干货

2023-3-12 来源:不详 浏览次数:

北京白癜风十佳医院 http://m.39.net/pf/a_11497623.html

雷锋网编者按:“我们不生产币,我们是币的搬运工。”白帽汇安全研究院负责人邓焕如此描绘他所观察到黑客在区块链币世界的猖獗现象。“有些技术可以产品先行,但是自带金融属性的技术必须得安全先行。”白帽汇CEO赵武这样说。在专业的安全研究人员看来,黑客要想攻击区块链实在太简单了,那么自带金融属性的区块链又受到了哪些安全威胁?5月9日,白帽汇安全研究院联合安全智库发布了一份《区块链安全分析报告》,雷锋网截取了其中“区块链攻击对象分析”部分章节。

3.5合约层

3.5.1合约虚拟机

随着区块链技术的不断升级,区块链已经具备在链上繁衍出多种应用的功能,而实现这种功能的基础就是合约虚拟机(用于运行各种智能合约的平台),此技术的出现极大的提高了区块链的可扩展性,是区块链2.0的重要标志。

合约虚拟机的出现为合约代码提供了沙盒式的执行环境。

风险

合约虚拟机运行在区块链的各个节点上,接受并部署来自节点的智能合约代码,若虚拟机存在漏洞或相关限制机制不完善,很可能运行来自攻击者的恶意的智能合约。

针对合约虚拟机的安全风险,我们分析总结了以下攻击方式:

逃逸漏洞

虚拟机在运行字节码的时候会提供一个沙盒环境,一般用户只能在沙盒的限制中执行相应的代码,此类型漏洞会使得攻击者退出沙盒环境,执行其他本不能执行的代码。

逻辑漏洞

虚拟机在发现数据或代码不符合规范时,可能会对数据做一些“容错处理”,这就导致可能会出现一些逻辑问题,最典型的是“以太坊短地址攻击”。

堆栈溢出漏洞

攻击者可通过编写恶意代码让虚拟机去解析执行,最终导致栈的深度超过虚拟机允许的最大深度,或不断占用系统内存导致内存溢出。

此种攻击可引发多种威胁,最严重的是造成命令执行漏洞。

资源滥用漏洞

攻击者可以在虚拟机上部署一份恶意代码,消耗系统的网络资源、存储资源、计算资源、内存资源。

所以在虚拟机中必须要有相应的限制机制来防止系统的资源被滥用。

在以太坊中采用的是gas机制,攻击者想要在以太坊虚拟机上做更多操作,需要付出经济代价。

案例

以太坊短地址漏洞:由于EVM并没有严格校验地址的位数,并且还擅自自动补充消失的位数,使得合约多发送很多代币出来。

3.5.2智能合约

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。

风险

智能合约本质上是一份代码程序,难免会有因为考虑不周的导致出现漏洞的情况,所以在发布一份智能合约之前,进行大量的模糊测试与白盒审计是必不可少的。

在将大量资金放入合约之前,合约应当进行大量的长时间的测试。

至少应该:

拥有%测试覆盖率的完整测试套件(或接近它)

在自己的testnet上部署

在公共测试网上部署大量测试和错误奖励

彻底的测试应该允许各种玩家与合约进行大规模互动

在主网上部署beta版以限制风险总额

针对智能合约的安全风险,我们分析总结了以下攻击方式:

可重入攻击

当智能合约A调用智能合约B时,智能合约B可以在被调用的函数中写入“使智能合约A调用智能合约B”的代码,这样就造成了可重入攻击。

比较典型的一个案例:

1.智能合约A向智能合约B发起提现请求

2.智能合约B向智能合约A转账,并调用智能合约A的回调函数

3.智能合约A的回调函数中被写入的操作是“智能合约A向智能合约B发起提现请求”。

4.又回到了步骤1,一直循环步骤直到不满足循环条件。

5.提现结束

调用深度攻击

在合约虚拟机中,会对智能合约的互相调用的深度定一个阈值,超过这个深度调用就会失败,例如在以太坊EVM中,调用深度被限制为。

调用深度攻击可以让合约调用失败,即使这个调用在逻辑上不存在任何问题,但是在虚拟机层面以及不被允许了,因为调用深度达到了虚拟机中的阈值,超过阈值不再往下执行。

攻击者可以通过控制调用深度,来使某些关键操作无法执行,例如:转账、余额清零等。

交易顺序依赖攻击

智能合约的执行会随着当前交易处理顺序的不同而产生不同的结果。

场景:攻击者发布一个解题合约,在合约中写给出丰厚的解题奖励。等有人提交了正确答案后,此时的答案还需要经过其他节点的确认,合约才会执行奖励操作。此时攻击者可以提交一个将奖励额度调低的交易,这笔交易肯定是在奖励操作的后面,理论上不会造成给答题人带来损失。

但是,在区块链项目中,交易顺序并不是一成不变的,例如在以太坊中,交易顺序就会随着交易发布者的gas(交易费)的高低来决定先确认哪笔交易。

此时若攻击者更改奖励额度的交易给的交易费比较高,验证节点会先执行这笔交易,最终会导致答题人最后得到的奖励额度是调低的额度。而攻击者以一个较低的成本就买到了正确答案。

时间戳依赖攻击

如果智能合约在敏感操作中依赖时间戳,可能会导致执行结果被预测。

场景:若发布一个抽奖合约,抽奖结果由当前区块的时间戳和其他因素组合计算而来,攻击者可以通过提前尝试不同的时间戳来计算这个抽奖结果,从而导致结果被预测。

误操作异常攻击

当合约A调用另外一个合约B的操作的时候,合约B操作的执行可能会因为种种原因导致执行失败,从而退回到未执行前的状态,此时合约A若不检查合约B执行的结果继续往下执行,会导致很多问题。

场景:合约A调用合约B的提现操作后并在合约A的余额中增加与提现额度一样的数值。此时若没检查合约B的执行提现操作的返回值,就可能会导致合约B中的余额并没减少,而合约A中的余额却已经增加了。

整数溢出攻击

在常见的程序语言中,对整数类型的变量一般都会有最大值和最小值。智能合约本质上也是一份程序代码,合约中的整数也会有相应的最大值和最小值。一旦变量所存储的值超过了最大值就会发生整数上溢错误,导致变量最后存储的值为0,反之则是整数下溢错误,变量最后存储的值为变量最大值。当然,溢出的情况并不限于以上整数上溢或者整数下溢,还可能会在计算、转换等过程中发生溢出。

场景:假设某个智能合约中的余额为无符号整数类型,此类型的范围为0~,当攻击者通过某种方法使余额小于0时,它在智能合约中的余额将下溢为。使余额大于时,它在智能合约中的余额将上溢为0。

基于以太坊的多个ERC20智能合约就遭受过整形溢出漏洞的影响,如图:该漏洞就是一个典型的整形溢出导致,绕过业务逻辑,能够刷出大量的token。

ERC20相关的智能合约中就曾曝出过batchTransfer(CVE-–),SmartMesh合约中transferProxy函数,proxyTransfer函数(CVE--),UET合约的transferFrom函数(CVE--),都出现过整形溢出的问题。

案例

1.年6月发生了一起史上最大的智能合约事件,它就是著名的TheDAO攻击事件。导致价值万美元的以太币被盗,迫使以太币被硬分叉为ETH和ETC。

2.年7月,以太坊发生了Parity多重签名钱包被盗事件,黑客从从三个高安全的多重签名合约中窃取到超过15万ETH(约万美元)。

3.年4月,BeautyChain(BEC)智能合约中出现了一个灾难性的漏洞(整形溢出漏洞),导致损失约10亿美元

4.年4月,SMT的智能合约漏洞(整形溢出)。

3.6业务层

3.6.1交易平台

3.6.1.1网络带宽

目前在网络中有许多以区块链作为底层技术的加密货币的交易平台,用户在通过交易平台来购买和出售加密货币,对于主流的交易平台,每天都有大量的用户在平台上进行交易,其网络带宽对于交易平台来说至关重要。

风险

针对交易平台的安全风险主要为拒绝服务攻击:

拒绝服务攻击

由于交易平台对于网络带宽的存在高需求,所以一旦发生DDoS攻击,对于平台和整个行业来说是非常严重的。若交易平台被DDoS攻击,不但交易平台蒙受损失,区块链货币的交易量也将大大减少,间接影响区块链货币的涨跌,在我们统计的安全事件中,以及调查的相关案例显示目前只要是交易平台上线都遭受到DDOS攻击过。

场景:攻击者首先通过DDOS使平台无法访问,此时通常一定会有相关的新闻资讯报道这次事件。然而普通大众并分不清拒绝访问攻击与入侵的区别,在自己所使用的交易平台被“攻击”后,为了自己的资金安全通常会选择转向别的平台,导致此平台资金、用户流失。

案例

1.年5月12日,Poloniex交易平台遭受了严重的DDoS攻击,BTC/USDT的交易价格一度困于美元,绝大多数用户都无法执行订单或是提取资金。

2.年12月12日,比特币交易平台Bitfinex遭受严重DDoS攻击,API瘫痪。消息传出后,比特币下跌1.1%,报美元。

3.6.1.2账户体系

账户是交易平台必须具备的基础配置,账户是开户的凭证,包含账号和密码,意味着你成为他们的用户,平台必须根据相关条约对你账号的隐私、安全负责。

风险

交易平台为保证用户的资金安全需要建立高强度的账户安全体系。具体需要做到如下几点:

1.防撞库,人机识别

2.进行敏感操作的时候启用多因素认证

3.逻辑缜密,务必要杜绝“密码找回漏洞”、“登陆绕过”、“越权访问/调用”等漏洞

4.防暴力破解,对登陆频率进行限制

5.防cookie泄露,开启

转载请注明:
http://www.wanruiguanye.com/bzys/77435476.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: