そのMFA、中継されて終わりです ─ フィッシング耐性とは何か

MFAには種類がある。ゲストも含めて。コードを読んで入力する方式は、中間者攻撃で利用者に代行させられて突破される。番号一致も中継される。なぜFIDO2やWindows Helloだけが耐えるのか、その仕組みと、公式の認証強度3段階を整理する。

動画で見る

そのMFA、中継されて終わりです

多要素認証を入れました、で安心している組織は多いと思います。でも実際には、いま主流の攻撃はMFAを破っていません。利用者に代行させて、そのまま通り抜けています。今日はその仕組みと、なぜ一部の方式だけが耐えられるのかを説明します。

解説する人:胡田 昌彦

解説する胡田昌彦です。Microsoft MVPを14年連続で受賞し、Windows、Azure、Microsoft 365を実機で検証してきました。今日は認証方式の「強さの差」だけに絞って話します。

SECTION 1 ─ MFAには種類がある

最初のセクションです。多要素認証を一つのものとして扱うのをやめるところから始めます。

「MFAを入れた」の中身は、同じではない

多要素認証を入れた、という言葉は、実際には全く強さの違うものを指しています。SMSで6桁を受け取るのも、パスキーで指紋を使うのも、どちらも多要素認証です。でも攻撃に対する強さは同じではありません。ここを一緒くたにしていると、対策したつもりで穴が残ります。

Entra IDが対応する認証方式

まずMicrosoft Entra IDが対応している方式を並べます。単独で使えるもの、2要素目としてしか使えないもの、その区別があります。パスキー、Windows Hello、証明書は単独でも使えます。SMSや音声、OATHトークンは基本的に2要素目です。この一覧を見ると、選択肢がスマートフォンのアプリだけではないことが分かります。

公式には、強さが3段階ある

ここが今日の土台です。Microsoftは条件付きアクセスの認証強度として、組み込みの3段階を用意しています。単なる多要素認証、パスワードレスの多要素認証、そしてフィッシング耐性のある多要素認証。フィッシング耐性に入るのは3つだけです。FIDO2セキュリティキー、Windows Helloまたはプラットフォーム資格情報、そして多要素の証明書ベース認証。ここで大事なのは、証明書ベース認証が多要素かどうかは、証明書だから自動的に決まるのではなく、管理者が認証バインドポリシーで宣言するという点です。既定は単一要素で、発行者やポリシーOIDを指定して多要素へ引き上げます。パスワードと所持要素の組み合わせは、いちばん左の段にしか入りません。

ゲストは「相手のMFA展開」と無関係

種類の話でよく詰まるのがゲストです。ゲストに多要素を必須にしようとして、相手から「うちはMFAを展開していないので対応できない」と言われることがあります。これは誤解です。B2Bコラボレーションのゲストは、既定では招待した側、つまりリソーステナントで多要素を登録して満たします。相手の組織の展開状況は関係ありません。必要なライセンスもリソーステナント側が用意し、ゲストがそれを消費すると公式に書かれています。相手テナントの多要素を信頼したい場合だけ、テナント間アクセス設定で明示的に信頼を入れます。

どちらで満たすかで、方式が変わる

ただし注意があります。ゲストがどちらのテナントで多要素を満たすかによって、受け付けられる方式が変わります。リソーステナント側で満たせるのは、SMS、音声通話、Authenticatorのプッシュ通知、ソフトウェアOATHトークンの4つ。FIDO2セキュリティキー、Windows Hello、証明書、ハードウェアOATHトークンは、ホームテナント側で満たした場合しか受け付けられません。つまり、ここまで見てきたフィッシング耐性のある方式は、すべてホームテナント側にしかありません。ゲストにフィッシング耐性を求めるなら、自社の条件付きアクセスで認証強度を要求し、かつ相手テナントの多要素を信頼する。この2点セットが必要です。

SECTION 2 ─ フィッシング耐性とは何か

二つ目のセクションです。よく聞く言葉ですが、定義を押さえると理解が一気に進みます。

