在加密货币领域,有一句几乎被视为神圣的准则:“不要信任,要验证。”每个用户都可以运行自己的节点,亲自检查网络规则,而无需依赖开发团队或任何中央权威。
但这条准则存在一个严重的局限。无论我多么谨慎地审计代码,我也抓不到那些需要真正黑客才能发现的漏洞——我根本没有那样的专长。因此我仍然被迫要信任:信任那些代我检查一切并告诉我他们发现了什么的人。
在2026 年 5 月 5 日,Bitcoin Core 开发者披露了漏洞 CVE-2024-52911。它影响从 0.14.0 开始的 Bitcoin Core 版本,并在 29.0 中修复。该漏洞允许矿工远程使他人的节点崩溃。
但最引人注目的细节是这个漏洞被知道了多久。Cory Fields 在 2024 年 11 月 2 日 私下向开发者报告了它。到 2024 年 11 月 6 日,Pieter Wuille 提交了一个隐藏的修复。在 2024 年 12 月 3 日,补丁出现在官方代码库中,但没有任何公开声明,仅被描述为“minor updates(小幅更新)”。在 2025 年 4 月 12 日,Bitcoin Core 29.0 发布并包含了该修复。只有在最后一个易受影响的分支 28.x 达到终止支持之后,公开披露才在 2026 年 5 月 5 日 进行。

