核心洞察
本文探讨了区块链网络遭受攻击的多种方式,指出虽然区块链比中心化数据库更安全,但仍面临如 51% 攻击、双重支付、女巫攻击、自私挖矿、智能合约漏洞和私钥被盗等威胁。文中结合真实案例,说明这些攻击可能导致的重大经济损失,尤其是对小型项目而言。结论强调,安全措施不断提升的同时,攻击手段也在进化,持续警惕和创新对区块链安全至关重要。
区块链是一种分布式账本系统,比中心化数据库更可靠地存储信息和处理交易。但即便如此,区块链也并非绝对安全,黑客攻击时有发生。去中心化网络的攻击方式多种多样,其中大多数都在于利用共识机制的漏洞,试图控制区块链的算力。这样,恶意攻击者就能篡改账本数据、制造混乱,甚至盗取加密货币。
本文将带你了解黑客如何攻击区块链,以及常见的威胁类型。
51% 攻击
51% 攻击是区块链面临的主要威胁,尤其针对采用工作量证明(PoW)共识算法的网络。
攻击原理
攻击者试图掌控超过 50% 的全网算力(哈希率),类似于在公司中拥有控股权,可以随意做决定。对于区块链来说,掌控 51% 的算力意味着可以操控大部分区块的生成。
一旦攻击者控制了超过一半的算力,就能重排交易、撤销交易确认,甚至阻止其他矿工挖矿,造成网络混乱和故障。此外,还可能在不被察觉的情况下进行双重支付(double-spending),即多次花费同一笔加密货币。
攻击者如何获得如此大的算力?方法包括租用大量矿机、控制或自建矿池,甚至通过恶意软件组建挖矿僵尸网络。
是否值得冒险?
对于比特币等大型区块链来说,节点众多,设备和电力成本极高,发起 51% 攻击几乎不可能,也不值得投入。但小型项目则难以幸免。
已有多个网络遭遇 51% 攻击,如 ZenCash(ZEN)、Litecoin Cash(LCC)、MonaCoin(MONA)、Verge(XVG)和 Bitcoin Gold(BTG)。
真实案例
51% 攻击成功后,攻击者可以利用协议中的各种漏洞,但最常见的目的是实现双重支付。
2018 年,ZenCash(ZEN)网络被攻击,黑客通过双重支付两笔大额交易(分别为 13,000 和 6,600 ZEN),共获利 55 万美元。此次攻击持续了 110 个区块、4 小时,攻击成本仅约 3 万美元,远低于被盗资产。
另一个例子是 Ethereum Classic(ETC),2020 年被黑客三次攻击。黑客通过 NiceHash 租用算力,在 7 月至 8 月期间 ETC 哈希率骤降时发起攻击。其租用的 GPU 算力超过 ETC 网络总算力的 51%,实现了超 100 万 ETC(当时价值超 900 万美元)的双重支付。
虽然租用算力的成本高达数十万美元,但最终获利仍然可观。类似的案例并不少见。
双重支付攻击
双重支付问题早在区块链和加密货币出现前就已存在。
本质上,如果交易双方未能即时完成交换,承诺稍后履约,就有可能出现资产被多次承诺的风险。
例如,你可以向两三个对象出具同一份支付承诺(合同、凭证等),而实际资产只有一份,这就是双重支付。区块链上的原理完全相同。
双重支付如何发生
攻击者通过多次花费同一笔加密货币实现双重支付。例如,某用户拥有 1 BTC,同时向多方转账并换取对方资产,实际上只有一方能真正收到这 1 BTC。
正常情况下,网络会由多数节点确认一笔交易,防止双重支付。区块链本身内置了防护机制,但风险依然存在。
实现双重支付的方式有多种,51% 攻击就是其中之一。当攻击者控制超过一半算力时,可以独立生成新区块、修改区块内容、拒绝部分交易并只确认“需要”的交易。