定義は、たった一行

Microsoftの定義はこうです。フィッシング耐性のある強度には、認証方式とサインイン画面そのものが直接やりとりする方式が含まれる。これだけです。人が画面を見て、コードを読んで、別のところへ入力する。この人間を経由する部分が無い、という意味です。

「手で渡せる秘密」があるか、ないか

言い換えると、こう分けられます。利用者が手で渡せる秘密が存在する方式と、存在しない方式です。6桁のコード、承認のタップ、SMSの数字。これらは全部、利用者が誰かに渡せてしまいます。一方でパスキーの秘密鍵は、認証器から出てきません。利用者が渡そうと思っても渡せない。この差が、そのまま攻撃への強さの差になります。

SECTION 3 ─ なぜ突破できるのか

三つ目のセクションです。実際の攻撃がどう動くのかを見ます。ここが今日の中心です。

MFAを破っているのではない

最初に前提を一つ。いま主流の攻撃は、多要素認証を数学的に破ってはいません。暗号を解いてもいないし、総当たりもしていません。やっているのは、利用者本人に多要素認証を代行させることです。だから利用者が正しく操作すればするほど、攻撃が成立します。

偽サイトの正体は「中継プロキシ」

昔のフィッシングサイトは、入力されたIDとパスワードを溜めるだけの箱でした。今は違います。利用者からの入力をその場で本物のサイトへ中継し、本物からの応答をそのまま利用者へ返す、リアルタイムのプロキシです。だから画面は本物と完全に同じものが出ます。見た目で見破るのはほぼ不可能です。

中間者攻撃の5ステップ

順番に見ます。1、利用者が偽サイトでパスワードを入力する。2、攻撃者はそれを即座に本物へ中継する。3、本物が多要素認証を要求する。4、偽サイトが本物と同じ多要素の画面を表示し、利用者がコードを入力するか承認する。5、認証が成立し、攻撃者は発行されたセッションのクッキーを手に入れる。以後、攻撃者は再認証すら必要ありません。

番号一致も、そのまま中継される

よく聞かれるのが、番号一致にすれば防げるのでは、という質問です。防げません。Microsoftの脅威インテリジェンスがTycoon2FAというフィッシングキットを分析した記事に、はっきり書かれています。利用者が資格情報を送信すると、キットは即座に本物へ中継して本物の多要素チャレンジを発生させ、フィッシングページが同じ多要素の画面、たとえば番号一致やコード入力を表示する、と。番号一致が防ぐのは、身に覚えのない通知をうっかり承認してしまう、いわゆるMFA疲労攻撃です。中間者攻撃には効きません。

盗まれるのはパスワードではない

ここも誤解が多い点です。攻撃者の狙いはパスワードではありません。認証が完了した後に発行される、セッションのクッキーやトークンです。同じ記事に、利用者が多要素認証を完了すると攻撃者はセッションクッキーを取得し、それ以上の認証なしにリアルタイムでアクセスできた、と書かれています。つまりパスワードを変えても、そのセッションは生きたままです。

だから、この方式は全部負ける

中継できるものは全部負けます。SMS、音声通話、プッシュ通知の承認、ソフトウェアOATHトークン、そしてハードウェアOATHトークン。公式の認証強度の表では、これらはまとめて「パスワードと、利用者が持っている何か」という一つの枠に入っていて、フィッシング耐性の列には入りません。Tycoon2FAの記事も、SMSコード、ワンタイムパスコード、プッシュ通知を含む、一般に展開されているほぼすべての多要素認証方式を回避できた、と書いています。

SECTION 4 ─ なぜFIDO2は負けないのか

最後のセクションです。では、耐えられる方式は何が違うのか。

2つの性質で成立している

理由は二つあります。一つ目、秘密鍵が認証器から出ません。だから利用者が渡そうと思っても渡せない。手で渡せる秘密が存在しないので、代行させることができません。二つ目、鍵が登録したドメインに束縛されています。本物のドメイン用に作られた鍵は、偽サイトのドメインからの要求にはそもそも応答しません。利用者が完全にだまされていても、鍵の側が反応しない。これが「認証方式とサインイン画面が直接やりとりする」の中身です。

