【速報】 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] ハッカーがUSDCをETH側へブリッジ
[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] ハック発生
ごくごく普通の水曜日の朝、事件は突然起こりました。
Mangoが攻撃を喰らったみたいです。
— くりぷとべあー🐻 (@cryptoo_bear) October 11, 2022
直撃しました、呆然としてます。
引退するかも…。
端的にいうと、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の注文の順序を逆で書いていました。紫藤かもめさん、ご指摘ありがとうございました。)
Mangoハックの手段については @joshua_j_lim さんのスレが非常にわかりやすかったので拝借させていただきます🙏
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
まず、AttackerはアカウントAに$5mを担保として入れた。 https://t.co/lDpgRIdWqt
[10/12 08:15] ハッカーがUSDCをETH側へブリッジ
その後、ハッカーはパクったUSDCのうち約半分をETH側へとブリッジしDAIへとSwapしました。
ブリッジ経路がCircle Bridgeという今までのハックで利用されたことのない斬新なものであったため、相当の有識者でも気づかない人が多かった模様です。(僕は後述するブログで紹介されていて初めて知った)
お金の流れはこのツイートで引用RTしたものが一番わかりやすかったです。
昨日の🥭ハカーのお金の流れはこれが一番わかりやすい感じがする。
— くりぷとべあー🐻 (@cryptoo_bear) October 13, 2022
(shortを入れたアカウントへの$5mが図にはない気がするけどまぁ瑣末な話) https://t.co/GZ6Qk5W43e
参考: Circle Bridge への送金Txの1個目
[10/12 10:30] ハッカーからProposal
ハックから約3時間後、ハッカーからMango DAOに提案が出されました。
この時点では↑のUSDCのBridgeに気づいていなかったため、お金洗浄できてないくせにかなりアグレッシブな内容だなと印象を持ったのを強く覚えています。
https://t.co/Lf9xMt5DGv
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
ハッカーがMangoDAOに提案。現在のハカー持分はSOL 761,577, mSOL 799,155で$46m程度。これに保険金の$70m合わせると不良債権返せるだろうから、残りはワイ持ってくでって感じ。
ちなみにこの提案に自分でYes押してて草 (yUJ...がハカー)
個人的にはこれでMangoに折れてほしい pic.twitter.com/VhCD5fcLak
[10/13 20:15] Mango陣営から補償案の草案が出る
ハックの次の日の夜、Mango陣営から補償案の草案が出ました。
-We computed every account’s equity in USDC and plan to reimburse as much as we can using the DAO treasury (subject to vote) and whatever tokens we're able to recover.
— Mango (@mangomarkets) October 13, 2022
このツイートを読んだ時点では "we're able to recover (私たちが回収できた分を〜)" とか書いてて「??」って感じだったのですが、この時点から陣営側はハッカーと交渉がまとまる手応えを感じていたのかもしれません。
[10/13 22:00] ハッカー素性のスクープでる
その後ほどなくして、ハッカーの素性を暴いたというスクープが出ました。
SolanaのUSDCはCircle公式のものであるため、Circleを介した(?) Bridgeができたらしい。そのTxについてこの記事で紹介されていて興味深かった。Bridgeした後はDAIにしたらしく、USDCはもうダメっぽいか?
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
(注記: この記事で名指しされてる人が犯人かどうかは真偽不明)https://t.co/s2G8aixYHD
この記事中で、ETHへブリッジした方法とそのTx、Tx先のENSの持ち主のDiscord名及びそこから推測されたTwitterアカウント、などが暴露されていました。
名指しされている人が犯人か真偽不明、と↑のツイートでは書きましたが、結局のところ名指しされた人が犯人でした。

ENSの持ち主も一瞬で見つけてくるのすごい…。
[10/14 13:30] マンゴー陣営からProposal
そして、(結果的にハッカーからの資金返還方法となった) Proposal が Mango 陣営から出されました。
A new proposal: https://t.co/RkwDfq4N1Q
— Mango (@mangomarkets) October 14, 2022
Proposalの日本語訳は以下の通りです。端的にいうと、
USDCの大半とUSDT全部あげるし残り返して
これに合意するなら、合意した証としてUSDC,mSOL,SOL,MNGO以外の比較的少額の資産全部送って
というものでした。ニュアンスが読みきれないのですが、この時点でハッカーと概ね交渉が成立してたのかなと思います。(で、このProposalで証拠を残し、DAOにも了解を取り付ける的な。)

