見出し画像

【完全保存版】Phantomのブロックリストについて

この記事は、2024年5月26日時点での、PhantomのBlocklistレポジトリのReadmeを翻訳したものです。

1 高レベル

0 概要

このリポジトリは、Phantom拡張機能によって悪意のあるものとしてフラグ付けされたURLの唯一の信頼できる情報源です。

ユーザーがこのリポジトリにリストされているURLにアクセスしようとすると、Phantomブロックリストページにリダイレクトされます。

1 Phantomブロックリスト全画面

Phantomブロックリストページは、ユーザーにアクセスしようとしているURLが悪意のあるものとしてフラグ付けされていることを警告します。

そして、このリポジトリへのリンクと、ユーザーがそれでもサイトにアクセスするためにクリックできるリンクを提供します。

ユーザーがアクセスを続行することを選択した場合、そのURLはローカルのユーザーのホワイトリストに追加され、今後そのサイトにアクセスする際に拡張機能がリダイレクトを行わなくなります。

加えて、フラグ付けされたURL上のdAppがユーザーに接続リクエストを送信しようとした場合、ユーザーは接続画面でそのdAppが悪意のあるものとしてフラグ付けされていることを警告されます。

ユーザーはこの警告を無視して接続を続行することを選択できます。

2 仕組みについて

Phantom拡張機能はユーザーの閲覧データを一切収集しません。

ブロックリストは拡張機能内にローカルに保存され、すべてのURLチェックはローカルで行われます。

Phantomは定期的に独自のエンドポイントに接続し、ブロックリストデータの最新バージョンをダウンロードします。

そのため、新しいURLが追加されると、全ユーザーのブラウザで迅速に反映されます。

新しいサイトがblocklist.yamlファイルに追加されると、15分以内にすべてのユーザーのブラウザでブロックされます。

https://github.com/phantom/blocklist/blob/master/blocklist.yaml

2 実装

0 はじめに

このコードの実装は、Metamaskのeth-phishing-detectライブラリからインスピレーションを得ています。

コードベースには、blocklist.yamlfuzzylist.yamlwhitelist.yamlの3つのブロックリストファイルがあります。

1 ブロックリスト

blocklist.yamlは、明確に悪意のあるものとしてフラグ付けされたURLのリストです。

2 ファジーリスト

fuzzylist.yamlファイルは、ある一定のアルファベット的距離内のURLを自動的に悪意のあるものとしてフラグ付けするURLのリストです。

3 ホワイトリスト

whitelist.yamlファイルは、fuzzylistによってフラグ付けされるはずのURLを明示的にホワイトリストに追加して検出されないようにするURLのリストです。

注意

現時点では、fuzzylistやwhitelistファイルは使用していません。

特定のURLのみをブロックし、アルファベット的なファジングは行っていません。

この機能は、フィッシングがより蔓延し、対抗が難しくなった場合に備えて、将来的にオンにするためのものです。

blocklist.yamlファイルは、masterブランチへのコミット/マージ時に自動的にデプロイされ、Phantomの本番バージョンでライブブロックリストの標準的な情報源となります。

3 プロジェクトへの統合について

このリポジトリとそれに付随するNPMパッケージは、クライアントサイドのアプリケーションでの使用を目的としたものではありません。

https://www.npmjs.com/package/@phantom-labs/blocklist

増え続けるサイズのため、ブロックリストをブラウザ向けのバンドルに含めると、パフォーマンスに深刻な影響を与える可能性があります。

このブロックリストをプロジェクトに統合することに興味がある場合は、使用予定のケースを説明するissueをオープンしてください。

4 コントリビューション

Phantomブロックリストに追加するURLを提出したい場合は、リポジトリのmasterブランチにPRをオープンしてください。

PRには、blocklist.yamlファイルの下部に他のエントリと同じ形式でエントリを追加してください。

URLにはhttps://...のようなプロトコル情報を含めないでください。単にURLを追加するだけで十分です。

特に一見してフィッシングサイトだと判断できない場合は、サイトをブロックリストに追加する理由を説明する記述をコミットメッセージまたはPRの説明に含めるのが理想的です。

url: ... エントリに加えて、description: ... のような追加のメタデータや、サイトをブロックリストに追加することを依頼した人物や組織の名前などをブロックリストのエントリに追加できます。

5 サブドメインの追加

サブドメインを追加する場合の手順については、このPRの例を参照してください。

ベースURLが非悪意のあるドメインの場合のサブドメインを追加するには、以下の手順に従ってください。

例えば、github.ioは非悪意のあるドメインですが、malicious.github.ioはフィッシングサイトです。

1 ホワイトリストへの確認

ベースドメインが既にwhitelist.yamlファイルに含まれているか確認します。

含まれていない場合は、非悪意のあるベースドメインをホワイトリストに追加し、ワイルドカード(*)サブドメインを含め、URLを引用符""で囲んで追加します。

例えば、- url: "*.github.io"のように追加します。

これにより、github.ioには非悪意のあるサブドメインが含まれていることをブロックリストに知らせることができますが、悪意のあるサブドメインも含まれている可能性があります。

重要:*サブドメインを含め、URLを引用符""で囲むことを忘れないでください。

そうしないと、ブロックリスト内の悪意のあるサブドメインがブロックリストによって検出されなくなります。

2 ブロックリストへの追加

悪意のあるサブドメインをblocklist.yamlファイルに、完全なサブドメインを含めて追加します。

例えば、malicious.github.ioblocklistファイルに追加します。


サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