我们阅读真实的公开事故,不是把新闻重播一遍,而是从 「你要如何防御它」 的视角来解读。本文基于 公开记录(监管机构、企业官方声明、可信报道)。出处列于文末,且不含任何攻击复现步骤。
- 对象
- 存放于交易所热钱包中的用户资产(XEM/NEM)
- 发现
- 2018 年 1 月 26 日(检测到未授权转账)
- 影响规模
- 约 5.23 亿 XEM,当时约合 5.3 亿美元(约 26 万名用户受影响)
- 根本原因
- 巨额存放于联网热钱包 + 未引入多重签名(单点故障)+ 终端抗恶意软件能力不足 + 对批量转出的检测与阻止能力薄弱
- 真正的对策
- 把密钥冷存/放入专用金库、多人审批、最小化热钱包余额、终端/邮件防御、检测异常转出
发生了什么(用平实的话说)
加密资产的「钱包」保护的并不是资产本身,而是 能动用它的私钥。密钥有两种存放方式——联网、可即时动用的「热钱包」,以及从互联网隔离的 「冷钱包(离线保管)」。热钱包很方便,但攻击者的手能隔着网络够到它。
在本次事件中,巨额的 XEM 被存放在 热钱包 中,而且 未使用多重签名(multisig)。多重签名要求「转账时需要多个密钥达成一致」,这样即使一个密钥泄露,也无法擅自动用资金。由于缺少这一机制,在单个私钥被窃取的那一刻,几乎全部余额都可被动走。 公开报道显示,第一步是通过针对员工的 鱼叉式钓鱼 投递的 恶意软件,攻击者借此窃取了该私钥。
『可即时动用的巨额资产』是攻击者的理想目标
对攻击者而言,最有价值的是 一旦攻破就直接对应大量价值的单点故障。把巨额资产放在联网的热钱包中、以单一签名保护——这恰恰满足了那个条件。这并非加密资产独有:一把能读取整个数据库的 API 密钥,或一个能操作一切的管理员账户,都带有同样的危险。
攻击链也是一张「防御地图」
这次事件也是一条 每一步都有『止损点』 的攻击链。请把它读作 在哪里本可以被切断,而不是攻击教程。
① 入口:针对员工的鱼叉式钓鱼/恶意软件
经过调研的伪造邮件让终端感染恶意软件。
⊘ 止损点:邮件/终端防御(EDR、警惕附件与宏)
② 窃取热钱包的私钥
从被感染的终端上,能动用资金的私钥被盗走。
⊘ 止损点:把密钥离线/放入专用金库(HSM)、并强制要求多方签名
③ 一次性批量转出(约 5.23 亿 XEM)
由于单一签名即可动用,几乎全部资产在短时间内被转出。
⊘ 止损点:最小化热钱包余额、检测并审批与冻结大额转账
④ 洗钱/分散
资产以规避追踪的方式被转移。
⊘ 止损点:异常检测与即时阻断的运营、以及从源头缩小爆炸半径
已公布的时间线
2018-01-26
检测到未授权转账;约 5.23 亿 XEM(当时约 5.3 亿美元)被转出。暂停 XEM 的存取与交易。2018-01-27
召开记者会公开事件;公司表示将以日元向受影响用户进行赔偿。2018-03
日本金融厅(FSA)依据《资金结算法》下达业务改善命令;向约 26 万名用户赔偿共计约 463 亿日元。2018-04
宣布由 Monex(马内克斯)集团收购;管理层被全面改组。2018 年起
此事件推动了对加密资产交易所监管与监督的逐步收紧。
根本原因是层层失守,而非单个失误
若把它草草归结为「他们中了恶意软件」,就会重蹈覆辙。实际上,是多个防御层接连失守 才是本质。
失守的配置(事故时)
- 巨额的 XEM 余额存放于联网的热钱包
- 未引入多重签名——单个被盗的私钥就能动走全部(单点故障)
- 员工终端未能抵挡鱼叉式钓鱼/恶意软件的第一步
- 及时阻止大额异常转账的能力薄弱
守得住的配置(防止再发)
- 大部分资产放入冷存储(离线),热钱包余额保持最小
- 多重签名/多人审批使单个泄露的密钥失效
- 终端/邮件防御挡住鱼叉式钓鱼的第一步
- 把批量转出的检测、审批与冻结纳入运营流程
赔偿与监管:事后的代价高昂
Coincheck 以日元向受影响用户进行了赔偿(约 26 万名用户、共计约 463 亿日元),收到金融厅的业务改善命令,并最终通过被收购完成经营重建。事后赔偿、重建信任与监管应对的成本,远高于事前在设计上的投入。要让密钥管理与你所保护之物的价值相称——并且是在 事故发生之前 就设计好,而非之后。
你的环境该如何防御
即便你并不接触加密资产,只要存在哪怕一处 单个密钥或单个账户就能动用大量价值 的地方,这就与你有关。按优先级排列:
把最重要的密钥/秘密『冷存』
不需要随时动用的密钥与秘密,应放在离线或专用金库(HSM/KMS)中。把可从互联网触及的(『热』)部分保持最小,这样一旦被攻破,暴露的金额本身也很小。
消除单点故障(多人审批、权限分割)
避免出现「单个密钥或单个人就能动用全部资产/权限」的状态。对关键操作强制要求**多方审批(等同于多重签名)**并分割权限,使得一次泄露不至于致命。
检测并阻止异常的批量操作
标记「短时间内大量转出」「异常的收款方」,并做到能够即时暂停、挂起待审批或冻结。即便无法完全防住,把察觉并阻止的时间缩短,也能把损失变小。
与本站设计理念相通之处
这次事件的本质,在于把一个秘密(密钥)以过于『热』(可即时动用)的状态、大批量地置于单点故障之上。 这恰好是本站自身原则的镜像反面——不代管秘密、只让最小限度可触及、缩小爆炸半径。 不限于加密资产,一把能读取整个数据库的 API 密钥,或一个能操作一切的管理员账户,都带有同样的危险。「往冷里放、热钱包保持最小、绝不让单个密钥动走全部」是一套无论规模大小、任何人都能落地的防御。
出处(公开记录)
本文的事实基于以下公开信息。不含任何攻击复现步骤——只聚焦于 防御的教训。
- 日本金融厅(FSA)「关于对 Coincheck 株式会社的行政处分」(2018) — fsa.go.jp
- Coincheck 株式会社官方声明(关于未授权转账的通知・赔偿方针, 2018) — coincheck.com
- Reuters「Japan's Coincheck exchange loses $530 million in cryptocurrency heist」(2018) — reuters.com
接下来阅读
- 术语:什么是网络钓鱼(鱼叉式) / 什么是恶意软件(入侵的第一步)
- 术语:什么是 EDR(检测终端异常)
- 实务:安全最低限度检查清单(优先守护王国的钥匙)
FAQ
QCoincheck 事件的根本原因是什么?
巨额的 XEM(NEM)被存放在联网的『热钱包』中,且未使用多重签名(multisig)。在这种配置下,只要窃取单个私钥,就足以动走几乎全部余额。公开报道显示,最初的立足点是通过针对员工的鱼叉式钓鱼邮件投递的恶意软件,攻击者借此窃取了该私钥。
Q我不持有加密资产——这与我有关吗?
有关。这个教训并非加密资产所特有:它讲的是把有价值的秘密(密钥、API 密钥、管理员权限)以可即时动用的『热』状态、大批量地置于单点故障之上。要把重要的秘密冷存或放入专用金库(HSM/KMS),最小化可从互联网触及的部分,并确保没有任何单个密钥能动走全部。这适用于任何系统。
Q小型服务能从中学到什么吗?
能:①把最重要的密钥/秘密离线或放入专用存储(HSM/KMS);②确保没有任何单个密钥或单个人能动走全部资产/权限(多人审批、权限分割);③在终端上防御恶意软件、让员工警惕鱼叉式钓鱼;④检测并阻止异常的批量操作。这些做法都能按规模缩放落地。