零点课堂 | 主流区块链攻击底层逻辑(2)

3. 节点通信层

大部分公有区块链系统以P2P网络为基础,P2P网络技术重要的特点就是开放性,它在带来方便的同时,也伴随着各种安全问题。

P2P网络依赖附近的节点进行信息传输会暴露对方的IP,攻击者可以利用这个漏洞给其他节点带来安全威胁,区块链节点可能是普通家庭PC,可能是云服务器等等,其安全性参差不齐,其中安全性较差的节点更易遭受攻击,进而影响P2P网络的整体安全。

针对P2P网络,攻击者可以发动日蚀攻击、窃听攻击、分割攻击、延迟攻击、拒绝服务攻击(DDoS)等攻击。

日蚀攻击是其他节点实施的网络层面攻击,其攻击手段是囤积和霸占受害者的点对点连接的对等节点,将该节点从主网中隔离,这样的节点被为日蚀节点。这种类型的攻击旨在阻止最新的区块链信息进入到日蚀节点,使其成为信息孤岛,甚至控制其信息输入。

窃听攻击可以使攻击者将区块链中的用户标识与IP关联起来。

分割攻击的攻击者可以利用边界网关协议(BGP)劫持来将区块链网络划分成两个或多个不相交的网络,此时的区块链会分叉为两条或多条并行链。攻击停止后,区块链会重新统一为一条链,以最长的链为主链。其他的链将被废弃,其上的交易、奖励等全部无效。

延迟攻击是攻击者利用边界网关协议劫持来延迟目标的区块更新,而且不被发现。因为它是基于中间人修改目标请求区块的数据来做到的,在目标请求获取最新区块的时候,将它的这一请求修改为获取旧区块的请求,使得目标获得较旧的块。

DDoS攻击是通过大流量或漏洞的方式攻击P2P网络中的节点,使网络中部分节点网络瘫痪。

公有链对加入其中的用户不设任何访问授权机制,恶意节点可在加入后刻意扰乱运行秩序,破坏正常业务;而许可链尽管设置了不同等级的访问控制机制,也可能存在恶意节点利用漏洞混入进而展开攻击,或发生节点联合等情况。

鉴于以上这些情况可能带来的安全威胁:应在对等节点进行信息传输时进行加密,包括传输过程的加密和信息本身的加密;应通过安全散列计算及数字签名等技术保证传输过程中数据的完整性;应通过节点身份认证防止信息传递过程中受到攻击。对许可链而言,具体做法一是采取节点授权准入原则,二是在终端接入时进行身份认证,三是在交易前对节点通信双方进行身份认证。

4. 共识协议层

区块链有不同的类型,如根据准入机制不同,区块链分为公有链和许可链。这就需要相适应的共识机制来保证链上最后的区块能够在任何时候都反应出全网的状态。共识机制是维持区块链系统有序运行的基础,相互间未建立信任关系的区块链节点通过共识机制,共同对写入新区块的信息达成一致。

以Fabric为代表的许可链系统使用PBFT共识机制。PBFT是一种状态机副本复制算法,即作为状态机进行建模,使得状态机可以在分布式系统的不同节点进行安全可靠的副本复制。对于许可链来说,由多信任方共同管理维护,节点信任度高,使得PBFT成为首选共识机制。只要大于2/3的节点是诚实的,PBFT就能在理论上保证系统的安全性,所以目前没有针对PBFT的有效攻击方法。

公有链与许可链在共识协议安全上考虑的因素不尽相同。以PBFT为代表的传统BFT算法的安全前提通常只假设整个网络中恶意节点不超过一定比例(比如不超过33%),但不去追究或考虑恶意节点的比例为何可以满足实际要求,也不考虑如何通过制度设计引导节点控制者的行为以促成恶意节点的比例不超阈值。但对于大部分公有链而言,由于节点可以匿名地动态加入及退出,如果没有良好的基于经济人假设的奖惩制度设计,合作不会自动产生,类似于“恶意节点比例不超阈值”这样的安全前提也不会神秘地自动满足。所以本文所说的“共识机制”,也包括区块链的激励机制。

以比特币为代表的公有链多使用POW共识机制。POW共识机制本质上就是在所有提供算力资源的集群中通过一种算法机制选择出一个幸运节点,因POW算法不存在终局性(即可被后期追赶的最长链推翻)状态,一旦总算力过小,则非常容易被攻击者劫持整个区块链,严重影响区块链系统的安全性。

