わたっちが数十億円持ち逃げを阻止した話
謹賀新年
みなさま、あけましておめでとうございます。
どうぞ今年も週刊ラグを宜しくお願いいたします。
今日はkudasaiのリーダーわたっち(@watacchikasou)が世界を救った話になります。
さて、その前にお伝えしなければならないことがございます。慧眼なる読者のみなさまならお察しのこととは思いますが、この週刊ラグ、月刊ラグどころか年刊ラグになりつつある今日この頃、いかがお過ごしでしょうか。
それもこれも、前任者のやき〇りが突然蒸発したせいです。新しい名前を決めたら書くって言っていましたが、いまだに名前決まっていないそうです。焼き加減ミスって灰になってるみたいですね。
あっ、申し遅れましたが、わたくしらぐぷりことらぐらぐぷりん(@yakitoribit)と申します。アカウント買いました。
今日のお話は、アナタの資産もどこかの誰かみたいに突然消えてなくなってしまうかもよ!!!あぶない!!!という話です。
でもわたっちが救ってくれるかもよ!!!!ください!!!!
Hashflowとは
今回はHashflowの脆弱性を発見、報告したお話です。
わたっち:kudasaiのオーナーWatacchiです。まずHashflowとは、
https://medium.com/dragonfly-research/hashflow-a-decentralized-crypto-brokerage-f578b9acd4c2
HashflowはMarketMakerとユーザーをオンチェーンで繋ぐプロトコルで、非常にGas代が安い(Uniswap の50%以上安価)という特徴や、トップMarketMakerが参入している、MEVレジスタントでもあり、フロントラン・サンドイッチbotの脅威にさらされることもありません。
フロントラン・サンドイッチbotに関してはこちらをご参考に
らぐ注:ユニスワップに比べガス代が安い理由として、Hashflowでは署名の検証と取引以外はオフチェーンで行われるためです。ボンディングカーブやオンチェーンルーティングをしないため、その分コストが安くなり、また同時にフロントランニングやサンドイッチ攻撃を防ぐことを可能にしています。
Hashflowの投資家はDragonFlyを始め、Alameda等のVCが参加していました。
去年からオープンし、日本人の中でも給付金対象として使われ、最初期からHashflowを使用していた人には Genesis NFTは配布されていました。
トレーダー、MarketMaker、流動性提供者、NFTホルダー、コミュニティ貢献者にはToken付与が発表され、NFT価格は高騰、GenesisNFTの現在価格は10ETH前後(2022/1/8)となっています。
0x:Bullish
らぐぷり:ちなみに私はclaimし忘れました
そして2021/12末より250K以上Depositできる人またはGenesisNFTのホルダー等、一部が先行して流動性提供できるようになりました。
流動性提供者としての要件は250Kドル以上提供できる、もしくはGenesisNFT等、一部のNFTをもっている必要性がありました。
これで上限10Mドル、実際には5Mドル程度の流動性提供がユーザーによってなされ、1日の取引高は20Mドル前後となっています。(2022/1/5)
らぐぷり:条件厳しいのに6億円分ぐらい流動性提供されているんですね
事件のタイムライン
時系列をまとめると、以下のようになっています
#1 2022/12/15日頃 250K以上流動性提供できるユーザーを募集開始
#2 2022/12/25日頃 NFT カテゴリ1をもち、流動性提供を希望するユーザーを募集開始
(ここまでがホワイトリスト制の流動性提供、合計10Mドル制限)
#3 2022/1末前後? TGE, プールの一般開放
・2020/4からプロダクトが動いていてハッキングもされておらず
・ステーブル流動性提供によるToken付与は、Tokenomicsを見ても利率が非常によく感じたため、#1に応募し、滑り込むことができました。
オープンβのHashflowでは DAI,USDT,USDCの流動性提供が可能で、提供を行うと、CLC-DAI,CLC-USDT,CLC-USDCという債権(簡単にいうと引換券)が発行されます。
(USDC 預けて 引換券のCLC-USDCをもらった場合、逆に出金する場合は、CLC-USDTを渡して、USDCを受け取ります。)
つまりこの引換券が、”Hashflowにお金を預けている証拠”となります。
ここで湧いてくるのが、”引換券無限発行したいなあ・・・”という気持ちです。大事なのは“ほしいなあ”“貫通したいなあ”という気持ちです。
らぐ注:貫通とは(kudasai用語)
トークンセールやNFTをmintする際に、指定したアドレスからしか購入出来ないように運営がホワイトリスト(WL)を設定していることがあります。このWLに載っていないにも関わらず、また枚数制限などを力技で突破することを貫通と呼びます
引換券さえあれば、それを使って他人が流動性提供した分を出金することができてしまいます。簡単にいうとハックできちゃった、ということですね。
らぐぷり:そんなこと出来るんですか・・・?
HAHA…!! できちゃいました
DAIをdepositせずに、350Kドル分(4000万円程度分)の引換券の無料発行に成功しました。
らぐぷり:なんで!?
0x:Bullish
引換券を無料発行しても、使えなかったら意味がないので出金してみます。PoolにDAIがその時点でそんなになかったため一部だけ試してみます。
出金完了です。250Kドル分のDAIをゲットすることに成功しました。
その当時POOLにはステーブル合計5Mドル(約6億円)あったので全部抜きました。ジャンボ宝くじですね。ありがとう。
0x:bullish
というのは嘘で、バグバウンティあるの?って運営に聞いて、モノによるけどアルヨ!という返信をもらって言質をとってから報告します(強欲なので)
らぐ注:バグバウンティとは運営にバグを報告することで、バウンティ(報奨金)をもらうことが出来る制度。バグ報奨金制度などと呼ばれ、バグハンターと呼ばれる人も。
リワードくれるって!ヤッタァ!!
今回はバグを発見しましたが、何回も試行錯誤はしてません。(他の人にバグを発見されてPOOLを抜かれる可能性があったため)
でも脆弱性から考えると、全てのプールで使用できるバグの可能性が高いと考えていたので興味本位で聞いてみます。
らぐぷり:何回も試行錯誤すると、他の人に気づかれてわるいひとが悪用する恐れがありますもんね。というかethscan上で全部見れるのがいいところでもあり怖いところですね。
Q. 仮説上、全部のプールの引き換えトークンをmintして、プール空にできたよね?
A. イエス、技術的に可能でしたのでホワイトリストを削除して、バグが悪用されないようにしました。ありがとう。
つまりあれですね?オープンβで入っていた5Mドルは僕が救ったんですね?!
0x:Bullish
というか、これTGE後に悪用されてたら5Mドルじゃすまない金額でしたよね!?
(TGE後は単一プールだけでなく複数プールも予定されていた)
もうすでに対策がとられたコントラクトに置き換わって、Hashflowは今日も元気に動いています。チャンチャン。
\キャーワタッチワンタッチー!!/
バグの内容
-UI上でしか 流動性提供するトークン(DAI、USDT、USDC)の残高を確認していない
-直接コントラクトに流動性提供のTxを飛ばすと、コントラクト内での処理がどうやら、引き換えトークンをmint、提供されたステーブルトークンの処理が別処理となっており、txさえ送っておけば、引換券は受け取りつつ、ステーブルトークンのみ失敗する、という処理になっていた。
本来なら、まずステーブルトークンの処理を行うべき(そこで残高が足りなければ処理を中断)
トランザクションを確認する限りUSDC、USDTも同じ処理のためバグがあったと思われるが、DAIのみのバグであったとしても、全部抜けることには変わりはありませんでした。
Hashflowを利用し、大きい金額のUSDC・USDT→DAI swapを行ってHashflowの流動性を一時的にDAIに偏らせた後に引っこ抜けばOK。
幸いにも、オープンβがWL制であり、WLに入っていない人は入出金できないため、発見した脆弱性が他人に悪用されることはありませんでした。
(見つけても悪用できるのはWLに入っているせいぜい100人程度)
報告してから対処されるまで半日ほどあったので、悪用しようと思う人がいたら十分にできた時間がありました。
もしワイが悪用するとしたなら、このままバグをそっとしておいて、TGE後、プール公開で流動性提供が一気に増えたところを全抜きした・・・でしょうね・・・・
という割と知られているプロトコルを救ってみたお話でした。
プログラムにバグはつきもの
らぐぷり:いやあ、凄い話でしたね。さすがホワイトハッカーわたっち。
最近では $RBN や $GFI の影響もあり給付金目当てで色々なプロトコルに触れている方が多いですが、あくまでスマートコントラクトを構築するのは人間、また常に穴を探しているようなわるいひともいることを忘れてはいけません。
最近だとMonoXがエクスプロイトされました。
何回もやられているCREAMと手口は同じ感じです。
31Mドルほどやられたそうです。プロジェクトの規模からいくと、バグに気づかなければHashflowは100億円盗まれたとしてもおかしくないですね。
ハッカーだけでなく、プロジェクトの運営が資金持ち逃げすることもままあります。
そうです、RUGPULLです。
3億円事件とはなんだったのか
今回の表紙はSwap Babyさん(@JkSwap)に作って頂きました。ありがとうございます!MEME画像作りをしている方に有益なnoteを作成されています。
今回の表紙は3億円事件をモチーフにされているそうです。
で、ちょっと思ったんですが、今思うと3億円てたいした額じゃないですよね、暗号通貨市場に限って言えばですが。3M、今回のHashflowより少ない。
前回バブル崩壊のキッカケになったコインチェック事件も500億円ですし、私たちの感覚と離れすぎてて実感が沸いていないだけなんでしょうか?
インフレしてるとは言え、100倍にはなっていないですからね・・・暗号通貨における規模感はやはり桁が違いますね。チャンスとリスクのバランスを取って生き残っていきたいものです。
kudasaiでは頻繁にAMAを行っております
現在CryptoKudasaiJPでは、様々なプロジェクトとAMA(Ask Me Anything)を行っております。
プロジェクトとのやり取りはkudasaiテレグラム(@kudasaiJP)にて、日本語での解説ボイスチャットはTwitter(@kudasai_japan)にて行っております。
Twitterスペースはラジオ感覚で聴いて頂いても楽しめるかも知れません。
また、毎回賞金もあるのでぜひご参加ください。
18. Jan.2022 21:00 JST[12:00 UTC]
PortalDeFi @portal_finance
19. Jan.2022 21:00 JST[12:00 UTC]
Basketballverse @bballverse_gg
20. Jan.2022 21:00 JST[12:00 UTC]
Engines of Fury @EnginesOfFury
24. Jan.2022 21:00 JST[12:00 UTC]
Dappio Wonderland @Dappio_
25. Jan.2022 21:00 JST[12:00 UTC]
Cybertrade @CyberTradeGame
27. Jan.2022 21:00 JST[12:00 UTC]
Legends of Elumia @PlayElumia
それではまた次回。See ya!
NFA, DYOR, STAY RUG