[10/14 16:45] ハッカーからProposal合意の意味での返金
そして、Proposalに記載の通り、ハッカーから一部の資産が返却されました。
この時点で、一般ユーザーでも「ハッカーが本当に交渉に乗ってくる気があるんだ」とわかり、安堵感が広がっていくのを肌で感じました。
Mangoの犯人がProposalを受諾して、SOL, mSOL, USDC以外のトークンを返したっぽい。Proposalの通りだと、12時間以内に761k SOL, 799k mSOL, USDC $10m が返還されて、保険金と合算してユーザーに補償されるはず。補償の方法はまだ明らかになっていない。
— くりぷとべあー🐻 (@cryptoo_bear) October 14, 2022
Proposal: https://t.co/IxrI3nnFbz pic.twitter.com/kKVJGPHWta
(↑のツイートではここから12時間以内に、と書きましたが正確にはProposal可決後12時間以内に、の間違いでした。)
[10/15 13:20] Proposal可決
Proposalは可決最低票数は超えたものの、過半数の票を得られませんでした。そのため、Proposal投票が締切られた12時間後に自動的に可決となりました。
ここから12時間以内ハッカーがUSDC, SOLなどを返してくれればほぼ解決ですが、本当に返してくるのか?とこの時点でも30%程度は疑っていました。
[10/16 01:00] ハッカーから全額返金
返金期限まで1時間を切ってもなかなかハッカーから返金がありませんでした。
ハッカーはGPT-3関係の全然関係ないツイートをリツイートしたりして、あぁもうお金返ってこないのかなぁと少し悲観的になっていたのですが、
Mango ExploiterからSOL, mSOLがMangoに返還されました。https://t.co/MzRkCK2di3https://t.co/qMsgd0toA7
— くりぷとべあー🐻 (@cryptoo_bear) October 15, 2022
期限の15分ぐらい前にまずSolana側でSOL, mSOLが、ついで、ETH側でUSDCが返還されました。
USDCはETH側で変換されました。
— くりぷとべあー🐻 (@cryptoo_bear) October 15, 2022
キタ━━━(゚∀゚)━━━!!!https://t.co/im3WPtdSxO
というわけで $50m弱 にも及ぶ金額がハッカーの手に渡ってしまったのですが、Mango被害者にお金が返ってくる可能性が極めて高くなりました。
これで(たぶん)史上最高額のバグバウンティ 約$50m が成立でしょうか?今後どうなるんだろう?
— くりぷとべあー🐻 (@cryptoo_bear) October 15, 2022
返還の方法は未定ですが、Mango Exploitの被害者はほぼ全額補償される可能性が高いと思われます。
(バグバウンティって書いたけど多分違うよね。どう呼ぶのが適切なんだろう?)
バグバウンティで少額を受け取るより、実際にExploitして多額の謝礼を受け取る方がいい、的な悪しき前例になってしまうかもしれないのですが、自分のお金がちゃんと返ってきそうなので、個人的にはこれで堪忍しておくれやすって感じです。
[10/16 01:45] ハッカーから釈明(?)
そして仰天したのですが、なんとハッカーは犯行声明?をツイートしてきやがりました。あまりに堂々としててびっくりするのですが、合法であることを確信しているのでしょうか。
Mango Exploiterからの釈明連ツイ来てました。
— くりぷとべあー🐻 (@cryptoo_bear) October 15, 2022
白々しすぎて草も生えないしこれを丁寧に日本語の連ツイに起こす気も1mmも起きないのですが、一応DeepL翻訳したものをぺろっと貼っときます…。 https://t.co/xtQ7zMnbRB pic.twitter.com/2jHSOISrs0
このあともなんかぽつぽつツイートしてるんですが、取り上げるのもアホくさいので無視します。
[10/17 24:00] 返還方法についての議論開始
返ってきた $67m の資産及び保険金によって被害者への補償が行われる見込みです。返還方法などはまだ未定で、追って議論が開始されるとのことです。
('22/10/18 10:00 追記) 予定通り議論が進んでおり、返還方法(トークン)と返還金額は以下のGoogle Spreadsheetで確認することができています。僕は全額USDCで返ってきそうです。
$67M in various crypto assets have been returned to the DAO. Let’s meet up on Monday 3 PM UTC on the Mango discord to discuss, how we can sort out this mess.
— Mango (@mangomarkets) October 15, 2022
10/13 20時に出た補償案のツイート、及び、10/16 3時に出たツイートの内容などから、Snapshot時点の資産額(Deposit - Borrow)をUSDCで返済、というものに近いことが予想されます。というか僕はそれ前提で動いてるのでそうなってほしい (詳細後述)
-We computed every account’s equity in USDC and plan to reimburse as much as we can using the DAO treasury (subject to vote) and whatever tokens we're able to recover.
— Mango (@mangomarkets) October 13, 2022
A bunch of developers already took charge and started working on an algorithm to decide on a refund split: [https://t.co/6J4crfRJM3](https://t.co/6J4crfRJM3) As well as a separate program, to redistribute funds.
— Mango (@mangomarkets) October 15, 2022
自分の状況について
自分はUSDCをDepositしてSOLを大量に借りていました。全てUSDCでの返還となる場合、借りているSOLを裸ロングしていることになるため、既にSOLは全て売却しました。
が、Snapshot時点の資産状況で清算されるパターンだと、借りていたSOLの返還義務が生じ、買い戻しで損を出す可能性があります。
結構な枚数のため、SOLが騰がっていた場合はかなりの損失を出す可能性があります。返済方法が決まるまでソワソワする日が続きそうです…😱
その他小ネタ
アフロ説教
アフロがMangoのリスクエンジンについて、FTXのその優位性と比較しながら説教していました。前に指摘したけど無視されたりしたのかな…?
Mangoのリスクエンジンに対する説教?前に指摘とかしてたんだろうか?アフロからの救済はなさそうな雰囲気。 https://t.co/psxXlwZCjR
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
説教じみてはいるものの、FTXがどのように担保金管理を工夫しているかがかなり書かれていて、一読の価値はあるかと思います。
あー、FTXのIMF Factorについてこれほど理解しやすい題材はなかった。なるほどな…。
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
このツイートが含まれるスレ、めっちゃ長いのですがFTXの担保に対する思想が明瞭に語られているので一読の価値ありと思います。 https://t.co/oQiPcW0JIQ
冷静な嫁
Mangoの保険金が潤沢であるため、全損することはまずないだろう、と踏んでいました。そのため、ジョークツイートするぐらいの余裕は一応ありました。
Mangoの件、嫁に話しました
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
途端に冷静になる嫁
それって取り出せないの?高APRで高止まりしてるからDepositする奴いるよね。それを出口にして引き出せないの?
なに朝飯食ってんの?早くプログラム書けよ。
どれくらい取戻せたか昼までに報告して
何でこんなに詰められるんだ
俺はMangoを許さない
ハッカーから返金があった後、深夜のノリで完結編も書いたりしました。
(が、これでなんらかの事情でお金返ってこなかったら本当に泣き崩れちゃうからちゃんと返ってきてくれ…!)
Mangoの件、嫁に話しました
— くりぷとべあー🐻 (@cryptoo_bear) October 15, 2022
途端に泣き崩れる嫁
心配してくれてたんだね、ごめんな
お詫びにたまには贅沢品買ってあげよう
今から子供にお金が返ってくるからクリスマスプレゼント買えそうな事、伝えます。
DeFiの保険金で助かる人もいるんだな
俺はMango式IDOを許すことにする
ふぅ、助かった…
💩色んなおじさんたち💩
【🥭被害をつぶやいたら来たおじさんまとめ】
— くりぷとべあー🐻 (@cryptoo_bear) October 12, 2022
①いくら損したのおじさん (多数)
②ほらねおじさん
③捻ったけど面白くないネタで煽るおじさん (例:🥭農家の台風被害かと思った)
落ち込んでる人に遠路はるばる💩投げつけに行く、暇なおじさんにはなりたくないと心に誓った1日でした🤮
最後に
これにて事件が解決したわけじゃないですが、(ユーザー側としては) 穏便な結果になりそうでホッと一安心しております。
最後になりましたが、落ち込んでいる僕を気にかけていただいた方、優しく励ましてくださった方、DEG鯖で愚痴を言い合ったり色々教えていただいた皆さま、本当にありがとうございました。
大変励まされると共に、自分も困っている人や落ち込んでいる人がいたら、寄り添ってあげられる強くて優しい人にならねばと背筋が伸びる思いでした。
遠路はるばるウッキウキで💩投げつけにくる人がいたので、その対比があまりに滑稽で一層そう思いました。
他の🥭被害者の方も、これから幸多からんことを祈って、記事の締めとさせていただきます。
皆さん、冬はくれぐれもご安全に!
んじゃまたね🤗