公式のフィッシング耐性MFAは、この3つ

条件付きアクセスの組み込み認証強度で、フィッシング耐性に入るのは3つです。FIDO2セキュリティキー、これにはパスキーやAuthenticatorのパスキーも含まれます。Windows Hello for Businessまたはプラットフォーム資格情報。そして多要素の証明書ベース認証です。Authenticatorの電話サインインはパスワードレスですが、フィッシング耐性には入りません。

3つの落とし穴

実装するときの注意を三つ。一つ目、単一要素の証明書ベース認証は、どの強度にも入りません。多要素として構成する必要があります。二つ目、認証強度は最初の認証を制限しません。条件付きアクセスは初回認証の後に評価されるので、利用者はパスワードを入力できてしまい、そのあとで強い方式を求められます。三つ目、Windows Helloで最初にサインインしていない場合、強度を満たすために自動でWindows Helloを求められるとは限りません。サインインオプションから選び直す必要があります。

フィッシング耐性でも、止まらないもの

万能ではありません。公式にはっきり書かれています。利用者の資格情報が簡単にフィッシングできなくなると、攻撃者は端末からトークンを盗み出す方向へ移ることがある、と。だから次の一手として、トークンを発行先の端末のハードウェアに結び付けるトークン保護が案内されています。認証を強くしたら、次はトークンの持ち出しを見る、という順番です。

共有端末は、ここに注意

現場でよく詰まるところなので触れておきます。Windows Hello for Businessは、そのPCに各自が自分としてサインインする場合にだけ使うべきで、共有アカウントを使うキオスク端末に使ってはいけない、と公式に書かれています。また1台あたり10ユーザーまでという上限があり、それを超える共有端末ではセキュリティキーのようなポータブルな資格情報を使う、とされています。端末を共有する利用者は、Windows上のMicrosoft Entraパスキーかポータブルな資格情報だけを使うべき、とも書かれています。

どこから始めるか

進め方は公式のガイドが具体的です。まず条件付きアクセスで、フィッシング耐性MFAの認証強度を要求するポリシーをレポート専用モードで作ります。これは登録キャンペーンを始める前に作れ、と書かれています。強制したら誰が止まるかの履歴を先に貯めるためです。次に利用者を管理者と高規制ユーザー、それ以外に分け、まず持ち運べる資格情報を1つ登録させ、その後に端末ごとのローカル資格情報を用意します。最後に、利用者と端末の組み合わせで準備ができたところから順に強制していきます。

覚えるのは、この3つ

まとめます。一つ目、MFAには強さの段階があり、公式には3段階に分かれています。二つ目、コードや承認を人が中継する方式は、中間者攻撃で代行させられて突破されます。番号一致も中継されます。三つ目、耐えられるのは、秘密鍵が外に出ずドメインに束縛された方式だけです。ここで本編はおしまいです。

関連する解説動画

今日の話に関連する動画です。認証パターンの全体像、条件付きアクセスの除外の挙動、アプリ登録の基礎。もっと基礎から知りたい方はこちらをどうぞ。

体系的に、順番に学びたい方へ

続けて体系的に学びたい方向けに、Ebi StudyでMicrosoft資格、Windows Server、Azure、Claude Codeの動画講座を提供しています。ID関連は、アカウントとテナントの基礎、Entra ID認証と自動化、証明書の3コースが揃っています。月額990円です。

出典

今日の内容の一次資料です。認証強度の概要、認証方式の一覧、フィッシング耐性パスワードレスの展開ガイド、そしてMicrosoftのセキュリティブログによるTycoon2FAの分析です。

ご視聴ありがとうございました!

最後までご視聴いただき、ありがとうございました。役に立ったら高評価とチャンネル登録をお願いします。これからもWindows、Azure、Microsoft 365、生成AIの難しいテーマを分かりやすく解説していきます。

Ebisuda Presentations のトップへ