3月13日のDDoS攻撃に対する当社の対応について

原文: How We Are Responding to Last Week’s DDoS Attacks

3月13日の2時16分 UTC(日本時間 同日11時16分)と 12時56分 UTC(日本時間 同日21時56分)の2度にわたり、BitMEXプラットフォームは、分散型サービス拒否攻撃 (DDoS)を受けました。これらの攻撃は、BitMEXプラットフォームとの間で交わされるリクエストに遅延や障害をもたらし、当社のユーザー様に対する直接的な障害を引き起こしました。この事態を受け、当社は情報収集と分析を行うため、24時間体制で取り組んで参りました。

まずは、サービスが停止したことによって生じたユーザー様の差し迫った懸念事項にお答えし、何が起こったのかということと、プラットフォームのセキュリティ強化策について、より詳しくお伝えしたいと思います。

まずは、3月13日のDDoS攻撃によって何が起こったのか、当社がどのように対応したかについての要約をご説明します。

  1. 2時16分 UTC に、ボットネットがBitMEXのプラットフォームに対してDDoS 攻撃を開始しました。その後まもなく、1ヶ月前の2月15日に、このボットネットが同様の攻撃を行ない、失敗に終わっていたことが判明しました。当社のアクセスログによれば、攻撃者は2月に攻撃対象を特定し、最も市場への影響が大きくなる攻撃のタイミングを見計らっていたと考えられます。

  2. 3月13日、市場のボラティリティがピークに達したとき、ボットネットは、トロールボックス機能向けに特別に細工されたクエリを介して、プラットフォームに大量のデータを送り込み、データベースのクエリオプティマイザに非常に非効率なクエリプランを実行するよう促しました。詳細は以下をご覧ください。

  3. 当社のセキュリティチームは、データベースの CPU 使用率が 100% に達し、そのCPUの6% がIO wait(アイドル状態)になっていることを発見しました。この時点では、当社のクラウドプロバイダーのハードウェア障害であると考え、ディスクの異常であるという誤った診断を下しました。EBS ボリューム障害は、多くの場合、同様のパフォーマンス特性を示します。

  4. この DDoS 攻撃は、当社の APIレイヤーのメッセージ処理に遅延を引き起こし、メッセージがトレーディングエンジンへヒットするのを遅らせました。DDoS 攻撃が特定され、停止されると、API は遅滞なくトレーディングエンジンにメッセージを送信できるようになりました。

  5. 10 時間後の12時56分 UTC に、当社は同様の攻撃を受けました。どちらの場合も、トラフィック・フィルタリングシステムが、トラフィックを検出してブロックしましたが、トラフィックが内部キューを大幅に増大させました。当社は、最初の攻撃で得た知見から、システム操作を再開するため、キューを手動でクリアしました。

  6. ライブアップデートがhttps://status.bitmex.comに公開され、この事件は各サイト上で通知されました。

  7. 当社の内部事後分析の一環として、BitMEXチームは、2時16分 UTC に生じた最初のダウンタイム中に、成り行き注文の処理に意図しない遅れが生じたことにより、ETHUSDにおいて、ラストプライス・ストップが明らかに誤って引き起こされることとなった156の口座を特定しました。BitMEXは、この間に誤って引き起こされた各ストップ注文について、記録されているインデックス価格に対する差分を算出し、ユーザー様に対して払い戻しを行ないました。合計払い戻し額は、40.297 XBTでした。

私の口座と金融データは安全ですか?

ユーザーデータのセキュリティおよび安全性は、当社の最優先事項です。DDoS攻撃はハッキングではないため、お客様の個人情報に対する脅威は生じておりません。これは、システムの処理能力を超えるリクエストを大量に送り付けることで、システムをスローダウンさせる、分散型攻撃です。ユーザーデータは安全に保たれています。

なぜこれらの攻撃が今回の事態に関連していると考えられるのですか?

セキュリティチームは、2回の攻撃のトラフィックパターンを分析し、両者の間に重要な共通点を見出しました。私たちは、3月13日と2月15日の両方の攻撃が、同一のアクターによって行われたものであると確信しています。当社は、このような事態の再発に備え、引き続き監視し、さらなる影響を阻止するために積極的な措置を講じています。

なぜトロールボックスはDDoS攻撃に対して脆弱だったのですか?

トロールボックス(チャットボックス)は、当社がBitMEX上にコーディングした最初の機能の1つであり、それ以来、同サイトでよく知られた機能となっています。当社はプラットフォーム設立当初、この機能を通じて、新商品、フィードバック、ユーザーインターフェースの改善に関するお知らせや一般的なチャットなど、お客様とのコミュニケーションに多くの時間を費やしました。

