Bisqの不正流出対応と非中央集権
今月上旬に、メジャーなビットコイン系DEXのBisqが3BTCと4000XMRの不正流出があったことを発表し、対応を発表しました。「非中央集権取引所が発表とか対応って、何言ってんだ」という点を含め、今回の事件の原因と対応をまとめ、他のDEXのハッキング事例を含め、非中央集権取引所の条件を考えます。
BISQ
Bisqは主にビットコインにフォーカスした非中央集権取引所で、BTC⇔法定通貨、BTC⇔XMR(モネロ)の取引が多いです。誰でもソフトウェアをダウンロードすれば参加でき、Bitcoin MainnetとTorを使ったP2Pソフトです。OpenBazaarに似てますね。したがって、オンラインのノード間でしか注文などが共有されないので、トレードするにはオンラインである必要があります。
他に特徴的なのはカラードコインBSQを使ったDAOによる運営が行われている点で、取引手数料の分配などの意思決定をBSQ保有者が投票で行ったり、トラストが必要な役務に着くのにロックアップが必要だったりします。
発行自体は、開発に貢献した人が1000サトシを送り、DAOで貢献が認められると、その1000サトシが$1000分のBSQとなり開発者に与えられます。そしてビットコインより有利なレートで取引手数料に使うことができるので、取引をしたい人が買うという想定です。BSQ自体に資金調達の機能はなく(ICOでもなく)、Bisqの収益源は取引手数料のみなので、BSQの発行は将来のキャッシュフローを悪化させる影響があります。
DAO化する目的は、DEXのアキレス腱とも言える開発・運営の分散化だそうで、当然、最初は実態は完全なる中央集権状態だったので、DAOによる分散化は徐々に進む性質のものと捉えているようです。
また、4年ほどのメインネットでの取引の歴史がありますが、今回初めて使われた、全ての取引を停止するアラートキー機能というものがあります。これについてウェブサイトなどに明確な記述はなく、コードをくまなく調べてやっと見つかる、隠されたキルスイッチのようなものです。ただし、あくまでもユーザーはこれを無視して取引を再開することができます。
事件
昨年10月にBisq 1.2.0にアップデートした際、取引の仲裁者となる第三者を含めたマルチシグ・エスクローを作成する方式から、取引の当事者のみの2-of-2マルチシグに入金し、時間切れの場合はBisq DAOによって設定される「寄付アドレス」に送金するという仕様になりました。(第三者の鍵によって結果が左右されないので、非中央集権性が高いという理由)
しかし、Bisqのソフトウェアは相手から送られてくる部分的に署名されたトランザクションにおけるその寄付アドレスの真贋を検証していなかったので、取引相手から送られてきたトランザクションにおいてBisqの寄付アドレスが実際は相手の保有するアドレスだった、というケースがあり、今回の不正流出が起きました。
要するに、ソフトウェアの脆弱性により、トレードのプロトコルに穴があった状態です。
対応
最初の対応として、史上初めてアラートキー機能でBisqネットワークでの取引停止(勧告)を行いました。一連の対応の中で、ここが一番中央集権的かな、というところです。
Bisqはその後、バージョン1.3.0(現在は1.3.1)にアップデートして問題を修正しています。
不正流出した資金は取り戻すことはできませんが、今後の取引手数料から盗難に遭ったユーザーへの返金がDAOで提案される見込みだそうです。
なお、バグを探してくれる開発者への将来的な報酬の基金が減る上、先見の明がある犯人だった場合、被害者にも紛れることで(盗難に遭ったユーザーのうち1人以上が犯人のアカウントの場合)Bisqからノーリスクでお金を受け取ることになるので、個人的には通すべきではないと思いますが、あくまで投票なのでどうなるかは不明です。
DEXのハッキング事例と攻撃ベクトルの所在
今回の不正流出への対応は、アラートキー機能に関してのこと以外はDAOを通して通常のフローで行っており、個人的にはBisqの宣伝文句と近いレベルの非中央集権が実現されていると感じました。
しかし、脆弱性の内容はコードレビューの不足(≒ステークホルダーの少なさ)を表しており、またアラートキー機能は強制力はないとはいえDAOを迂回した完全なる中央集権的行動だったので、そこはがっかりするポイントに感じました。BisqとHodl Hodlがビットコインの2大DEXなので、そのレベルのDEXでもこんなもんか、とやはり非中央集権性の難しさを感じました。
他のDEXのハッキングの事例をいくつか見ていきましょう:
・Bancor (2018/7/9)
Bancorスマートコントラクトの秘密鍵流出による。スマートコントラクトの秘密鍵を持っていれば任意に出金できるなら根本的にDecentralizedとは言えない。現に、犯行途中でBancorチームにより流出を食い止めるためユーザーの資金は凍結された。
・Waves (2018/7/24)
Webサイトのサポートフォームを通してCEOになりすました犯人にWebサーバーのパスワードを教えてしまい、取引所を訪れたユーザーがフィッシングの被害に。
・0x (2019/7/13)
(流出はないが)バグが発見され、0xチームによりプロトコルが停止される。
調べてみると、実際に流出が起こった件数はそう多くないように思いました。これは単純にユーザー数が少なく、脇の甘い中央集権取引所を攻撃するのに比べてリワードが見込めないことも影響していると思いますが、シンプルに注文を並べてトラストレスにスワップするようなDEXであれば攻撃ベクトルがほぼ存在しないということに起因しているのではないでしょうか。
だとすると、Bisqの根本的な問題はビットコインとモネロや法定通貨をアトミックスワップできないこととなります。だとすると、ビットコインでDEXを実現するには、Liquidのようにマルチアセット対応しているセカンドレイヤー・サードレイヤー上で行うことが一番確実でしょう。(LN等でもやろうと思えばできそう→Chaintope Inazmaプロジェクトなど)
Bisqの場合、複雑なDAO自体にも構造的な攻撃ベクトルが潜んでいるかもしれません。シンプル・イズ・ベスト。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション