デジタル詐欺対策ハンドブック

パスキー/FIDO認証を狙う巧妙なフィッシング:その技術的仕組みと防御策

Tags: パスキー, FIDO認証, フィッシング, サイバー攻撃, 認証技術

はじめに:パスキー/FIDO認証の普及と新たな脅威

近年、パスワードに代わるより安全で便利な認証技術として、パスキー(Passkey)およびその基盤となるFIDO認証が注目を集め、多くのオンラインサービスで導入が進んでいます。公開鍵暗号に基づき、パスワードの使い回しやサーバーからの漏洩といったリスクを低減するパスキーは、フィッシング攻撃に対しても強い耐性を持つと期待されています。

しかしながら、サイバー攻撃の手法は常に進化しており、パスキー/FIDO認証も例外ではありません。その仕組みの複雑さや、ユーザーの理解不足、実装上の隙間などを突く新たなフィッシング手口が登場しています。

本記事では、パスキー/FIDO認証がなぜ従来のパスワード認証よりもフィッシングに強いのかを技術的な観点から解説するとともに、それでもなお発生しうる、パスキー/FIDO認証を狙った巧妙なフィッシング手口とその技術的背景、そして個人およびサービス提供者が講じるべき具体的な防御策について詳しく掘り下げていきます。

パスキー/FIDO認証がフィッシングに強い理由(技術的背景)

パスキー/FIDO認証は、主に公開鍵暗号とOriginバインディングによってフィッシング耐性を実現しています。

  1. 公開鍵暗号の利用: ユーザーのデバイス(スマートフォン、PCなど)で秘密鍵と公開鍵のペアを生成します。公開鍵はサービス提供者(認証連携要素、RP: Relying Partyと呼びます)のサーバーに登録されます。ログイン時、サービス提供者からのチャレンジ(ランダムなデータ)に対し、ユーザーのデバイスは秘密鍵で署名し、その署名と公開鍵をサービス提供者に送信します。サービス提供者は受け取った公開鍵で署名を検証することで、正当なユーザーからの認証であることを確認します。パスワードのように秘密情報がネットワーク上を流れることはなく、仮に公開鍵が漏洩しても、秘密鍵がなければ認証は突破できません。
  2. Originバインディング: パスキーによる認証情報は、特定のWebサイトのOrigin(スキーム、ホスト名、ポート番号の組み合わせ)と厳密に紐付けられています。これは、認証を行う際に、ブラウザなどのユーザーエージェントが、認証要求の発信元Originと、パスキーの登録時に紐付けられたOrigin(RP ID)が一致していることを検証する仕組みです。これにより、フィッシングサイトのように正規サイトとは異なるOriginを持つサイトでは、たとえユーザーが誤ってパスキー認証を試みても、認証処理が正常に行われないようになっています。

これらの技術により、従来の「偽サイトにパスワードを入力させる」という古典的なフィッシング手口は、パスキー/FIDO認証では効果がなくなります。

パスキー/FIDO認証を狙う新たなフィッシング手口