在一年半时间里,最广泛被信任的比特币客户端带着开发者已知的漏洞运行——而运行该软件的节点操作者却不知道。且这并非孤立事件;这是加密货币领域反复出现的模式。不同加密项目的开发者多年来一直在这样做。
我想列举更多类似的例子,并最终回答一个问题:把储蓄放在加密货币里,究竟有多安全?
2018 年 9 月,Bitcoin Core 火速发布了 0.16.3 版本。用户被告知它修补了一个拒绝服务(DoS)漏洞。
两天后,事实证明那只是故事的一半。0.15.x 和 0.16.x 版本中的同一缺陷可能允许矿工 膨胀比特币供给——实际上在单个区块内双重花费同一个输出并据为己有额外的 BTC。开发者承认他们最初只披露了危害较小的 DoS 组成部分,故意保留了关于通胀威胁的完整描述,以便给矿工、企业和其他关键参与者时间去更新。
在最坏的情况下,这将不是针对任何单个钱包的攻击,而是对比特币核心承诺的攻击:固定供应。如果 2100 万规则可以被客户端中的漏洞打破,比特币的整个经济神话就会崩溃。
该漏洞从未被利用过。但 CVE-2018-17144 完美地展示了伦理困境。一方面,立即完全披露可能会把现成的攻击手册交给攻击者;另一方面,用户实际上并没有被告知这次更新有多关键。
Zcash 的故事更令人不安,因为它是一种隐私币,并非区块链上所有东西都是可见的。2018 年,团队在其零知识证明所依赖的密码学中发现了一个 漏洞。在修复之前,攻击者可以以无人能察觉的方式制造假 ZEC。在透明链上,通胀漏洞至少在理论上可以通过余额分析被看到;而在隐私系统中,这种验证要困难得多。
Zcash 在 Sapling 升级(2018 年 10 月 28 日激活)中修复了该问题,并在数月后才公开披露。在官方披露中,团队直言:“十一个月前我们发现了一个漏洞”——并承认在修复之前,攻击者可能在不被检测的情况下铸造伪造的 Zcash。
在这种情况下保持沉默的理由很容易理解。若在补丁发布前披露该缺陷,就是在把毁灭 Zcash 的配方交给别人。但反过来亦同样明显:近一年的时间里,用户持有一种理论上可能被隐形伪造的资产——而他们毫不知情。
这指出了一个真正的悖论:
2017 年,Monero 遇到了类似威胁。团队在 CryptoNote(Monero 及若干其他隐私币的基础协议)中发现了一个严重错误。该漏洞允许以对不知情观察者不可见的方式创建无限数量的货币。
Monero 的补丁是 秘密引入的。更重要的是,发布时公开解释为是为了防护一种 RingCT 拒绝服务攻击——而团队随后承认,这种攻击实际上并不存在。这是一个掩护故事,为的是让交易所和矿池在不揭示真正通胀风险的情况下更新。
对 Monero 本身来说,结局是好的:团队报告称已经检查区块链,未发现被利用的迹象。但该漏洞并不限于 Monero。Monero 更新后,团队开始通知其他基于 CryptoNote 的项目。但其中一个项目 Bytecoin 很快就遭到 攻击,额外创造了 6.93 亿个代币。
这又引出隐藏漏洞的另一个层面问题。当代码在数十个项目之间共享时,在一个地方宣布发现的威胁可能会成为针对另一个项目的攻击提示。开发者不得不决定不仅要在何时告知自己的用户,还要决定警告哪些竞争项目、以何种顺序——因为先得到信息的竞争对手可能会用它去攻击尚未收到信息的一方。
2018 年,Monero 面临另一起不同但具有高度启发性的事件,称为“燃烧漏洞”。它并不允许任何人凭空印出 XMR 或破坏供应计划,但却允许攻击者对交易所、商家及其他服务造成真实的经济损害。该漏洞可以让人以某种方式发送资金,使得接收到的某些输出变得无法花费。
像 rabbit.io 这样的兑换服务本可能受到此类攻击的影响。
在 rabbit.io 上,加密货币兑换的工作流程如下:
我们的服务当时尚不存在,但如果存在,攻击可能如下:
Monero 团队准备了一个安静的补丁,并直接通知了他们能接触到的交易所和已知 XMR 商家。在事后分析中,开发者诚实地承认,这种做法不可避免地遗漏了他们没有现有联系的组织,并造成了信息特权访问的印象。
这就是选择性披露的现实:一些市场参与者总会比其他人更早得知风险。这种信息不对称本身就是一个安全问题。
Stellar 的故事与大多数其他案例不同,因为该漏洞并非只是默默存在且仅开发者知道;它已经被利用。
2017 年,一名攻击者利用 Stellar 协议中的并发缺陷创造了 22.5 亿 XLM——当时约值 1000 万美元,约占流通代币的四分之一。根据 Messari 的报告,新铸造的 XLM 被转移至交易所并可能被出售。
Stellar Development Foundation 随后从自己的储备中烧毁了等量的 XLM 以防止供应被稀释。但直到 2019 年 Messari 在两年后披露该事件之前,并没有进行公开声明。对此,Stellar 代表表示他们在协议更新的发布说明中提到了该漏洞。从技术上讲,这并非完全沉默。但在技术发布说明中一条不起眼的条目,市场直到 Messari 两年后的调查才得知,这在实践中等同于沉默。
这个案例对行业尤其令人不舒服。你不能说“我们保持漏洞秘密以防止他人利用”。有人已经利用了它。沉默保护的并不是用户免受攻击,而是开发者免受审查。
在 Geth(最广泛使用的以太坊客户端)中,静默修补的做法基本被形式化。团队的 文档 明确指出,对于威胁以太坊主网健康的漏洞,他们保留在新版本中悄悄发布修复而不公开漏洞细节的权利。其理由很直接:节点操作者可能数周或数月不更新,如果你明确写出某个发布修复了哪个漏洞,有人可能在大多数节点完成升级之前尝试利用它。
但在 2021 年 8 月,这种逻辑适得其反。Geth 修补了 CVE-2021-39137,并于 8 月 24 日发布修复而未披露细节。然而有人还是弄清楚了被修复的内容——并在 8 月 27 日对该漏洞进行了 利用,导致一部分较旧的 Geth 节点与主链分叉。
这就是保密之刀的另一面。说得太多,可能加速攻击;说得太少,有些操作者可能无法理解更新的紧迫性。网络最终可能陷入它试图避免的局面:漏洞被主动利用。
2021 年 12 月,Polygon 面临同样的困境。安全研究人员报告了 Polygon PoS genesis 合约的一个 严重漏洞——该漏洞可能允许攻击者抽走大约价值 240 亿美元的 MATIC 代币。团队决定低调处理:正如他们后来所说,“鉴于此次升级的性质,需要在不吸引太多注意的情况下执行。”验证者和全节点操作者被通知,网络很快完成了升级。
但即使反应迅速,也无法完全关闭攻击窗口。在升级生效之前,一名攻击者 设法窃取了 801,601 枚 MATIC——略低于 200 万美元。开发者确认 Polygon 基金会将承担该损失。报告漏洞的研究人员获得了约 346 万美元 的赏金奖励。
团队并未试图掩盖此问题,但用户直到事后才了解到险些发生的一切。推动这种做法的两个原因是:首先,优先事项是采取行动,而不是进行公开讨论;其次,在问题解决之前,知道它的每一个人都可能利用这条信息。
或许这就是一种合理的折衷:在补丁修好之前不要披露漏洞,但也不要把修复变成持续数月或数年的秘密。

有时,保密确实能拯救网络。没有静默修复,Zcash 可能会遭遇隐形通胀。没有秘密补丁,Monero 可能会面临不可检测的伪造。没有 Polygon 在幕后迅速采取行动,该网络可能遭受不可比拟的更大损失。
但保密并非没有代价。它制造了内部与外部的分层。它让那些被私下警告的人获得优势。它使得当一次发布看起来像常规维护时,节点操作者更新的紧迫性降低。它削弱了使用加密货币的一个最重要的心理基础——即游戏规则对所有人同时公开知晓的感觉。
事实证明,这种感觉是幻觉。每一个故事都遵循相同的弧线:一个静默的补丁、长时间的沉默,然后承认一直以来,网络的安全都建立在一小群比其他人知道更多的人的信任之上。