本文深入探讨了区块链架构的五个主要层级(基础设施层、数据层、网络层、协议层和应用层),详细分析了每个层级中常见的安全漏洞,如长程攻击、女巫攻击、加密攻击等,并提供了针对性的防御措施。文章强调了区块链安全的重要性,并建议开发者在构建区块链时堵塞所有漏洞。
更新于:2025 年 6 月 30 日
12 分钟阅读
作者:Hacken
区块链具有用于布局其逻辑和操作模式的架构。然而,不幸的是,一旦攻击者在架构中找到漏洞,他们就可以操纵这样的区块链。
通常将区块链层划分为 5 个主要部分,使其类似于众所周知的 OSI 模型,但没有标准。这些层通常是基础设施层、协议层(也称为共识层)、数据层、网络层和应用层。
让我们更批判性地检查每一层:
基础设施层是区块链技术的基础,包括软件和硬件。
基础设施层中的主要元素之一是确定网络的性质。区块链网络可以是公共的或私有的,显示它们是无需许可的还是需要许可的。
例如,以太坊和 Hyperledger 等区块链网络分别是公共的和私有的。在解决了网络的性质之后,节点是区块链网络的第二个组成部分。
它们是人工控制的硬件或连接到网络的设备。它们的主要职责是验证和广播交易。作为基础设施,节点是帮助区块链网络具有功能性共识层的核心要素。
数据结构和利用适用于包括区块链在内的所有工程领域。当外部所有账户使用其私钥签名时,交易的主要数据变得可用。
但由于区块链技术的敏感性,交易会被加密。密码学中有两种加密方法:对称加密和非对称加密。
因此,大多数区块链在其数据层中采用非对称加密方法。非对称方法利用双方的密钥对来保存敏感信息。在此过程中,每个交易都会进入一个数据块,供验证者或矿工验证。
一些区块链自己存储数据,而另一些区块链则外包给模块化链。存储也可以是链上的或链下的。
网络层促进整个架构内的数据通信。网络层的点对点组件使数据传输成为可能。
对等方是在其核心运行它们的节点或实体。由于区块链技术的安全性质,它不会自动接受每个网络数据为真。数据通过各种验证机制进行审查。
我们将在协议层下更详细地讨论这些机制。网络层还通过可信执行环境 (TEE) 来巩固数据的机密性。TEE 可确保任何攻击者都难以破坏传输中数据的完整性。
区块链的协议层规定了网络中的对等方如何达成共识。它还处理区块链网络的核心模型及其操作模式。
协议层的第一个组成部分是区块链的共识机制。它可以是权益证明、权威证明、空间证明等等。对于Layer2区块链,协议层也可以是侧链。
顾名思义,侧链与主链并排运行。
应用层从区块链网络中抽象出许多底层的技术细节。用户可以与区块链的应用层进行交互。
用户在应用层看不到底层的代码。他们只知道利用区块链技术上的产品或服务的界面。但应用层有一个链码后门。
链码是链上基础设施的一个更大的包,有助于应用层正常运行。它主要包括智能合约。
应用层通常存在于分散的网站或移动应用程序中。DApp 的示例包括 Uniswap、Metamask 和 Magic Eden。
到目前为止,在区块链协议中,始终存在一些主要漏洞。这些问题影响开发人员、项目经理、利益相关者和整个网络,对区块链生态系统造成重大损害。
协议层容易受到许多区块链安全问题的影响,例如:
远程攻击不是一个小问题,因为它具有高严重性,必须尽快修复。
当攻击者设法分叉并更改链的历史记录时,就会发生远程攻击。由于新链比有效链更长,因此攻击者可以包含不同的交易。
接收者可以通过在完成付款之前等待足够的区块确认来防范这种攻击。
竞争攻击是一种高严重性的漏洞,可能会危及区块链协议。
恶意黑客可以通过向接收者发送交易来执行竞争攻击。同时,攻击者会将相同的金额发送给自己以取消付款。如果接收者在完成付款之前未确认交易,他们将成为受害者。
避免这种区块链安全问题的方法是等待足够长的时间,以便在付款上附加数字签名。
活性攻击是一种极其严重的高严重性漏洞,可能导致区块链网络暂时或永久关闭。
PoS 区块链中的验证者形成一个内部阴谋来执行此攻击。他们一致同意停止生产区块,区块链停止。
社区可以通过分叉链来修复此攻击,因此新的诚实验证者可以继续生产区块。
审查攻击是一种关键漏洞,会延迟或阻止区块链协议运行。
区块链的验证者可以决定由于个人或不公平的原因而不将一些准备好的交易添加到区块中。这种审查威胁了此类区块链的分散性质。
社区可以惩罚这种不公平的验证者。采用 ZK 方法更好,因为它会隐藏交易背后的人的身份。
每个 PoW 区块链都注定会面临这种高严重性的攻击。
Finney 攻击以 Harold Finney 的名字命名,是双重支付攻击的一种。矿工将交易预先挖掘到一个区块中,并在接收者确认付款后广播它。
接收者可以通过确定更多区块确认交易的有效性来避免这种攻击。
vector76 漏洞具有高严重性,并且有能力劫持区块链协议。
Vector76 攻击是一种复杂且不常见的利用形式。当攻击者诱骗交易所批准大额交易时,就会发生这种情况。
防止此攻击的方法是交易所避免过早批准付款。
替代历史攻击是一种高严重性的攻击,它会操纵区块链重组机制。
在这种利用中,攻击者将加密货币发送给接收者。然后继续挖掘链的替代方案,返回相同的金额。
只有在有足够的区块确认时,接收者才应批准交易。
51% 攻击是区块链协议层中最严重的高严重性漏洞之一。
当单个实体拥有过多的质押或计算能力时,这种攻击是可能的。该实体可以使用支配地位来单方面地对链做出重大决策。
社区可以通过确保没有人在网络中拥有相对较大的权力来防止此区块链漏洞。
这是一种极其危险的漏洞,可以操纵协议的预计算。
如果验证者可以操纵链来选择他们作为插槽领导者,则可以进行研磨攻击。而选择应该是随机的。
纠正此技巧的主要方法是在区块链如何选择区块中的插槽领导者时引入随机性。
这是 PoS 和 DPoS 区块链常见的高度严重的弱点。
漏洞可能发生在质押和奖励的增加时。一旦攻击者质押并且他们的奖励复合,他们就可以劫持网络。
避免此漏洞的最佳方法是限制质押奖励的范围以及它们增长的频率。
网络层容易受到以下区块链安全问题的攻击:
这是一个严重的漏洞,恶意节点运营商可以利用它来接管区块链的网络层。
当攻击者创建并控制大量帐户或大量节点时,就会发生女巫攻击。这可能导致 51% 的攻击甚至 DoS。
区块链网络可以通过确保没有具有单个 IP 地址的验证者运行多个节点来防范女巫攻击。
这是一个高度严重的安全问题,攻击者可以利用它来一个接一个地操纵节点。
黑客会将节点与网络分离,并将其与其他恶意节点连接。结果,它可能会损害其传入和传出数据。
区块链背后的团队可以通过增加与节点的连接数量来防止这种情况。他们还可以进行渗透测试,以确保安全性。
它是网络层中一种低严重性的攻击。
攻击可以窃听网络以检测某些敏感信息。然后,他们可以继续使用这些关键细节来利用网络。
采用安全严格的加密模型是修复窃听攻击的推荐方法。
拒绝服务攻击具有中等严重性,因为它只会导致区块链暂时效率低下。
攻击者可以通过大量超出其容量的请求来启动 DoS 攻击。结果,网络将停止服务。
第一个区块链安全建议是增加不同位置的节点数量。然后它们限制了内存队列的大小。
这是区块链网络层可能发生的低严重性安全问题。
当边界网关协议成功受到破坏时,就会发生此攻击。这样,攻击者可以操纵路由表来劫持网络上的 IP 地址。
仅仅是增加几个区域的节点就可以防止 BGP。
即使对于区块链的 P2P 层,这也会自然发生,属于一种低严重性的问题。
广泛的区块链生态系统中的节点可能会发现很难区分自己。这可能会导致外星人攻击,因为两个不同的节点可能会启动不适当的交互。外星人攻击会降低性能,并最终导致受影响的节点在网络中失效。
集成 ChainID 等 ID 安全协议可以防止这种情况。
这是一个高度关键的漏洞,可能会误导节点。
典型的时间劫持攻击发生在攻击者破坏节点的时间戳以将其与其诚实的对等方断开连接时。然后利用伪造的时间戳将节点连接到可疑的替代区块链。
有两种流行的最佳做法来修复时间劫持:限制接受时间范围和采用节点系统时间。
恶意参与者可能会通过以下区块链安全问题来破坏区块链数据层的完整性:
它们是高度严重的漏洞,使攻击者可以控制数据层中的密钥管理机制。
密码学攻击可以采用各种格式,例如蛮力攻击、中间人攻击和重放指责。
检查这种攻击的主要最佳实践是避免使用随机或未知的加密库。
如果可以预测私钥,则区块链的数据层可能处于高度严重的状态。
帐户使用其私钥对交易进行签名。但是一旦私钥可以很容易地猜到,帐户就不安全了。
网络可以通过合并经过更多实战考验的密码学伪随机数生成器来缓解私钥预测漏洞。
虽然长度扩展攻击的严重性较低,但应予以修复。
当攻击者可以成功计算哈希的长度时,就会执行此攻击。然后将其呈现为真实消息。
避免将 Merkle-Damgard 结构用于哈希函数是一种有效的预防机制。
这是一种高严重性的攻击,使攻击者可以进行双重支付。
通常在交易中花费特定的加密货币数量。但是,当一方两次支付加密货币的数量时,会发生交易重放攻击。
在这种情况下,需要的区块链安全措施是有效使用 nonce。
这种攻击是一种极其关键的漏洞,使用交易签名的区块链注定会面临这种攻击。
攻击者在区块确认之前使用延展性攻击来更改其 ID。结果,他们可以存入甚至提取两次。在大多数情况下,此漏洞可以追溯到签名库。
因此,请始终仔细检查你的签名库是否具有抵抗力,以确保区块链安全。
此攻击的严重性较低,因为黑客只能进行一些重要的利用。
当一方已将一些 Token 锁定指定的时段时,就会发生时间锁定交易操纵。然后尝试在发布时间之前从这些 Token 中花费。收件人可能仍然需要收到付款。
从区块链安全角度来看,你可以通过进行链上分析来了解此类 Token 是否未被时间锁定来修复此问题。
虚假充值攻击是可能会耗尽区块链中所有资金的关键漏洞。
如果攻击者成功进行不真实的转账,他们就可以进行虚假充值攻击。令人惊讶的是,不真实的转账将显示为实时充值。
区块链安全的补救措施是在少量区块确认后确认付款。
这是一种非常危险的攻击,可能会影响区块链的数据层。
典型的冲突攻击发生在两个单独的输入具有相同的哈希值时。此冲突可能是自然偶然发生的,也可能是精心策划的。
对此问题的建议解决方案是避免所有属于 Merkle-Damgard 结构下的易受攻击的算法。相反,最好使用 SHA-3 或 SHA-256。
跑路攻击可能是 Web3 中最具致命性的攻击形式之一。
攻击者通常会启动一个花哨的 Token,大肆宣传,并鼓励人们购买它。一旦有大量的总存款,攻击者将非法提取所有流动性并使 Token 变得一文不值。
投资者可以通过确保项目背后的智能合约经过 компетентный 的外部审计师审计来避免这种情况。
恶意实体经常检查区块链的基础设施层,以确定它是否会受到以下区块链安全问题的影响:
信息泄漏,也称为窃听攻击,严重性较低。
在窃听攻击中,攻击者会监视网络以获取私人数据。提取机密数据后,他们将使用私人数据详细信息来破坏网络的任何部分。
检查窃听的推荐最佳实践是使用更强大的加密协议。
通过区块链协议审计及早发现并修复窃听弱点。
DoS 攻击的严重程度极低。
当攻击者向网络中的主要节点发送过多的请求时,必然会发生拒绝服务攻击。由于这种空前的请求负载,节点可能会崩溃。
可以通过防止异常参数使节点崩溃来修复此区块链安全问题。
这是一种低严重性漏洞,因为攻击者仅利用幼稚用户,而不利用区块链本身。
当攻击者诱骗受害者点击恶意链接,并利用它来耗尽受害者的加密货币时,就会发生网络钓鱼攻击。
为了解决此区块链安全问题,请使用恶意链接检测软件来禁止节点接受跨域访问。
这是一个高严重性的漏洞问题,攻击者可以利用该问题来获得经济利益,并最终拥有主链。
自私挖矿发生在攻击者分叉链并在不广播到主链的情况下挖掘区块时。广播后,他们的分叉链可能会劫持主链。
当可以及时清除不诚实的验证者时,可以减轻自私挖矿。
贿赂攻击具有高度严重性。
贿赂攻击是一种阴谋,其中验证者激励他们的对等方赞成无效交易作为有效交易。
解除此类验证者的职责是解决此区块链安全问题的最可行的区块链解决方案之一。或者最好从 PoW 切换到 PoS。
最初可能无关紧要,但如果多次重复,则可以增长为中等严重性。
攻击者进入矿池,但拒绝广播挖掘的区块。从而导致网络不一致。
使用更强大的加密承诺方案来加强你的区块链安全,以解决此错误,因为它们会暴露此类恶意验证者。
矿池跳跃攻击的严重性较低。
矿池跳跃攻击威胁区块链安全。在这种情况下,矿工仅在费率高时有选择地挖掘区块。
通过使难以预测未来哈希率的现代实现来缓解此区块链安全弱点。
BCD 攻击不是严重的安全问题,因为它们对区块链本身没有任何实际影响。
区块丢弃攻击要求攻击者具有相对较大的节点仲裁。他们仅批准他们的区块,并抛弃诚实节点的区块。
防止它的实际方法是拥有广泛的验证器。这将使支配地位几乎不可能。
这是一种猛烈的攻击,可能会困扰区块链解决方案的基础架构层。
这是区块链安全问题的一种高级形式,它是区块扣留攻击的一种高级形式。与 BWA 不同,它可以从池中为攻击者产生更多收入。
区块链解决方案是池管理器可以引入经常更新的信标值。
叔块攻击具有中等严重性。
叔块攻击是另一个扩展 BW 攻击的区块链安全问题。当攻击者扣留一些相关区块时,攻击会从仅仅是区块扣留 转移到叔块。
区块链扣留和扣留后分叉的網絡安全解决方案也适用。
进行区块链协议审计以保证你的项目的安全性。
区块链的每一层都容易受到一种或另一种攻击。这解释了黑帽总是会找到可利用的区块链安全漏洞的原因。其中一些攻击在 2022 年 5 大 DeFi 黑客攻击 中显而易见。
在此基础上,每个区块链网络的创始团队或社区现在都知道区块链安全问题至关重要。如果你要构建区块链,请确保已阻止所有漏洞。
我们是 Hacken 的一支经验丰富的网络安全专家和区块链审计师团队。我们的资深审计师最近利用他们的经验和精密的行业知识发布了关于区块链漏洞的更详细指南。
作为领先的智能合约审计和区块链安全公司,我们将批判性地评估你区块链协议的表面。我们将发现、报告并建议你如何修复架构中的区块链漏洞。
- 原文链接: hacken.io/insights/block...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!