パスキー/FIDO認証が本来持つフィッシング耐性を回避するために、攻撃者はより高度な手口を開発しています。主な手法を技術的な側面から解説します。

  1. 中間者攻撃 (Man-in-the-Middle: MITM) を用いたリアルタイム認証情報窃取:

    • 手口: 攻撃者は正規サイトに酷似した偽サイトを作成し、ユーザーを誘導します。ユーザーが偽サイト上でパスキー認証を開始しようとすると、攻撃者のサーバーがリアルタイムで正規サイトにアクセスし、正規の認証フローを開始します。そして、正規サイトから送られてくるチャレンジデータなどをユーザーのブラウザに渡し、ユーザーがデバイス上でパスキー認証(署名生成)を完了するのを待ちます。ユーザーのデバイスで生成された署名を含む認証応答は、偽サイト(攻撃者サーバー)を経由して正規サイトに転送され、正規サイトはこれを有効な認証応答として扱います。
    • 技術的背景: この攻撃は、パスキー認証のOriginバインディングによる防御機構を迂回します。攻撃者サーバーが正規サイトとユーザーのブラウザの間でプロキシのように振る舞うことで、ユーザーのブラウザは常に正規サイトのOriginと通信しているかのように認識します(または、攻撃者がブラウザの表示を操作)。ユーザーはデバイス上でパスキー認証器(Authenticatior)からのプロンプトに従いますが、その認証セッションが正規サイトのものであると誤認してしまいます。攻撃者は秘密鍵そのものを盗むわけではなく、特定の認証セッションにのみ有効な署名済みの認証応答をリアルタイムで正規サイトに中継することで、ユーザーになりすましてログインを試みます。
    • なぜ有効になりうるか: ユーザーがアクセスしているサイトのOriginを厳密に確認しない、あるいはブラウザの表示が攻撃によって操作される場合。また、ユーザーがパスキー認証のプロンプトをよく確認せず、反射的に許可してしまう場合。ブラウザの認証器連携API(WebAuthn API)とのやり取りを攻撃者が模倣することで、ユーザー体験上は正規のフローと見分けがつきにくくなる可能性があります。
  2. ブラウザやOSの脆弱性、あるいは仕様の悪用:

    • 手口: パスキーの管理や認証プロセスを担うブラウザやOS、または関連するパスキーマネージャーソフトウェアに存在する未知の脆弱性(ゼロデイ脆弱性)を悪用し、パスキーの秘密鍵自体を窃取したり、不正な認証を強制したりします。
    • 技術的背景: これは特定のソフトウェア実装の欠陥を直接的に狙う攻撃です。例えば、パスキーの秘密鍵が保存されているセキュアな領域(Trusted Execution EnvironmentやSecurity Keyなど)からの不正な引き出しを試みたり、WebAuthn APIの特定の呼び出し方を悪用して、ユーザーの意図しないOriginに対する認証を完了させたりする可能性があります。
    • なぜ有効になりうるか: ソフトウェアの脆弱性は予期せぬ形で存在し、ユーザーやサービス提供者が対策を講じる前に攻撃に悪用されるリスクがあります。特に、新しい技術であるパスキー周りの実装は、まだ成熟度が低い可能性があります。
  3. ソーシャルエンジニアリングと組み合わせた巧妙な誘導:

    • 手口: パスキー認証はデバイス上で行われるため、ユーザーはデバイスの画面に表示されるプロンプトを見て操作することが多いです。攻撃者は、このプロンプトを悪用したり、ユーザーに誤った情報を信じ込ませたりするソーシャルエンジニアリングと組み合わせます。「セキュリティ強化のためにこのボタンを押してください」「新しいデバイスでログインするには認証が必要です」といった偽のメッセージを表示し、ユーザーに正規サイト上ではない場所で、あるいは偽のコンテキストでパスキー認証を促します。
    • 技術的背景: これは技術的な脆弱性を直接突くというよりは、ユーザーの認知や判断のプロセスを狙う攻撃です。例えば、偽サイト上で正規サイトのログインページをiframeなどで埋め込み、その中でパスキー認証フローを開始させることで、ユーザーに正規サイトでの認証であると誤認させようとします。
    • なぜ有効になりうるか: ユーザーが認証プロンプトに表示されるOriginや詳細情報を確認しない、あるいは確認方法を知らない場合に効果的です。特に、デバイスの画面サイズが小さい場合や、急かされている状況では、詳細な確認がおろそかになりがちです。

具体的な解決策・予防策

パスキー/FIDO認証を狙ったフィッシング攻撃から身を守るためには、個人ユーザーとサービス提供者の双方が対策を講じる必要があります。