しかし、3月13日には、これが攻撃対象となりました。技術的な説明をします。チャットには7つの言語があり、各言語は1-7のシンプルなチャネルIDを持っています。最初は英語で、最後の2つがスペイン語とフランス語です。この最後の2つの言語向けに、サイト全体の翻訳に取り組んでいますが、まだ開発途上にあります。

/ chatエンドポイントは、チャネル ID によって最後の 100 行の検索を可能にします。これに対するインデックスはありますが、そのカーディナリティが低いため、クエリオプティマイザは、めったにこれを利用しません。テーブルのサイズ(約5,000万行)を考えると、実際には、逆順のシーケンシャルスキャンを行ってからフィルタリングする方が速いのです。クエリオプティマイザは、チャネル ID に基づいて、異なるクエリプランを識別および構築できますが、そのためには最新のデータが必要です。ANALYZE (または VACUUM ANALYZE)を介してこれらのデータを取得するのですが、この環境では、十分な頻度で実行されませんでした。

このため、クエリオプティマイザはゲームプランを厳守し、戻るべき100 行が最終的に見つかるまで、すべての言語に対して逆順のシーケンシャルスキャンを実行しました。スペイン語の場合、誰かがチャットを行なってから非常に長い時間が経過していました。実際、どのくらいの時間が経過していたのでしょう?基準を満たすだけの十分なデータを見つけるまでに、849,748行をスキャンしました。

この非常に負荷のかかるシーケンシャルスキャンが、大量のメモリを迅速に割り当てたり、割り当てを解除したりするうちに、ディスクにあふれ出し、システムコールによってシステムが急速にいっぱいになりました。攻撃時点において、データベースは、リクエストの処理に 0.6%の時間しか費やしておらず、残りの 99.4% はIO wait(待機状態)に費やされていました。これにより、/chat クエリだけでなく、すべてのクエリが非常に遅くなってしまいました。

チャットストレージへの攻撃によって、取引にはどのような影響が生じますか?

 BitMEXは、データが分離されたプラットフォームを運営しています。ユーザーに関連するデータ(Eメール、アクティビティ、チャット、ログインイベントなど)は、取引データ(ポジション、執行、マージンなど)から分離されています。しかし、チャットは、アクセストークンやAPIキーと同様、ユーザーに紐づけられています。つまり、このリソースが枯渇したことにより、取引エンジンの前にある認証やアクセスコントロールのレイヤーに深刻な問題が生じました。取引エンジンは正常に作動しており、市場データや入手金に障害は生じませんでした。しかし、この間、エンジンに到達することはほとんど不可能になり、サービスがダウンするという深刻な事態につながりました。

こうした攻撃が再び発生する可能性はありますか?

DDoSを介した妨害に対して免疫を持つシステムはありません。影響を軽減または排除するために利用可能な技術は多数存在します。当社は、根本的な問題を修正し、さらなる検出・応答レイヤーを導入するために24時間体制で取り組んできました。負荷がかかった場合に自動的にスケーラビリティを向上させ、重要なシステムをさらに分離するため、一層努力いたしております。

セキュリティを強化するためにBitMEXは何をしていますか?

上述の通り、継続的な監視とリスク軽減の取り組みの一環として、セキュリティチームは、システムの最も古い部分、すなわち、システムの最も脆弱な部分を見直し、システムの簡素化、デカップリング、パフォーマンスの向上およびシステムの分離を行っています。

また同時に、同チームは、ダウンタイム、マーケットの停止や再開、そしてコミュニケーションに関する一般向けプロトコルを開発しています。将来、サービス障害に直面した場合は、これらの改善により、ユーザー様に対してさらに高度な透明性を提供することができます。

一部のトレーダーは、BitMEXが意図的に機能停止を引き起こしたと非難しています これに対してはどのように対応しますか?

当社は、公正かつ効率的なプラットフォームを運営しています。取引のダウンタイムは、すべてのお客様の利便性を低下させ、市場における評判を低下させます。ダウンタイムを意図的に作り出すことは、私たち自身の利益に反します。しかし、当社のお客様が、特にこうした非常に厳しい状況下で、清算が保険基金との兼ね合いでどのように機能するかについて、さらに詳しく知りたいとお考えであることは明らかです。これについては、まもなく詳細をお伝えいたします。

数日後には、当社のこれまでの問題点と現在の対策に関する一連の投稿を公開します。当社の別のビジネスリーダーから、皆様にご連絡いたします。

いつも通り、ご質問があれば、サポートチームまでご連絡ください。

ありがとうございます。

 

共同創業者兼最高経営責任者

Arthur Hayes