在 3 月 13 日,BitMEX 平台分别在北京时间 10:16 和 20:56 遭受了两次分布式拒绝服务(DDoS)攻击。这些攻击延误或阻断了进出 BitMEX 平台的请求,对我们的用户造成了直接的干扰。在这些事件发生后,我们一直夜以继日地收集事实并对事件进行事后调查。
现在,我想分享一些更详尽的细节,并回答自服务中断事件发生后,我们的用户最为密切关注的问题 — 发生了什么事,以及我们为提高平台安全性而采取的措施。
以下是所发生的情况以及我们对于3 月 13 日的 DDoS 攻击回应的简短摘要。
- 在北京时间 10:16,一个僵尸网络开始对 BitMEX 平台进行 DDoS 攻击。 不久之后,我们发现该僵尸网络在一个月前的 2 月 15 日发起过类似但未成功的攻击。 根据我们的访问日志,我们认为攻击者在 2 月份确定了他们的目标,然后在等待攻击能对市场产生最大的影响的时刻。
- 在 3 月 13 日,在市场波动最剧烈的时刻,僵尸网络通过一个精心设计的聊天室功能查询使平台不堪重负,从而促使数据库的查询优化程序运行了一个效率极低的查询计划。有关详细信息,请参阅下文。
- 我们的安全团队看到数据库 CPU 使用率达到 100%,其中 99.6% 为 CPU IO 等待 (空闲状态)。当时,我们错误地判断这是一个故障磁盘,认为这是我们的云提供商的硬件故障。EBS 卷故障通常显示类似的性能特征。
- DDoS 导致我们的 API 层中的消息处理速度减慢,从而延慢了它们到达我们交易引擎的速度。当 DDoS 攻击被识别并停止时,API 能够立即将消息发送到交易引擎。
- 十个小时后,我们在北京时间 20:56 受到了同样的攻击。在这两种情况下,我们的流量过滤系统都发现并堵截流量,但流量已经聚积了一个显著的内部队列。从第一件事件中吸取到教训,我们手动清除队列以恢复系统操作。
- 实时更新发布在 https://status.bitmex.com ,并发布了相应的网站公告来通报事件。
- 作为我们内部事后调查的一部分,BitMEX 团队确定了 156 个账户,认为其 ETHUSD 最新成交价格止损委托曾被错误触发的用户,这是由于在北京时间 10:16 的第一次宕机期间意外地延迟了处理市场委托造成的。对于在此期间错误触发的每个止损委托,BitMEX 计算出与其指数价格纪录的差额并退还给用户。总共退还了 40.29 XBT。
我的账户和个人财务资料是否安全?
用户数据的安全是我们的首要任务。由于 DDoS 攻击不是黑客攻击,因此不会对个人信息构成威胁。它是一种分布式工作,通过压倒系统的请求来减慢系统的速度。用户数据依旧安全。
为什么怀疑这些攻击是相关的?
我们的安全团队分析了这两次攻击的流量模式,并确定了它们之间有显著的共同点。我们认为 3月 13 日和 2 月 15 日的攻击都是由同一个行动者精心策划的。 我们将持续监测这一活动是否再次发生,并已采取措施积极阻止进一步的影响。
为什么聊天室容易受到 DDoS 攻击?
Trollbox(聊天室)是我们在 BitMEX 编码的首批功能之一,自此已成为网站的知名锚点。平台创立之初,我们花了很多时间在此与用户交谈,谈论任何东西:新产品、反馈、用户界面改进和日常调侃。
然而在 3 月 13 日,它变成了一个攻击媒介。技术上的解释是:聊天有七种语言,每种语言的简单频道 ID 为 1 到 7。首先是英语,最后两个是西班牙语和法语。我们一直在为这两者进行全站点的翻译,但目前还在开发阶段。
/chat 的接口允许按频道 ID 来查询最后的 100 行。此查询有一个索引,但由于它的基数很低,所以查询优化程序很少使用它。考虑到表的大小(大约 5000 万行),执行反向顺序扫描,然后进行筛选实际上会更快。查询优化程序能够根据频道 ID 来区分和构建不同的查询计划,但要做到这一点,它需要最新的统计信息。它通过分析(或真空分析)来获得这些统计数据,但在这种环境中运行的频率不够。
因此,查询优化程序坚持其策略并对所有语言执行反向顺序扫描,直到最终找到要返回的 100 行。就西班牙语而言,很久没有人聊天了。实际上要多久?它扫描了 849748 行才能找到足够符合条件的行数:
这种昂贵的顺序扫描快速地分配和释放大量内存,溢出到磁盘上,并通过系统调用迅速使系统不堪重负。在攻击发生时,数据库只花了 0.6% 的时间处理请求,其余 99.4% 的时间用于 IO 等待。这导致所有查询 (不仅仅是 /chat 查询) 都非常慢。
对于聊天室的存储攻击如何影响交易?
BitMEX 是一个数据隔离运营的平台:与用户相关的数据(电子邮件、活动、聊天室、登录事件等)与交易数据(仓位、交易、保证金等)是分开的。但是聊天室与用户有关,访问令牌和 API 密钥也是如此。这意味着这种资源消耗引发了位于交易引擎前面的身份验证和访问控制层的严重问题。交易引擎运行正常,市场数据,存款和提现也没有中断。但在这段时间内,请求几乎不可能到达引擎,导致服务质量严重下降。
这种攻击还会发生吗?
没有一个系统能够抵御 DDoS 的干扰。有许多技术可以用来减少或消除影响。我们已经解决了潜在的问题,并一直在昼夜不停地引入额外的检测和响应层。我们也将进行其它努力, 以提高负载下的自动化扩展性和进一步隔离关键系统。
BitMEX 如何增强安全性?
作为上述持续监察和缓解措施的一部分,我们的安全团队正在审查系统中历史最悠久且因此最脆弱的部分,以简化,解耦、提高性能和隔离系统。
同时,我们的团队正在开发关于宕机、市场暂停、恢复和通信的面向公众的协议。如果将来我们的服务出现任何中断,这将为我们的用户提供更大的透明度。
一些交易员指责 BitMEX 故意造成了这次故障,你对此有何反应?
我们运营一个公平高效的平台。 交易宕机降低了所有用户的体验,降低了我们在市场上的地位。造成宕机时段是违背我们自己的利益的。话虽如此,很明显,社区希望了解更多有关强平如何与保险基金互动,特别是在这种非常苛刻的情况下。 我们很快会分享有关此问题的更多细节。
在接下来的几天里,我们将发布一系列有关发生了什么问题以及我们正在采取的措施的文章。 除了我,你还会听到我们公司其他领导的讲话。
与往常一样,你可以联络客服来询问我们任何问题。
谢谢。
Arthur Hayes
联合创始人兼首席执行官