ダスクのマイグレーション契約に、Solidityのエクスプロイトを見つけられると思って入ってみた。けれど、もっと面白いものを見つけた。
契約自体はシンプルだ。ユーザーはERC-20のDUSKをロックし、「Locked」というイベントが発行される。
本当の力はオフチェーンにある。
バックエンドのリスナーがそのイベントを監視し、ネイティブのDUSKを発行する署名ウォレットを起動する。つまり、この契約は実際にはマイグレーションを完了しない。完了させるのはバックエンドの処理と、その鍵だ。
1月16日のインシデントはリスクを示した。攻撃者はまず7,880 DUSKでシステムを試し、その後1.91M DUSKを移した。さらに8.91Mの3回目の送金は、署名サービスが停止されて初めて止まった。
契約が壊れたわけじゃない。壊れていたのは運用だった。
再設計――リスナー、署名者、データベース、ジョブキューを分離すること――は意味のある改善だが、信頼をなくすわけではない。信頼は契約の周囲のインフラへと移る。
そのことで、ブリッジについての考え方が変わった。
ブリッジは単にスマートコントラクトではない。オンチェーンのイベントをオフチェーンの認可へと変換する、プロセス全体だ。
最も恐ろしい脆弱性がSolidityの中にあるとは限らない。
民間に気づかれない場所で、秘密鍵とともに静かに動いているスクリプトこそがそうだ。
@Dusk_Foundation #dusk $DUSK
契約自体はシンプルだ。ユーザーはERC-20のDUSKをロックし、「Locked」というイベントが発行される。
本当の力はオフチェーンにある。
バックエンドのリスナーがそのイベントを監視し、ネイティブのDUSKを発行する署名ウォレットを起動する。つまり、この契約は実際にはマイグレーションを完了しない。完了させるのはバックエンドの処理と、その鍵だ。
1月16日のインシデントはリスクを示した。攻撃者はまず7,880 DUSKでシステムを試し、その後1.91M DUSKを移した。さらに8.91Mの3回目の送金は、署名サービスが停止されて初めて止まった。
契約が壊れたわけじゃない。壊れていたのは運用だった。
再設計――リスナー、署名者、データベース、ジョブキューを分離すること――は意味のある改善だが、信頼をなくすわけではない。信頼は契約の周囲のインフラへと移る。
そのことで、ブリッジについての考え方が変わった。
ブリッジは単にスマートコントラクトではない。オンチェーンのイベントをオフチェーンの認可へと変換する、プロセス全体だ。
最も恐ろしい脆弱性がSolidityの中にあるとは限らない。
民間に気づかれない場所で、秘密鍵とともに静かに動いているスクリプトこそがそうだ。
@Dusk_Foundation #dusk $DUSK