【速報】 Mango Markets ハッキング事件の今までの顛末まとめ

注記: 本記事で扱う事象は Mango Markets の仕様を利用したものとも捉えられるため、正確にはハッキングではないかもしれません。が、わかりやすさを重視し、ハッキング、ハック、ハッカー、事件といった表現を利用しています。

おはようございます!くりぷとべあーです!

今日は、Mango Marketsのハッキングのこれまでの顛末をまとめます。

編集履歴

  • ['22/10/16 11:00] ハッカーのPERP注文の順序が違うとご指摘いただいたので、正しい内容に修正しました。

  • ['22/10/18 10:00] 返金額・トークンが検討されているGoogle Spreadsheetへのリンクを追加しました。

Mango Markets について

(知ってる方は読み飛ばしてください)

表題書いときながらアレですがMango Markets自体の詳細な解説はしません。Solanaの旗艦DEXの一つなのでググればたくさん情報が出てくると多います。

ざっくりいうと「オンチェーンのFTX」「Lending機能もついたDYDX」というと概ね合ってると思います。一つ説明しておくべき特徴としては独自形式のIDOを昨年行い、莫大な資金調達を成功させました。

出資者側にあまり旨みを残さないIDO方式には賛否両論ありますが、IDOを原資とする潤沢な保険金があることから安心してお金を置いていた人も多かったと思いますし、実際に今回の事件ではその保険金で被害者が救われそうな感じでもあります。

ハッキング発生から現在まで

さて、ここからが本題です。

全体の流れ

まずはこれまでの事件の流れを書き、その後、詳細を書いていきます。(時間は全て日本時間)

[10/12 07:30] ハック発生
[10/12 08:15] ハッカーがUSDCETH側へブリッジ
[10/12 10:30] ハッカーからProposal
[10/13 20:15] Mango陣営から補償案の草案が出る
[10/13 22:00] ハッカー素性のスクープでる
[10/14 13:20] マンゴー陣営からProposal
[10/14 16:45] ハッカーからProposal合意の意味での返金
[10/15 13:20] Proposal可決
[10/16 01:00] ハッカーから全額返金
[10/16 01:45] ハッカーから釈明(?)
[10/17 24:00] 返還方法についての議論開始

[10/12 07:30] ハック発生

ごくごく普通の水曜日の朝、事件は突然起こりました。

端的にいうと、Solanaの旗艦DEXと言ってもいいMango Marketsから、流動性のある資産が全て抜き取られるという仰天のハッキングでした。この時点での被害総額は $114m 程度と相当大きなものでした。

ハック直後のスクショじゃないけど
雰囲気はおわかりいただけるかと
ほとんどのトークンでLiquidityがほぼゼロです

何度かに分けて資産が抜き取られていましたが、日本時間7:29:44のUSDC $50m が最もインパクトのある打撃でした。

ハック詳細は↓で引用した @joshia_j_lim さんのスレが分かりやすかったです。長いので4行でいうと

  • 自分である程度大きな自己資本を準備し、Mango Markets内で MNGO-PERP (MNGO: Mango Marketsの取引所トークン) で大量の買い注文を出した

  • 自分の複垢でその買い注文を全てTakeして、買い注文を出したアカウンんとに大量のLong Positionを作った。

  • その後、MNGOのインデックス先でMNGO現物を大量に成り行き買いして現物価格を大幅に上げた。

  • Long Positionに膨大な含み益($400m以上)が出たため、それを利用してMango Markets内のLendingで引き出せる全ての資産を引っこ抜いた

('22/10/16 11:00修正 → 記事公開時にはPERPの注文の順序を逆で書いていました。紫藤かもめさん、ご指摘ありがとうございました。)

[10/12 08:15] ハッカーがUSDCをETH側へブリッジ

その後、ハッカーはパクったUSDCのうち約半分をETH側へとブリッジしDAIへとSwapしました。

ブリッジ経路がCircle Bridgeという今までのハックで利用されたことのない斬新なものであったため、相当の有識者でも気づかない人が多かった模様です。(僕は後述するブログで紹介されていて初めて知った)

お金の流れはこのツイートで引用RTしたものが一番わかりやすかったです。

参考: Circle Bridge への送金Txの1個目


[10/12 10:30] ハッカーからProposal

ハックから約3時間後、ハッカーからMango DAOに提案が出されました。

この時点では↑のUSDCのBridgeに気づいていなかったため、お金洗浄できてないくせにかなりアグレッシブな内容だなと印象を持ったのを強く覚えています。


[10/13 20:15] Mango陣営から補償案の草案が出る

ハックの次の日の夜、Mango陣営から補償案の草案が出ました。

このツイートを読んだ時点では "we're able to recover (私たちが回収できた分を〜)" とか書いてて「??」って感じだったのですが、この時点から陣営側はハッカーと交渉がまとまる手応えを感じていたのかもしれません。


[10/13 22:00] ハッカー素性のスクープでる

その後ほどなくして、ハッカーの素性を暴いたというスクープが出ました。

この記事中で、ETHへブリッジした方法とそのTx、Tx先のENSの持ち主のDiscord名及びそこから推測されたTwitterアカウント、などが暴露されていました。

名指しされている人が犯人か真偽不明、と↑のツイートでは書きましたが、結局のところ名指しされた人が犯人でした。

パッとETH側のTxを突き止めた上で
ENSの持ち主も一瞬で見つけてくるのすごい…。

[10/14 13:30] マンゴー陣営からProposal

そして、(結果的にハッカーからの資金返還方法となった) Proposal が Mango 陣営から出されました。

Proposalの日本語訳は以下の通りです。端的にいうと、

  • USDCの大半とUSDT全部あげるし残り返して

  • これに合意するなら、合意した証としてUSDC,mSOL,SOL,MNGO以外の比較的少額の資産全部送って

というものでした。ニュアンスが読みきれないのですが、この時点でハッカーと概ね交渉が成立してたのかなと思います。(で、このProposalで証拠を残し、DAOにも了解を取り付ける的な。)

DeepL翻訳を一部筆者で修正

[10/14 16:45] ハッカーからProposal合意の意味での返金

そして、Proposalに記載の通り、ハッカーから一部の資産が返却されました。

この時点で、一般ユーザーでも「ハッカーが本当に交渉に乗ってくる気があるんだ」とわかり、安堵感が広がっていくのを肌で感じました。

(↑のツイートではここから12時間以内に、と書きましたが正確にはProposal可決後12時間以内に、の間違いでした。)

[10/15 13:20] Proposal可決

Proposalは可決最低票数は超えたものの、過半数の票を得られませんでした。そのため、Proposal投票が締切られた12時間後に自動的に可決となりました。

ここから12時間以内ハッカーがUSDC, SOLなどを返してくれればほぼ解決ですが、本当に返してくるのか?とこの時点でも30%程度は疑っていました。

[10/16 01:00] ハッカーから全額返金

返金期限まで1時間を切ってもなかなかハッカーから返金がありませんでした。

ハッカーはGPT-3関係の全然関係ないツイートをリツイートしたりして、あぁもうお金返ってこないのかなぁと少し悲観的になっていたのですが、

期限の15分ぐらい前にまずSolana側でSOL, mSOLが、ついで、ETH側でUSDCが返還されました。

というわけで $50m弱 にも及ぶ金額がハッカーの手に渡ってしまったのですが、Mango被害者にお金が返ってくる可能性が極めて高くなりました。

(バグバウンティって書いたけど多分違うよね。どう呼ぶのが適切なんだろう?)

バグバウンティで少額を受け取るより、実際にExploitして多額の謝礼を受け取る方がいい、的な悪しき前例になってしまうかもしれないのですが、自分のお金がちゃんと返ってきそうなので、個人的にはこれで堪忍しておくれやすって感じです。

[10/16 01:45] ハッカーから釈明(?)

そして仰天したのですが、なんとハッカーは犯行声明?をツイートしてきやがりました。あまりに堂々としててびっくりするのですが、合法であることを確信しているのでしょうか。

このあともなんかぽつぽつツイートしてるんですが、取り上げるのもアホくさいので無視します。

[10/17 24:00] 返還方法についての議論開始

返ってきた $67m の資産及び保険金によって被害者への補償が行われる見込みです。返還方法などはまだ未定で、追って議論が開始されるとのことです。

('22/10/18 10:00 追記) 予定通り議論が進んでおり、返還方法(トークン)と返還金額は以下のGoogle Spreadsheetで確認することができています。僕は全額USDCで返ってきそうです。


10/13 20時に出た補償案のツイート、及び、10/16 3時に出たツイートの内容などから、Snapshot時点の資産額(Deposit - Borrow)をUSDCで返済、というものに近いことが予想されます。というか僕はそれ前提で動いてるのでそうなってほしい (詳細後述)

自分の状況について

自分はUSDCをDepositしてSOLを大量に借りていました。全てUSDCでの返還となる場合、借りているSOLを裸ロングしていることになるため、既にSOLは全て売却しました。

が、Snapshot時点の資産状況で清算されるパターンだと、借りていたSOLの返還義務が生じ、買い戻しで損を出す可能性があります。

結構な枚数のため、SOLが騰がっていた場合はかなりの損失を出す可能性があります。返済方法が決まるまでソワソワする日が続きそうです…😱

その他小ネタ

アフロ説教

アフロがMangoのリスクエンジンについて、FTXのその優位性と比較しながら説教していました。前に指摘したけど無視されたりしたのかな…?

説教じみてはいるものの、FTXがどのように担保金管理を工夫しているかがかなり書かれていて、一読の価値はあるかと思います。

冷静な嫁

Mangoの保険金が潤沢であるため、全損することはまずないだろう、と踏んでいました。そのため、ジョークツイートするぐらいの余裕は一応ありました。

ハッカーから返金があった後、深夜のノリで完結編も書いたりしました。
(が、これでなんらかの事情でお金返ってこなかったら本当に泣き崩れちゃうからちゃんと返ってきてくれ…!)

💩色んなおじさんたち💩

最後に

これにて事件が解決したわけじゃないですが、(ユーザー側としては) 穏便な結果になりそうでホッと一安心しております。

最後になりましたが、落ち込んでいる僕を気にかけていただいた方、優しく励ましてくださった方、DEG鯖で愚痴を言い合ったり色々教えていただいた皆さま、本当にありがとうございました。

大変励まされると共に、自分も困っている人や落ち込んでいる人がいたら、寄り添ってあげられる強くて優しい人にならねばと背筋が伸びる思いでした。

遠路はるばるウッキウキで💩投げつけにくる人がいたので、その対比があまりに滑稽で一層そう思いました。

他の🥭被害者の方も、これから幸多からんことを祈って、記事の締めとさせていただきます。

皆さん、冬はくれぐれもご安全に!
んじゃまたね🤗

この記事が気に入ったらサポートをしてみませんか?