ユーザー側の対策

  1. アクセスしているWebサイトのOriginを厳密に確認する:
    • 最も基本的な対策ですが、最も重要です。ブラウザのアドレスバーを確認し、アクセスしているサイトのURLが正規のものであるかを常に確認してください。パスキー認証プロンプトが表示された際にも、プロンプト内に表示されるOrigin(RP ID)が正規のサービスのものであることを確認する習慣をつけましょう。不審なドメイン名やタイポが含まれていないかを注意深く見てください。
  2. 不審なリンクや添付ファイルを安易にクリックしない:
    • フィッシング攻撃の多くは、メールやSMS、SNSなどを通じた不審なリンクからの誘導が起点となります。信頼できない送信元からのメッセージに含まれるリンクは絶対にクリックしないでください。
  3. パスキー認証のプロンプト内容を必ず確認する:
    • デバイスに表示されるパスキー認証の確認プロンプトには、通常、どのサービス(Origin/RP ID)に対する認証であるかが表示されます。この情報が、自身が操作しようとしているサービスと一致しているかを指差し確認する意識を持ちましょう。意図しないタイミングやサービス名でのプロンプトは、不正な試みの可能性が高いです。
  4. OSやブラウザ、パスキーマネージャーを常に最新の状態に保つ:
    • ソフトウェアの脆弱性を悪用する攻撃に備えるため、使用しているデバイスのOS、ブラウザ、パスキーを管理するアプリケーションなどを常に最新バージョンにアップデートしてください。
  5. 可能であれば、追加の認証要素やセキュリティ対策を併用する:
    • パスキー認証は強力ですが、単一の認証要素に頼るのではなく、サービス側が提供していれば、別のデバイスでの承認や、位置情報に基づいた認証など、追加のセキュリティレイヤーを有効にすることも検討しましょう。

サービス提供者側の対策

  1. FIDO標準仕様および最新の推奨事項を遵守する:
    • FIDOアライアンスが定める仕様や、セキュリティに関する最新の推奨事項を厳格に遵守して実装することが最も重要です。特に、Attestation(パスキーの正当性を検証する仕組み)やAssertion(認証応答)の検証プロセスにおいて、OriginやRP IDの確認、チャレンジデータの検証などを徹底する必要があります。
  2. Origin/RP IDの検証を厳格に行う:
    • WebAuthnの認証プロセスにおいて、ユーザーエージェント(ブラウザなど)から送られてくるAssertionに含まれるOrigin/RP IDが、期待される正規のOriginと一致するかをサーバー側で厳格に検証する必要があります。これにより、中間者攻撃などによる偽サイトからの認証試みを検出・拒否できます。
  3. チャレンジデータの使い回しを厳格に防ぐ:
    • 認証要求ごとに一意のチャレンジデータを発行し、一度使用したチャレンジは無効化するなどの対策を徹底することで、認証応答の再生攻撃(Replay Attack)を防ぐことができます。
  4. フィッシングサイトの検出とテイクダウン(閉鎖):
    • サービス名を騙るフィッシングサイトを早期に発見し、ホスティングプロバイダーやドメイン登録機関と連携して閉鎖に追い込む体制を構築します。これにより、そもそもユーザーが偽サイトに誘導されるリスクを低減できます。
  5. 異常検知システムの強化:
    • パスキー認証が行われた際に、通常とは異なる時間帯、地理的な場所、デバイスからのアクセスであるなど、不審な兆候がないかを監視し、異常を検知した場合はユーザーに警告するなどの対応を検討します。
  6. ユーザーへの啓発と教育:
    • ユーザーがパスキー認証の仕組み、特にOrigin確認の重要性を理解できるよう、分かりやすい説明を提供することが重要です。認証時のプロンプト表示における注意点なども具体的に伝える必要があります。

最新情報の入手と継続的な対策の重要性

サイバー攻撃の手法は絶えず変化しています。パスキー/FIDO認証に関する新たな攻撃手法や、それに対する防御策についても、FIDOアライアンスや主要なセキュリティ機関、ベンダーなどから常に最新情報が入手されます。これらの情報を定期的にチェックし、自身の対策やサービスのセキュリティ実装を継続的に見直していくことが、安全を維持するためには不可欠です。

まとめ

パスキー/FIDO認証は、従来のパスワード認証に比べてフィッシング耐性が高く、セキュリティと利便性を両立する強力な認証技術です。しかし、その普及に伴い、技術的な仕組みや実装上の隙間を突く新たなフィッシング手口も出現しています。

これらの脅威に対抗するためには、パスキーの技術的背景を理解し、ユーザーはアクセスしているサイトのOrigin確認や認証プロンプト内容の確認を徹底すること、サービス提供者はFIDO標準への厳格な準拠、Origin/RP IDの検証、異常検知システムの強化、そしてユーザーへの啓発活動を行うことが重要です。

常に最新のセキュリティ情報を入手し、継続的な対策を講じることで、パスキー/FIDO認証のメリットを最大限に享受しつつ、デジタル詐欺の被害を防ぐことができます。