尤其随着通用矿机(可以挖多种币的矿机)和算力云化租赁服务的出现,算力分布更容易随着租赁方的变化在不同链之间快速切换,这是因为此时某条链上的加密货币受到攻击而贬值不会影响到矿机拥有者的利益,所以矿机拥有者有动力出租矿机给黑客而不顾及用途,从而降低了51%攻击的门槛。

以Peercoin为代表的加密货币使用POS共识机制。采用工作量证明机制发行新币,采用权益证明机制维护网络安全。POS机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。

常见的针对公链共识机制的攻击有51%攻击、长距离攻击、币龄累计攻击、预计算攻击等。其中长距离攻击、币龄累计攻击、预计算攻击是针对POS共识机制的;51%攻击是针对POW共识机制的。

5. 运行平台层

区块链的运行平台层,在密码算法层、节点通信层、共识协议层的基础上构建了面向智能合约和区块链应用的运行环境,是构成区块链PAAS服务的核心部分,其攻击与安全风险主要来自于智能合约虚拟机的设计与实现。

智能合约虚拟机是区块链智能合约的运行环境。安全的智能合约虚拟机是沙盒封装的,并确保其运行环境是完全隔离的,即在智能合约虚拟机中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问和调用也需要接受必要的管理和限制。

智能合约虚拟机运行在区块链的各个节点上,接收并部署来自节点的智能合约代码,若虚拟机存在漏洞或相关限制机制不完善,很可能运行来自攻击者的恶意的智能合约。目前针对合约虚拟机的主要攻击方式有:逃逸漏洞攻击、逻辑漏洞攻击、堆栈溢出漏洞攻击、资源滥用漏洞攻击。

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

逻辑漏洞攻击是指利用编码不合规范,未对特定数据或代码做容错处理,进而构建特定场景,导致系统出现逻辑问题。

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

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

本文由 零点财经 作者:tao 发表,其版权均为 零点财经 所有,文章内容系作者个人观点,不代表 零点财经 对观点赞同或支持。如需转载,请注明文章来源。
分享生成图片
44

发表回复

零点课堂 | 主流区块链攻击底层逻辑(2)

2021-06-24 10:24:31

3. 节点通信层

大部分公有区块链系统以P2P网络为基础,P2P网络技术重要的特点就是开放性,它在带来方便的同时,也伴随着各种安全问题。

P2P网络依赖附近的节点进行信息传输会暴露对方的IP,攻击者可以利用这个漏洞给其他节点带来安全威胁,区块链节点可能是普通家庭PC,可能是云服务器等等,其安全性参差不齐,其中安全性较差的节点更易遭受攻击,进而影响P2P网络的整体安全。

针对P2P网络,攻击者可以发动日蚀攻击、窃听攻击、分割攻击、延迟攻击、拒绝服务攻击(DDoS)等攻击。

日蚀攻击是其他节点实施的网络层面攻击,其攻击手段是囤积和霸占受害者的点对点连接的对等节点,将该节点从主网中隔离,这样的节点被为日蚀节点。这种类型的攻击旨在阻止最新的区块链信息进入到日蚀节点,使其成为信息孤岛,甚至控制其信息输入。

窃听攻击可以使攻击者将区块链中的用户标识与IP关联起来。

分割攻击的攻击者可以利用边界网关协议(BGP)劫持来将区块链网络划分成两个或多个不相交的网络,此时的区块链会分叉为两条或多条并行链。攻击停止后,区块链会重新统一为一条链,以最长的链为主链。其他的链将被废弃,其上的交易、奖励等全部无效。

延迟攻击是攻击者利用边界网关协议劫持来延迟目标的区块更新,而且不被发现。因为它是基于中间人修改目标请求区块的数据来做到的,在目标请求获取最新区块的时候,将它的这一请求修改为获取旧区块的请求,使得目标获得较旧的块。

DDoS攻击是通过大流量或漏洞的方式攻击P2P网络中的节点,使网络中部分节点网络瘫痪。

