セキュリティ
タイポスクワッティング
post:
タイポスクワッティング(typosquatting)は、正規のドメイン名を入力するときに起きやすいつづりの誤りを見込んで、誤ったつづりのドメインを先に登録する手法です。 入力ミスでたどり着いた利用者を、広告ページやなりすましサイトなどへ誘導するために使われます。
タイポスクワッティングとは?
名前は、入力ミスを表す「typo」と、他人の土地に居座ることを表す「squatting」を組み合わせたものです。 他人の商標や社名と同じ、または似たドメイン名を先に登録して利益を得ようとする行為をサイバースクワッティングと呼び、タイポスクワッティングはその一種として扱われます。
例えば、正規のmybank.exampleと、aが抜けたmybnk.exampleは、DNSでは別の名前として扱われます。
実際のドメインでも、アドレスバーにURLを入力するときにつづりを間違えると、第三者が管理するサイトに接続される場合があります。
この記事のドメイン名の例は、説明用に予約されている.exampleを使った架空のものです。
よくある似せ方
2006年にMicrosoft Researchの研究者が発表した論文「Strider Typo-Patrol」では、実際に登録されている誤ったつづりのドメインを調べるために、次の5種類の入力ミスを想定しました。
表の例は、正規のドメインをmybank.exampleとした場合です。
| 入力ミスの種類 | 例 | 起きる操作 |
|---|---|---|
| ドットの抜け | wwwmybank.example | www.mybank.exampleのwwwの後のドットを打ち忘れる |
| 文字の抜け | mybnk.example | 1文字を打ち忘れる |
| 文字の入れ替わり | mybnak.example | 隣り合う2文字の順番を逆に打つ |
| 隣のキーとの打ち間違い | mybabk.example | nの代わりに、キーボードで隣にあるbを打つ |
| 文字の挿入 | myybank.example | 同じキーや隣のキーを余分に打つ |
このほかにも、.comを.coや.cmと打つようなトップレベルドメインの誤りや、ハイフンや末尾のsの有無を利用する例もあります。
また、rnとm、数字の0と英字のoのように、入力ミスではなく読み間違いを狙って見た目の似た文字に置き換える例もあります。
誤ったつづりのドメインは、入力ミスで訪れる利用者を待つだけでなく、メールやSNSのリンクに使われることもあります。 正しいつづりと思い込んで読むと、1文字の違いは見落としやすくなります。
何に使われるのか
誤ったつづりのドメインには、主に次のような使われ方があります。
- 広告による収益:ドメインパーキングと呼ばれるサービスで、広告だけを並べたページを表示する。Strider Typo-Patrolの調査でも、見つかったドメインの多くが少数のパーキングサービスで運用されていた
- フィッシング:正規サイトとよく似たログイン画面を用意し、IDやパスワード、カード番号を入力させる
- マルウェアの配布:偽のダウンロードページや、不要なソフトウェアのインストールを促すページへ誘導する
- 別のサイトへの転送:競合するサービスやアフィリエイトのリンクなど、正規の運営者とは別のサイトへ転送する
- メールの受信:ドメインでメールを受け取れるように設定し、宛先を打ち間違えて送られたメールを受け取る
一方で、正規の運営者が、よくある誤ったつづりのドメインを自分で登録しておくこともあります。これを防衛的な登録と呼びます。登録したドメインは、正規サイトへ転送するのが一般的です。 そのため、つづりの似たドメインが存在するだけでは、悪用されているかどうかは判断できません。
似たドメインを使うほかの手口との違い
正規の名前に似せたドメインを使う手口には、どこを似せるかによっていくつかの呼び方があります。
| 手口 | 似せ方 | 例 |
|---|---|---|
| タイポスクワッティング | 入力ミスで生じるつづりの誤り | mybnk.example |
| コンボスクワッティング | 正しいつづりのまま別の単語を付け足す | mybank-login.example |
| IDNホモグラフ攻撃 | ほかの文字体系の見た目が似た文字に置き換える | mybаnk.example(аはキリル文字) |
| ドッペルゲンガードメイン | サブドメインとの間のドットを抜かす | mailmybank.example(正規はmail.mybank.example) |
これらの手口は、はっきりと区別できるわけではありません。 例えば、ドットの抜けを狙うドッペルゲンガードメインは、タイポスクワッティングの一種と見ることもできます。 IDNホモグラフ攻撃は入力ミスではなく見た目の類似を狙うため、例えばメールやメッセージ内のリンクを正規のものと見誤る場面で問題になります。
パッケージ名のタイポスクワッティング
同じ考え方は、ドメイン名以外にも使われます。 代表的なのが、PyPI(Pythonのパッケージを公開するリポジトリ)やnpm(JavaScriptのパッケージのリポジトリ)に、人気のあるパッケージと似た名前で不正なパッケージを公開する手口です。 開発者がインストールのコマンドで名前を打ち間違えると、不正なパッケージがインストールされます。その際に実行されるスクリプトなどで、情報を盗まれるおそれがあります。
2017年には、HTTPライブラリのurllib3に似せたurllibなど、インストール時にユーザー名やホスト名を外部へ送信するパッケージがPyPIで見つかりました。
npmでも同年、cross-envに似せたcrossenvが、インストール時に環境変数を外部へ送信していたことが報告されています。環境変数には、APIキーなどの認証情報が含まれている場合があります。
リポジトリの側でも似た名前への対策が行われていますが、すべてを防げるわけではありません。 インストールするパッケージ名は、公式ドキュメントと照らし合わせて確認しましょう。
法律や紛争処理での扱い
タイポスクワッティングは、商標などの権利と関係するため、法律や紛争処理の対象になる場合があります。
- 日本:不正競争防止法の第2条第1項第19号は、不正の利益を得る目的や他人に損害を加える目的で、他人の商号や商標などと同一または類似のドメイン名を取得・保有・使用する行為を不正競争と定めている
- 米国:1999年に制定されたAnticybersquatting Consumer Protection Act(ACPA)が、商標と同一または紛らわしいほど似たドメイン名を、利益を得る目的で悪意をもって登録・使用する行為を対象にしている。裁判では、意図的に誤ったつづりにしたドメイン名も紛らわしい名前として扱われた例がある
- 紛争処理:
.comなどではICANNのUDRP、.jpではJPNICのJP-DRPという紛争処理方針があり、裁判とは別に、ドメイン名の移転や登録の取り消しを求める手続きを利用できる
どの行為が対象になるかは、目的や使われ方などによって個別に判断されます。
タイポスクワッティングを避けるために
ログインや決済を行うサイトは、アドレスバーにURLを毎回入力するのではなく、一度正しく開いたときに保存したブックマークや公式アプリから開きましょう。 入力するときは、ブラウザが表示する入力候補をそのまま選ばず、ドメイン名全体のつづりを確かめましょう。
パスワードマネージャーは、保存したときのドメインに基づいて自動入力を提案します。いつもの画面で自動入力が出ない場合は、つづりの違うドメインを開いていないか確かめるきっかけになります。 偽のドメインでもTLS証明書は正規の手順で取得できるため、鍵マークやHTTPSの表示だけでは正規のサイトかどうかを判断できません。
ブラウザにも補助的な機能があります。 Microsoft Edgeには、よく知られたサイトの入力ミスと思われるドメインを開いたときに警告する「Web サイト誤入力保護」があります。 Chromeも、よく知られたドメインに似た名前のサイトで警告を表示する場合があります。 ただし、すべての似たドメインが警告の対象になるわけではありません。
ドメインを運営する側では、よくある誤ったつづりのドメインを防衛的に登録する方法があります。
すべての組み合わせを登録するのは現実的ではないため、dnstwistのように誤ったつづりの候補を自動で作り、実際に登録されているかを調べるツールを使って監視する方法もあります。
開発者は、確認した依存関係をロックファイルで固定しておくと、その後も同じ構成を再現しやすくなります。
関連する用語
- IDNホモグラフ攻撃 — 見た目の似たほかの文字体系の文字を使う手口
- URL — ドメイン名がURLのどの部分にあたるか
参考資料
- Yi-Min Wang ほか: Strider Typo-Patrol: Discovery and Analysis of Systematic Typo-Squatting(SRUTI '06) — 5種類の入力ミスのモデルと、ドメインパーキングの調査
- Microsoft Support: What is typosquatting? — 似せ方の例と、Edgeの入力ミス保護
- Cornell Law School: Typosquatting — 米国のACPAでの扱い
- e-Gov法令検索: 不正競争防止法 — 第2条第1項第19号(ドメイン名の不正取得等)
- JPNIC: ドメイン名紛争処理 — JP-DRPの概要
- SK-CSIRT: Security Advisory — PyPI Malicious Code — 2017年のPyPIの事例
- npm Blog: crossenv malware on the npm registry — 2017年のnpmの事例
- npm Docs: Threats and Mitigations — npmのタイポスクワッティング対策
- dnstwist — 誤ったつづりのドメイン候補を作って調べるツール