高度化されたDeFiの攻撃 資産を守るために個人ができること
2022年05月26日
この記事を簡単にまとめると(AI要約)
目次
- 前提
- 高度化されたDeFiユーザーへの攻撃
- 個人が対策として出来ること
- DeFiでの運用端末は普段利用と分離
- スマートコントラクトのリスク確認を行えるウォレットを使う
- Approveの定期的な解除
- 総括
前提
本レポートでは、高度化されたDeFiの攻撃と、それに伴い資産を守るために個人ができることについて書きます。
DeFiは個人ユーザーに資金運用の多様性をもたらすものの、スマートコントラクトリスクを筆頭にユーザーが資金を失いかねない様々なリスクをはらんでいます。HashHub Researchでは過去に様々なDeFiのリスクに関するレポートを公開しています。最も基礎的な考え方は下記のレポートです。
関連レポート:DeFi(分散型金融)に内在する10のリスク それぞれのリスク対応の考え方
関連レポート:DeFi(分散型金融)に内在する10のリスク それぞれのリスク対応の考え方
加えてDeFiプロジェクトの様々なハッキング事例や詳細を公開しているレポートも多々あり、タグから閲覧ができます。
高度化されたDeFiユーザーへの攻撃
5月中旬に見られた攻撃の1つは、悪意ある署名が広告に埋め込まれたiFrame経由で起動してユーザーのMetamaskに要求されるというものです。アドネットワーク経由でこのような攻撃は初で、改めて知らない署名にはサインしないということが求められます。
またQuickSwapなどの代表的なDEXではDNSの乗っ取りが発生しました。従来のDNSの置き換えでは、サイトは似せたまま悪意あるスマートコントラクトに置き換えすることがよくある手法でした。このようなDNSの置き換えは従来もある攻撃手段でしたが、今回は複数プロジェクトが対象になって同時多発的でした。これだけでも脅威ですが、今回はさらに高度化しています。
高度化されたDNS乗っ取りでは、正規のコントラクトとメソッドを利用しつつ、swapの送金先アドレスを攻撃者のアドレスにすり替えるものでした。スマートコントラクトを使用する場合、プログラムの何を実行するかのメソッド(関数)と、インプットされる情報(データ)が定義されてそれに対してユーザーは秘密鍵で署名します。今回の攻撃の場合、スマートコントラクトそれ自体およびメソッドも正しいにも関わらず、データが改ざんされてユーザーに署名を要求しています。つまりユーザーがスマートコントラクト自体が正しいものであると、例え検証していても、メソッドだけでなくデータの確認まで必要なものになっていました。
またこのようなDNSのハッキングや、あるいは運営に対するソーシャルアタックなどは、技術力が低い(または管理能力が低い)DeFiプロジェクトほど陥りやすいとも言えます。所謂魔界と呼ばれるようなカテゴリのプロジェクトのほうが相対的にその傾向にあるように思われ、注意が必要かもしれません。
個人が対策として出来ること
このような事例が現れる中で、個人が対策として出来ることは例えば以下のようなものがあります。
DeFiでの運用端末は普段利用と分離
こういった攻撃が突発的に発生するリスクを考えるとDeFiで運用する端末と普段使い端末は完全に分離するべきです。普段から調べ物を使用していると当然広告は表示されやすく、悪意あるソフトウェアも流入可能性が高まります。何かしらのサイトでダウンロードしたものが、Metamaskのシードフレーズを開いたときにスクレイピングできるということもありえかねません。
運用額次第ですが、一般的にはPC代をケチらないほうが無難でしょう。また、その際、ハードウェアウォレットも購入しておいたほうがなお良いです。
スマートコントラクトのリスク確認を行えるウォレットを使う
スマートコントラクトに署名する際のデータを改ざんする事例は、ユーザーから資産を奪おうとする攻撃の中で最も高度化された部類で、かなり対策が困難です。
当社(HashHub)はアセットマネジメントを主要業務の1つにしており、私たちの場合は内部でシステム化してこういった攻撃を対策していますが、個人が取れる対策としては、Rabbyなどを使うことが考えられます。RabbyはMetamaskと異なりDeFiユーザーに特化して機能開発されたウォレットサービスです。
Rabbyはトランザクション実行署名をする前にリスクスキャンする機能が内蔵されています。それが完全に悪意ある署名などを検知できるかは分かりませんし、Rabbyを信用する必要がある行為ですが、Metamaskでコントラクトを確認しないで署名するのと比べてリスクを軽微にできる可能性があります。あくまで執筆時点で個人が取りうる最良の方法として、当社としては他サービスの安全性の保証できるものではないことも免責しておきます。
Approveの定期的な解除
あるトークンを特定のスマートコントラクトにApproveするということは、当該トークンの移動をそのスマートコントラクトに許可しているということです。このApproveはDeFiを使用する過程で不可欠ですが、過去に使用していたが今は使用しておらずApproveしたままの状態であれば、それは無駄にリスクを引き上げている状態と言えます。Approveした先のプロジェクトの管理者がソーシャルハックされたりした場合は資金が収奪される可能性があります。
Approve解除は上記のRabbyかRevokeCashが簡単です。Rabbyではウォレット上でSecurity → Token Approvalを押すと、過去のApproveを一覧できてRevoke(解除)を行えます。
総括
本レポートではDeFiユーザーが資金を失う可能性がある最新の攻撃事例を紹介しました。
攻撃手法はそこに収奪インセンティブがある限り開発され続けるので、今後も高度化していくでしょう。基本的には最善をつくして、かつ常にアンテナを張る必要があります。HashHub Researchでも継続的に情報発信をしていきます。
※免責事項:本レポートは、いかなる種類の法的または財政的な助言とみなされるものではありません。