公有链对加入其中的用户不设任何访问授权机制,恶意节点可在加入后刻意扰乱运行秩序,破坏正常业务;而许可链尽管设置了不同等级的访问控制机制,也可能存在恶意节点利用漏洞混入进而展开攻击,或发生节点联合等情况。

鉴于以上这些情况可能带来的安全威胁:应在对等节点进行信息传输时进行加密,包括传输过程的加密和信息本身的加密;应通过安全散列计算及数字签名等技术保证传输过程中数据的完整性;应通过节点身份认证防止信息传递过程中受到攻击。对许可链而言,具体做法一是采取节点授权准入原则,二是在终端接入时进行身份认证,三是在交易前对节点通信双方进行身份认证。

4. 共识协议层

区块链有不同的类型,如根据准入机制不同,区块链分为公有链和许可链。这就需要相适应的共识机制来保证链上最后的区块能够在任何时候都反应出全网的状态。共识机制是维持区块链系统有序运行的基础,相互间未建立信任关系的区块链节点通过共识机制,共同对写入新区块的信息达成一致。

以Fabric为代表的许可链系统使用PBFT共识机制。PBFT是一种状态机副本复制算法,即作为状态机进行建模,使得状态机可以在分布式系统的不同节点进行安全可靠的副本复制。对于许可链来说,由多信任方共同管理维护,节点信任度高,使得PBFT成为首选共识机制。只要大于2/3的节点是诚实的,PBFT就能在理论上保证系统的安全性,所以目前没有针对PBFT的有效攻击方法。

公有链与许可链在共识协议安全上考虑的因素不尽相同。以PBFT为代表的传统BFT算法的安全前提通常只假设整个网络中恶意节点不超过一定比例(比如不超过33%),但不去追究或考虑恶意节点的比例为何可以满足实际要求,也不考虑如何通过制度设计引导节点控制者的行为以促成恶意节点的比例不超阈值。但对于大部分公有链而言,由于节点可以匿名地动态加入及退出,如果没有良好的基于经济人假设的奖惩制度设计,合作不会自动产生,类似于“恶意节点比例不超阈值”这样的安全前提也不会神秘地自动满足。所以本文所说的“共识机制”,也包括区块链的激励机制。

以比特币为代表的公有链多使用POW共识机制。POW共识机制本质上就是在所有提供算力资源的集群中通过一种算法机制选择出一个幸运节点,因POW算法不存在终局性(即可被后期追赶的最长链推翻)状态,一旦总算力过小,则非常容易被攻击者劫持整个区块链,严重影响区块链系统的安全性。

尤其随着通用矿机(可以挖多种币的矿机)和算力云化租赁服务的出现,算力分布更容易随着租赁方的变化在不同链之间快速切换,这是因为此时某条链上的加密货币受到攻击而贬值不会影响到矿机拥有者的利益,所以矿机拥有者有动力出租矿机给黑客而不顾及用途,从而降低了51%攻击的门槛。

以Peercoin为代表的加密货币使用POS共识机制。采用工作量证明机制发行新币,采用权益证明机制维护网络安全。POS机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。

常见的针对公链共识机制的攻击有51%攻击、长距离攻击、币龄累计攻击、预计算攻击等。其中长距离攻击、币龄累计攻击、预计算攻击是针对POS共识机制的;51%攻击是针对POW共识机制的。

5. 运行平台层

区块链的运行平台层,在密码算法层、节点通信层、共识协议层的基础上构建了面向智能合约和区块链应用的运行环境,是构成区块链PAAS服务的核心部分,其攻击与安全风险主要来自于智能合约虚拟机的设计与实现。

智能合约虚拟机是区块链智能合约的运行环境。安全的智能合约虚拟机是沙盒封装的,并确保其运行环境是完全隔离的,即在智能合约虚拟机中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问和调用也需要接受必要的管理和限制。

智能合约虚拟机运行在区块链的各个节点上,接收并部署来自节点的智能合约代码,若虚拟机存在漏洞或相关限制机制不完善,很可能运行来自攻击者的恶意的智能合约。目前针对合约虚拟机的主要攻击方式有:逃逸漏洞攻击、逻辑漏洞攻击、堆栈溢出漏洞攻击、资源滥用漏洞攻击。

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

逻辑漏洞攻击是指利用编码不合规范,未对特定数据或代码做容错处理,进而构建特定场景,导致系统出现逻辑问题。

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

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