原作者:原作者:余弦
、スローミストテクノロジーの創設者
DNS ハイジャック (ハイジャック) は誰もがよく知っているはずで、歴史上、MyEtherWallet、PancakeSwap、SpiritSwap、KLAYswap、Convex Finance など、そして今日の CurveFinance など、十数もの有名な暗号通貨プロジェクトに遭遇してきました。しかし、多くの人はハイジャックの根本原因を必ずしも知らないかもしれません。そして、より重要なことである (プロジェクト側の観点とユーザーの観点から) 防御する方法について、ここで簡単に共有します。
Domain -> IP_REAL
DNS を使用すると、ターゲット ドメイン名にアクセスするときに、対応する IP を見つけることができます。
Domain ->この指向関係が攻撃者によって置き換えられた場合:
IP_BAD (攻撃者によって制御されている)
その後、攻撃者は、IP_BAD が存在するサーバーからの応答の内容を偽造できます。最終的には、ユーザーにとって、ブラウザ内のターゲット ドメインにあるものはすべて問題となる可能性があります。
DNS ハイジャックは実際にはいくつかの可能性に分けられます。たとえば、一般的なタイプは 2 つあります。
ドメイン名コンソールがハッキングされ、攻撃者は DNS A レコードを任意に変更したり (攻撃者が制御する IP_BAD を IP に指定したり)、ネームサーバーを攻撃者が制御する DNS サーバーに直接変更したりできます。
ネットワーク上で大まかな中間者ハイジャックを実行し、ターゲットのドメイン名が IP_BAD を指すように強制します。
ハイジャックの最初のポイントはサイレントに実行できます。つまり、この時点で攻撃者は別の正規の HTTPS 証明書を発行できるため、ユーザーのブラウザ側にセキュリティ プロンプトは表示されません。
ポイント 2 のハイジャックは、ドメイン名が HTTPS を採用している場合、サイレントにハイジャックすることはできず、HTTPS 証明書エラー プロンプトが表示されますが、ターゲット ドメイン名が HSTS セキュリティ メカニズムで構成されていない限り、ユーザーは強制的にアクセスを継続することができます。
強調: Crypto/Web3 プロジェクトのドメイン名が HTTPS を強制せず (HTTP には引き続きアクセスできることを意味します)、HTTPS によって HSTS (HTTP Strict Transport Security) が強制的に有効にされない場合は、ポイント 2 のハイジャック シナリオが適用されます。それは非常に危険です。皆さん、目をしっかりと開けて、警戒してください。
プロジェクト側では、ドメイン名の HTTPS + HSTS の完全な構成に加えて、次のセキュリティ チェックを定期的に実行できます。
ドメイン名に関連する DNS レコード (A および NS) が正常かどうかを確認します。
ブラウザでのドメイン名の証明書表示が自分で設定されているかどうかを確認します。
ドメイン名管理の関連プラットフォームで 2 要素認証が有効になっているかどうかを確認します。
Webサービスリクエストログおよび関連ログが正常か確認してください。
ユーザーにとっての防御ポイントはいくつかありますので、一つずつ説明していきます。
http://example[.]com
主要なドメイン名については、次のような HTTP 形式でアクセスしないでください。
https://example[.]com
代わりに、常に HTTPS 形式にする必要があります。
HTTPS 形式の場合、ブラウザに HTTPS 証明書エラーがある場合は、断固として続行しないでください。これにより、サイレント以外の DNS ハイジャック攻撃が防止されます。
サイレント ハイジャックの状況に関しては、DNS ハイジャック、プロジェクト サーバーのハッキング、内部悪、サプライ チェーン攻撃によるプロジェクト フロントエンド コードの汚染など、実際、ユーザーの観点から見ると、最終的には次のようになります。同じ。ユーザーの資産が盗まれるまではブラウザ側に異常はありません。
では、この場合、ユーザーはどのように防御できるのでしょうか?
ユーザーは、操作のあらゆる段階 (特にウォレットの署名と確認が必要な瞬間) で警戒を続けることに加えて、警戒する必要があります。
Web2 時代の非常に有名なブラウザ セキュリティ拡張機能をお勧めします: @noscript (Twitter は長い間更新されていませんでしたが、公式 Web サイトが更新され、拡張機能も更新されたことを知って嬉しい驚きを感じました)更新しました)、@ma1 の作品です。
NoScript はデフォルトで埋め込まれた JavaScript ファイルをブロックします。
ただし、NoScript はしきい値に少し慣れる必要があり、場合によっては煩わしい場合があるため、重要なドメイン名へのアクセスは、NoScript がインストールされているブラウザ (Firefox など) と他のブラウザ (Chrome など) で実行できることをお勧めします。
分離して運用することは、セキュリティ上の優れた慣行です。多くのことは面倒に感じるかもしれませんが、運転して慣れてしまえば、すべてうまくいきます。
https://curve[.]fi/js/app.ca2e5d81.js
しかし、これは完璧な防御ではありません (完璧な防御はこれまで存在しませんでした)。たとえば、この @CurveFinance 攻撃では、攻撃者は IP_BAD を指すように DNS A レコードを変更し、フロントエンド ページを汚染しました。
コイン盗難に関連した悪意のあるコードが埋め込まれていました。
以前に NoScript を使用して Curve を信頼した場合、今回も騙される可能性があります。
元のリンク