DMM Bitcoin 2024年 書き換えられた送金の指図
公表された手口は、鍵の盗難ではない。DMM Bitcoin の社員が出した正規の送金の指図が、途中のウォレットのソフトの基盤で書き換えられ、署名を経て4,502.9BTCが出ていった。入口は、そのソフトの会社の社員に届いた偽の採用試験だった。止める所は、署名する前に、署名する中身を別の経路で確かめることにある。
要点
- 攻撃者は2024年3月下旬、採用担当を装って、ウォレットのソフトを作る Ginco の社員に、採用前の試験と称する Python のスクリプトを送り、社員の端末を侵害した。
- 5月中旬以降、盗んだ認証の情報で社員になりすまし、送金の指図を扱う Ginco の基盤に入り、DMM Bitcoin の社員の正規の指図に不正なデータを足した。
- 関東財務局は、署名を1人で行い、秘密鍵を一括で管理し、ウォレットを分けていなかったことを、事務ガイドラインに反すると知りながら続けていたと認定した。
- 根本の直しは、署名の前に、送り先と額が承認された中身と同じかを、指図の通り道と別の経路で確かめること。複数人の承認、鍵とウォレットの分散、上限はその上に重ねる。
- 委託先とその先の部品の会社の社員の端末は、本番の送金の経路の一部になる。開発の端末で知らないコードを動かさない決まりと、本番へ入る認証の強さも守りの層に入る。
何が起きたか
| 日付 | 出来事 |
|---|---|
| 2022年4月18日 | CISA、FBI、米財務省が、TraderTraitor の名で、採用を装う標的型のメッセージで暗号資産の会社の社員を狙う手口に注意を呼びかける[11] |
| 2024年3月下旬 | 北朝鮮の攻撃者が LinkedIn で採用担当を装い、Ginco の社員に接触する。その社員は Ginco のウォレットの管理の仕組みに入れた。採用前の試験と称して、GitHub に置いた悪意ある Python のスクリプトの URL を送った[8][10] |
| 2024年5月中旬以降 | 攻撃者がセッションの Cookie の情報を使って社員になりすまし、Ginco の暗号化されていない通信の仕組みに入る[8]。Ginco は、5月24日から31日の間に、社員の認証情報で Kubernetes の本番の環境へ不正に入った跡を確認した[10] |
| 2024年5月31日 | 13時26分頃、DMM Bitcoin が自社のウォレットからの BTC の不正な流出を検知する。流出は4,502.9BTC、約482億円相当。新規口座の審査、暗号資産の出庫、現物の買い、レバレッジ取引の新規の建玉を止め、流出分は全額保証すると発表[1]。同日、関東財務局が資金決済法に基づく報告徴求命令を出す[7] |
| 2024年6月5日 | DMM Bitcoin が、グループ会社からの借入、増資、劣後特約付借入で計550億円を調達する予定を示し、流出相当の BTC は市場に配慮しながら調達するとした。原因の調査は継続中とした[2] |
| 2024年7月2日 | 関東財務局が2度目の報告徴求命令を出す[7] |
| 2024年9月26日 | 関東財務局が業務改善命令を出す。提出された報告では、まだ具体的な事実関係が明らかになっていないとし、事実と根本原因の究明を命じた[7][3] |
| 2024年11月29日 | DMM Bitcoin と SBI VCトレードが、口座と預かり資産の移管で合意する。12月2日に公表し、移管の後に事業を廃止する予定とした[4] |
| 2024年12月23日、24日 | FBI、DC3、警察庁が連名で、TraderTraitor による窃取と特定したと公表する[8]。警察庁、NISC、金融庁が、手口の例と緩和策を示す注意喚起を出す[9] |
| 2024年12月25日 | 移管の本契約の締結を公表。移管日は2025年3月8日とした[5] |
| 2025年1月28日 | Ginco が、自社のソフトを構成する基盤の一部への不正アクセスと、DMM Bitcoin の流出との関係を報告する[10] |
| 2025年3月8日 | 口座と預かり資産のすべてを SBI VCトレードへ移し、DMM Bitcoin のサービスを終える[6] |
- FBI は被害を、攻撃の時点で3億800万ドル相当と書く[8]。盗まれた資金は最終的に TraderTraitor が管理するウォレットへ移った[8]。
- 関東財務局の業務改善命令の時点で、流出の具体の手口は究明されていなかった。命令は、手口にかかわらず管理の体制の不備が重大だとして出された[7]。
通った道筋
| 段 | 公表されたこと |
|---|---|
| 近づく | LinkedIn で採用担当を装い、Ginco のウォレットの管理の仕組みに入れる社員に接触した[8]。警察庁の注意喚起は、別の SNS やメッセージのアプリへ移ろうとすること、プログラムの不具合を直してほしいと頼むことを手口の例に挙げる[9]。 |
| 動かす | FBI は、社員が Python のコードを自分の GitHub のページに写し、その後に侵害されたと書く[8]。Ginco は、社員がスクリプトを実行するよう誘導され、業務用の端末が侵害されたと書く。スクリプトは Python の仕様を使う高度な手法のものだったと捜査当局が確認した[10]。 |
| なりすます | 攻撃者は、Ginco のソフトの基盤として契約するクラウドの Kubernetes の本番の環境へ入れる認証情報を取った[10]。5月中旬以降、セッションの Cookie の情報で社員になりすまし、Ginco の暗号化されていない通信の仕組みに入った[8]。 |
| 書き換える | 攻撃者は、低いレイヤーの通信の処理に干渉し、DMM Bitcoin による正規のトランザクションの指図に不正なデータを足した。不正な送金のトランザクションが Ginco のソフトから送られた事実は無い、と Ginco は書く[10]。FBI は、5月下旬にこの侵入を使って DMM の社員の正規の取引の要求を書き換えた可能性が高いと書く[8]。 |
| 署名する | Ginco のソフトでは、指図と履歴を扱うサーバーと操作の画面を Ginco のクラウドから出し、秘密鍵はオフラインのコールドウォレットのソフトとして利用者の手元に置く[10]。DMM Bitcoin は署名を単独で行い、秘密鍵を一括で管理していた[7]。 |
Ginco は DMM Bitcoin と直接ではなく、DMM Bitcoin のシステムの開発と運用を担う会社にソフトを提供し、その会社が DMM Bitcoin に使わせることを許諾していた[10]。DMM Bitcoin から見ると、委託先のその先の会社の社員の端末が、送金の経路の一部になっていた。
ホットウォレットの秘密鍵が盗まれた、という説明が広く出回ったが、公表資料には無い。FBI と Ginco は、正規の指図が書き換えられたと書き、関東財務局は、命令の時点で手口は究明されていないと書く[7][8][10]。書き換えられた指図がどう署名されたか、署名する人が何を見ていたかは、どの発表にも無い。
書き換えが署名に届く仕組み
次は架空の作りで、指図の系、中継、署名の3つに分けた送金の流れである。中継は、この件では委託先のさらに先の会社の基盤にあたる。
悪い例。架空の署名の系。届いた指図をそのまま署名する
// signer.js 架空の例
const req = await relay.receive(); // 中継を通って来た指図
const tx = buildTx(req.to, req.amount); // 中継が書き換えても気付かない
await broadcast(sign(tx, coldKey));
直した例。指図の系の署名、送り先の登録、上限、承認の数を、署名の前に確かめる
// signer.js 架空の例。公開鍵と送り先の一覧は、中継を通らない経路で入れておく
const req = await relay.receive();
if (!verify(req.body, req.sig, ORDER_SYSTEM_PUBKEY)) return reject("指図の署名が合わない");
const order = JSON.parse(req.body);
if (!registeredDestinations.has(order.to)) return reject("登録の無い送り先");
if (order.amount > LIMIT_PER_TRANSFER) return reject("1回の上限を超える");
if (new Set(order.approvers).size < 2) return reject("承認が足りない");
const tx = buildTx(order.to, order.amount);
// 署名の装置の画面に送り先と額を出し、署名する人が指図の系の画面と見比べてから押す
await broadcast(sign(tx, coldKey));
- 確かめる所は、中継の手前ではなく署名の直前に置く。中継の中で確かめても、中継が乗っ取られれば確認ごと書き換えられる。
- 送り先の一覧と指図の系の公開鍵は、中継を通らない経路で、指図を出す人とは別の人が登録する。一覧を中継から受け取れば、攻撃者は送り先を一覧に足せる。
- コールドウォレットは鍵をネットから離すが、何に署名するかは守らない。この件の鍵の扱いは、オフラインのソフトとして DMM Bitcoin の側にあった[10]。
どこで止められたか
| 段 | この件で公表されたこと | 止める仕組み |
|---|---|---|
| 1 近づく | LinkedIn で採用担当を装った接触[8] | SNS で近づかれたらビデオ通話を求め、何度も断れば不審とみる。やり取りの画面を残す。コードの確認や実行を急がせる兆候に注意する[9] |
| 2 動かす | 採用前の試験と称する Python のスクリプトで、業務用の端末が侵害された[10] | 内容を確かめずにコードを実行しない。実行するなら業務用の PC を使わないか、仮想マシンを使う[9] |
| 3 なりすます | 社員の認証情報とセッションの Cookie の情報で、本番の基盤に入られた[8][10] | 多要素認証、業務の期間に限った最小の権限。いつもと違う時間帯、地域、VPN、貸与していない端末からの接続を監視する[9] |
| 4 書き換える | 暗号化されていない通信の仕組みに入られ、正規の指図に不正なデータを足された[8][10] | 経路を暗号化し、指図そのものに出した側の署名を付ける。経路の暗号化だけでは、経路の途中の機械に入られた時に守れない |
| 5 署名する | 署名は単独、秘密鍵は一括、ウォレットは分けていなかった[7] | 移転の取引内容が真正かを確かめる。複数の担当者を関わらせ、複数の鍵での署名を要し、鍵の置き場所を分ける[12]。ウォレットを分けて管理する[7] |
5 署名する。根本の段
1から4は、どれも攻撃者が署名の手前まで来る道を1つずつ塞ぐ策である。道は、委託先、その先の部品の会社、それぞれの社員の端末と、数えきれない。署名する所が、署名する中身を自分で確かめていれば、どの道で書き換えられても、署名の前で止まる。
金融庁の事務ガイドラインは、暗号資産の移転について、社内規則で定めた手続で複数の担当者が関わること、複数の秘密鍵での電子署名を要すること、各鍵の保管場所を分けること、移転の取引内容が真正であることを確かめることを着眼点に挙げていた[12]。関東財務局は、DMM Bitcoin が署名を単独で行い、秘密鍵を一括で管理し、それがこのガイドラインに反すると認識しながら続けていたと認定した[7]。決まりは書かれていた。止まらなかったのは、決まりを仕組みで強制していなかったためである。
預かりの規模が増えても複数のウォレットに分けなかったことも認定された[7]。分けていなければ、1回の署名で動かせる額の上限は、そのウォレットの残高になる。1回と短い時間に動かせる額の上限の考え方は、A06 安全性を欠いた設計 の回数と量の上限の節にある。
4 書き換える。指図の通り道
FBI は、入られた仕組みを暗号化されていない通信の仕組みと書く[8]。Ginco は、低いレイヤーの通信の処理への干渉と書く[10]。経路を暗号化すれば、経路の外からの書き換えは防げる。しかし、指図を受けて渡す機械そのものに入られれば、その機械の中では平文で触れる。指図を出した系がその中身に署名し、受け取る側が使う直前に確かめれば、途中の機械を信じなくてよい。使う直前に完全性を確かめる考え方は、A08 ソフトウェアまたはデータの完全性の不備 にある。
2と3 委託先の先の端末と認証
Ginco の社員の端末から、Kubernetes の本番の環境へ入れる認証情報が取られた[10]。開発の端末に本番へ入れる長く使える資格情報があれば、端末1台の侵害が本番の侵害になる。資格情報を用途ごとに分け、期限を短くする考え方は、秘密の鍵の扱い の権限を最小にする節にある。
金融庁は2026年4月の方針で、近年の流出は署名の鍵の盗難に限らず、ソーシャルエンジニアリングや外部委託先への侵入による間接の攻撃が目立つとし、コールドウォレットを使えば安全とは言えないと書いた。外部委託先に求めるサイバーセキュリティの要件の在り方を検討するとした[13]。
記録と保全
関東財務局は、流出時の証拠保全のためのログの保存期間などを検討しておらず、調査と原因の分析に要る保全を適切に行っていなかったと認定した[7]。命令の時点で手口が分からなかったことと無関係ではない。警察庁の注意喚起は、端末のログの保存期間と、感染後にログが消される危険を考え、ログを集めて保存し検索できる仕組みを作るよう求める[9]。置き方は A09 セキュリティログとアラートの不備 の警告と保全の節にある。
守り方
- 署名する所が、署名の直前に、送り先と額が承認された中身と同じかを確かめる。指図には出した系の署名を付け、署名する側はその公開鍵を中継と別の経路で持つ[12]。A08 ソフトウェアまたはデータの完全性の不備
- 移転には複数の担当者の承認と、複数の鍵での署名を要する仕組みにし、鍵の置き場所を分ける。1人で署名できる作りを残さない[12][7]。
- 送り先の登録を、送金の指図と別の経路、別の人の操作にする。登録の無い送り先へは署名しない。
- 預かりを複数のウォレットに分け、1回と短い時間に動かせる額に上限を置く[7][12]。A06 安全性を欠いた設計
- 送金の経路に入る委託先と、その先の部品の会社までを洗い出し、どの社員の端末から本番に届くかを一覧にする。外部委託先に求める要件を契約に書く[13]。
- 本番へ入る資格情報を開発の端末に置かない。多要素認証を使い、権限は業務の期間に限り、終われば縮める[9]。秘密の鍵の扱い
- 認証とアクセスのログで、いつもと違う時間帯、地域、VPN、貸与していない端末からの接続を見る。端末の電源が切れている間の接続のような、EDR や端末のログとの食い違いを見る[9]。
- 受け取ったコードを業務用の PC で動かさない。動かすなら仮想マシンで、先にエディタで開いて読む[9]。
- ログを端末から集めて別の場所に保ち、保存の期間を決める。感染が疑われたら電源を入れたまま隔離し、メモリを含む揮発性の情報から保全する[9]。A09 セキュリティログとアラートの不備
参照
- 【重要】暗号資産の不正流出発生に関するご報告 第一報 DMM Bitcoin、2024年5月31日。Internet Archive の控え
- 【重要】暗号資産の不正流出発生に関するご報告 第二報 DMM Bitcoin、2024年6月5日。Internet Archive の控え
- 【重要】当社に対する関東財務局の行政処分について DMM Bitcoin、2024年9月26日。Internet Archive の控え
- 【重要】口座及び預かり資産のSBI VCトレードへの移管に向けた基本合意について DMM Bitcoin、2024年12月2日。Internet Archive の控え
- 【重要】お客様の口座及び預かり資産のSBI VCトレードへの移管について DMM Bitcoin、2024年12月25日。Internet Archive の控え
- サービス終了のお知らせ DMM Bitcoin、2025年3月8日のサービス終了の後の案内。Internet Archive の控え
- 株式会社DMM Bitcoinに対する行政処分について 関東財務局、2024年9月26日
- FBI, DC3, and NPA Identification of North Korean Cyber Actors, Tracked as TraderTraitor, Responsible for Theft of $308 Million USD from Bitcoin.DMM.com FBI、DC3、警察庁、2024年12月23日
- 北朝鮮を背景とするサイバー攻撃グループ TraderTraitor によるサイバー攻撃について 注意喚起 警察庁、内閣サイバーセキュリティセンター、金融庁、2024年12月24日
- 当社サービスへのサイバー攻撃に関するご報告 株式会社Ginco、2025年1月28日
- TraderTraitor: North Korean State-Sponsored APT Targets Blockchain Companies AA22-108A CISA、FBI、米財務省、2022年4月18日
- 事務ガイドライン 第三分冊 金融会社関係 16 暗号資産交換業者関係 新旧対照表 金融庁、2024年10月4日。Ⅱ-2-2-4-2 の流出リスクの低減。改正の前と後の両方にある項目
- 暗号資産交換業等におけるサイバーセキュリティ強化に向けた取組方針 金融庁、2026年4月3日