【緊急速報】DMMビットコイン480億円相当を流出の原因を探る

アイキャッチ画像引用元:
https://bitcoin.dmm.com/service/tool
https://bitcoin.dmm.com/_img/service/tool/emblem_pc.png

※2024/06/01 10:07AM 一部に、憶測を含む表現があったため、該当部分の表現を訂正しました。

※続報記事は、こちら → 【緊急速報続報】専門家が語る、DMM流出事件の要因考察

※さらに続報記事は、こちら → DMM不正流出、要因分析の考察修正

暗号資産の交換業を行う「DMMビットコイン」は480億円相当のビットコインが不正に流出したと発表しました。

この事件を受けて、DeFIREでは、流出経路と原因を調査することにしました。
こんにちは、お初にお目にかかります、二代目デフィー捌号です。(杉井 靖典)
※記事化(サムネ、CMS管理、SEO対策等)は、デフィー参号が行いました。

こういう事件があったら、何がともあれ、流出経路追跡からというのが定石である。

上記の流出経路追跡から推定できる業務フロー

【通常時のフロー】
暗号資産交換所 (DMM) のコールドウォレット ⇒ DMMと業務用ウォレット提供している事業者(第三者)が署名者となっていると推定されるマルチシグウォレット ⇒ 暗号資産交換所 (DMM) の定時出金用のホットウォレット ⇒ 出金依頼者のウォレット

【今回の事件フロー】
暗号資産交換所 (DMM) のコールドウォレット ⇒ DMMと業務用ウォレット提供している事業者(第三者)が署名者となっていると推定されるマルチシグウォレット容疑者が予め準備したおいたと目されるスプリッタ ⇒ 容疑者関係のウォレット

このフローに気づいた時点で、疑ったことは「内部犯行」である。
なぜなら、容疑者のものと考えられるウォレットの出金元が、マルチシグであるからだ。

マルチシグという事から、原因は

①マルチシグの業務フローまたはシステムに何らかの瑕疵があった。
②業務用ウォレットシステムの開発時点で何らかのマルウェアが仕組まれていた可能性。

のいずれかであろうと考えた。

特に、容疑者のものと考えられるウォレットの挙動を見ると、非常に手際が良いため、初めのうちはスプリッタを予め準備し、システムにマルウェアを仕組んだ、業務用ウォレットの提供事業者の内部犯に違いないと思った。

しかし、よく見ると、アドレスにある特徴があることに気づいた。

DMMとウォレット事業者によるマルチシグアドレス【業務用】
3P8MfdM4pULv7ozdQvfwAqNF29zAjmnUYD

本来、マルチシグアドレスから送信されるはずだったであろう、DMMの管理アドレス
1B6rJ6ZKfZmkqMyBGe5KR27oWkEbQdNM7P

容疑者が予め準備していたと目されるアドレス【スプリッタ】
1B6rJRfjTXwEy36SCs5zofGMmdv2kdZw7P

これは!「アドレスポイズニング攻撃」だ!!

アドレスポイズニング攻撃とは、人間がウォレットアドレスを認識する時、せいぜい先頭と末尾の数文字程度しか認識しないことを逆手にとって、良く似て見える、別のアドレスを送信者に伝えて騙そうとする攻撃のことだ。

しかし、個人ではなく、暗号資産事業者なのである。つまり、使っているウォレットは、個人が使うようなものよりも、高度な管理が為されていてしかるべきもので、そんな凡ミスを許す仕組みではないはずだ。

当然、送信先はいわゆる「コピペ」をしているはずがない。にもかかわらず、送信先の間違いを起こすとはどういうことだ?

… ここで、新たな事実に気づいた。

マルチシグアドレスから、犯人に送られたトランザクションが、その内容、大きさに対して不自然なほどネットワークフィーが積まれていたのだ。

… ということは、なんだ?

1B6rJ6ZKfZmkqMyBGe5KR27oWkEbQdNM7P は、DMM 利用者の定時に行う出金依頼トランザクションのまとめて作成するウォレットであると考えれば、DMM が出金依頼をこなすために必要な手数料を予め見積持っていたと考えると、トランザクションの大きさに対して不自然なほど多いネットワークフィーが積まれている点も説明できる。

つまり、ここで、盗難トランザクションに適切な量のフィーに調整してしまうと、逆に、社内に異常を発見されやすくなるため、多めの手数料をそのままにしたのだろう。

次に、ビットコインのマルチシグネチャトランザクションを作る際に、例えば3人分の署名を必要とするなら、その3人が署名する部分は、3人ともが同じ内容のトランザクションである必要があることから、アドレスポイズニング攻撃を成立させるためには、生トランザクション(未署名)の段階で、既にアドレス部分が書き換えられている必要がある。

となると、出金業務のフローを俯瞰してみれば、生トランザクション(未署名)の内容を改ざんできるタイミングは、生トランザクション(未署名)を作り出すシステム~当該トランザクションに署名するシステムとの間にしか存在しえない。

そうなると、容疑者はだいぶ絞られるはずだ。

このように考えると、今回の事件はおそらく、署名鍵を奪われた事が原因で起きたのではなく、生トランザクションを改ざんすることを原因にして実行されたものと推定できる。

さて、この事件での教訓は、いくつかある。
その辺の解説は後日行う。

関連記事