如上图,攻击者分叉主链并确认虚假交易,同时有五笔真实交易被处理。
在此期间,攻击者可将加密货币转入交易所,完成只需 1–5 个区块确认的交易,并换取其他加密货币或法币。
等到“攻击窗口”关闭,虚假区块会被丢弃,但攻击者已在交易所卖出代币,而原链上的资产依然在手。也就是说,卖出的是“假币”。
Finney 攻击
Finney 攻击得名于比特币首位收款人 Hal Finney,他也是最早提出区块链上双重支付可能性的人。
Finney 攻击是一种发生在对方接受未确认交易时的双重支付变种。
具体做法是,矿工先生成一个区块,并将一笔从地址“A”到自己另一个地址“B”的转账写入区块,但暂不广播。接着,再用“A”地址向第三方“C”发起转账。如果“C”在未确认的情况下收款,攻击者随后广播包含第一笔交易的区块,使“A”到“C”的转账失效,自己获得双重收益。
竞速攻击
竞速攻击是一种两笔交易间的“竞赛”。攻击者在不同设备上用同一地址同时向两名收款人转账。双方都发货或转币,但后被处理的那笔交易会被作废。
只有在商家接受未确认交易时才可能中招。只需等待至少一次区块确认,就能避免这类攻击。
女巫攻击
女巫攻击(Sybil Attack)得名于 Flora Rheta Schreiber 所著小说《Sybil》中的主人公,讲述多重人格障碍的故事。攻击者通过在网络中部署大量受控节点,将受害者节点“包围”,进而掌控其所有交易。
瞄准漏洞
在比特币等大型网络中,这种攻击几乎不可能实现,因为节点是随机选择其他节点确认交易。
因此,女巫攻击通常针对新兴加密项目。新节点接入网络时,可能不知道哪些节点可信,需要请求节点列表。
如果请求被攻击者节点接收,对方就会返回自己控制的节点地址。
这样,黑客可以:
- 阻断用户交易,使其与主链断开;
- 决定用户接入哪个区块(通常是发生双重支付的分叉);
- 追踪用户所有交易。
简而言之,攻击者控制的节点会诱导其他节点批准错误数据。
自私挖矿
基于 PoW 的区块链存在被不诚实矿工利用的漏洞,即可同时确认多个区块。
分叉问题
如果两个区块同时被生成并连接到前一区块,区块链就会出现分叉,导致结构复杂、交易变慢。因此,矿工在确认新区块后应立即广播数据,防止分叉冲突。
但所谓“自私矿工”会隐瞒区块信息,误导诚实节点,后者继续在旧链上挖矿,导致分叉链条拉长。
实际场景
假设自私矿工挖出第 2,001 个区块但未广播,其他节点从第 2,000 个区块继续挖矿。此时有两个“第 2,000 区块”:一个来自诚实矿工,一个来自攻击者,各自衔接自己的 2,001 区块。
攻击者继续生成新区块并加到自己的链上。等到时机成熟,黑客再广播自己挖出的 2,001 区块,网络判定其为最先找到的有效链,抛弃诚实矿工期间产生的区块。结果,诚实矿工无法获得奖励,努力付诸东流。
路由攻击
这类攻击并非直接针对区块链本身,而是利用互联网服务提供商(ISP)连接协议中的漏洞。
黑客通过控制协议,可以发布虚假路由。值得注意的是,这种攻击同样可用于双重支付。如果新块的传递被延迟,网络无法及时看到,就会出现可被双花的“窗口期”。
利用智能合约漏洞
智能合约由人编写,而人难免会犯错。
代码错误的代价
智能合约中可能存在各种漏洞,既有难以察觉的复杂问题,也有代码中的小失误。不论哪种错误,都可能导致数百万美元损失。
Web3 安全公司 Beosin 在 2023 年 6 月 30 日发布的报告称,2023 年上半年因欺诈、黑客和诈骗导致的加密货币损失总额高达 6.56 亿美元,其中 56% 源于智能合约漏洞。
不仅智能合约本身的漏洞会导致区块链被攻击,合约所用的编程语言也可能成为突破口。2023 年 7 月 30 日,Curve Finance 四个流动性池因其智能合约所用 Vyper 语言的漏洞被攻击。Curve Finance 是去中心化交易所,采用自动做市商(AMM)机制,是 DeFi 领域主要的稳定币流动性枢纽。此次事件共被盗约 6,000 万美元,其中 2,000 万美元由白帽黑客追回返还。最大损失来自主 CRV/ETH 池,全部流动性(约 4,000 万美元)被清空。
DDoS 与时间延迟攻击
DDoS 攻击的目的不是盗币,而是破坏项目、抹黑初创团队。攻击者通过向网络发送大量无用的“尘埃”交易,导致数据传输、区块链更新和新区块生成变慢,影响正常运行。
私钥攻击
为了保障区块链公有链中数据传输的机密性,采用了非对称加密技术,即私钥和公钥密码学。私钥和公钥通过数学算法关联。知道用户公钥可以加密信息,用户用私钥解密后读取。拥有私钥的人也能推算出公钥,反之则不行。
私钥掌控着用户全部加密资产,因此成为攻击者的目标。
漏洞与防护
获取私钥及其加密货币最简单的方式,是窃取 助记词,比如偷走写有助记词的纸条,或通过社交工程、钓鱼攻击等手段。
想要安全保护私钥和全部加密资产,可以选择将其交由 Tangem Wallet 存储。Tangem 加密钱包不使用助记词,因此无法被盗。私钥在两张或三张卡片(主卡和备份卡)芯片内生成并存储,且无法被提取。
结语
目前区块链面临多重威胁,包括上述所有高发攻击,以及各网络自身的问题,如编程代码错误、加密方法缺陷等。黑客持续寻找漏洞,利用智能合约代码缺陷、区块链技术本身的弱点,甚至攻击加密货币交易所。
假设性威胁
还有一些目前仅为理论的攻击方式:
- 矿池之间的“互相吞噬”(即破坏矿池以扰乱区块链运行);
- P + ε 攻击:Vitalik Buterin 指出,在 PoW 网络中,这是最令人担忧的问题之一,即通过向网络参与者行贿,换取他们支持某些区块链变更提案;
- 时间劫持(Timejacking):试图操纵交易时间戳。
目前来看,黑客对这些攻击方式兴趣不大。
展望未来
唯一的解决方案就是不断提升去中心化网络的安全机制。经验表明,防护水平越高,矿工和黑客的攻击手段也越复杂。这是一场永无止境的较量。在传统金融领域,ATM 会被黑,信用卡会被盗,银行也会被抢劫。100% 的安全保障并不存在。