デバイスコードフィッシングとは?手口・見分け方と対策を図解
「このコードを入力してサインインしてください」という連絡が届き、本物のMicrosoftのページなら大丈夫だろうかと迷っていませんか。
デバイスコードフィッシングは、正規のサインイン画面を使って、アカウントの通行証を攻撃者の機器へ渡させる手口です。
仕組みと見分け方、入力してしまったときの対処、管理者の対策までを図で解説します。
この記事は以下のような人におすすめ!
- コードの入力を求める連絡が届いて迷っている人
- コードを入れてしまい、何をすべきか知りたい人
- 社内の防ぎ方を考える管理者
本記事はプロモーション(アフィリエイト広告)を含みます。
デバイスコードフィッシングとは
1-1. デバイスコードは「別の端末でサインインする」ための仕組み
デバイスコードとは、文字を入力しにくい機器でサインインするために、正規の仕組みで使われる短いコードです。
たとえば、スマートテレビやプリンターで、リモコンを使って長いパスワードを入れるのは大変ですよね。
テレビの動画配信サービスなどで、画面に出たコードをスマートフォンで入力する、同じような手順を使ったことがある人もいるかもしれません。
Microsoftの説明では、こうした機器は利用者にコードを表示し、スマートフォンやパソコンなど別の端末のブラウザでWebページを開いてサインインしてもらいます。
利用者がサインインを終えると、最初の機器はアクセストークンと更新トークンを受け取り、許可された範囲でアカウントを使えるようになります。
会議室に置かれた共有の端末や、お店のデジタルサイネージのように、キーボードを使わない機器でも同じ考え方が使われます(参考2)。

図の1から3のように、本人がスマートフォンでコードを入れてサインインすると、通行証はテレビなどの機器のほうに届きます。
ここでいうトークンとは、サインインがすんだことを示す「通行証」のようなデータです。
機器はこの通行証を見せることで、パスワードを入れ直さなくても、メールやファイルなど許可された機能を使えます。
大事なのは、コードを入れてサインインした人と、通行証を受け取る機器が別々だという点です。
ふだんは自分の手元にあるテレビや会議室の機器なので、この仕組みが問題になることはありません。
なお、コードには有効期限があり、Microsoftの説明では既定で15分です(参考1)。
1-2. デバイスコードフィッシングは「他人のコード」を入力させる攻撃
デバイスコードフィッシングは、この仕組みを悪用して、攻撃者の機器のために発行されたコードを、あなたに入力させる攻撃です。
攻撃者は、自分の側で正規の手順どおりにコードを発行し、メールやチャットで「このコードを入力してください」と送ってきます。
あなたがそのコードを入れてサインインすると、通行証はあなたの手元ではなく、攻撃者の機器に届いてしまいます。
攻撃者は、あなたのパスワードを知る必要すらありません。
攻撃の手口を整理したMITRE ATT&CKも、デバイスコードフィッシングを、リンクで誘導した先でコードなどを入力させ、機器用のトークンを作らせる手口として説明しています(参考5)。
Microsoftも、デバイスコードによるサインインは、フィッシング攻撃の一部になりうるリスクの高い方法だと位置づけています(参考2)。
つまり、画面が本物かどうかだけでは、この攻撃は見抜けません。
見るべきなのは、「そのコードは、自分が手元の機器で表示させたものか」という一点です。
1-3. 普通のフィッシングとの違い
よく知られたフィッシングでは、本物そっくりの偽サイトにパスワードを入力させて盗みます。
一方、デバイスコードフィッシングでは、偽サイトも、パスワードの盗み出しも、必ずしも必要ありません。

図の上の段では、利用者は偽サイトに入力し、攻撃者はパスワードを手に入れます。
下の段では、利用者は本物のページでサインインし、攻撃者はパスワードではなく通行証を受け取ります。
この違いが大きく効いてくるのが、多要素認証を使っている場合です。
多要素認証は、パスワードに加えてスマートフォンでの承認などを求める仕組みで、パスワードだけを盗まれた場合の被害を防ぎやすくします。
しかしデバイスコードフィッシングでは、本人が自分で多要素認証まで済ませてしまうため、その確認が攻撃を止める役目を果たしません。
また、偽サイトを使わないので、怪しいサイトへのアクセスを止める仕組みにも引っかかりにくいと考えられます。
| 比べる点 | 普通のフィッシング | デバイスコードフィッシング |
|---|---|---|
| 入力する画面 | 偽サイト | 本物のサインインページ |
| 攻撃者が得るもの | パスワードなど | 機器用の通行証(トークン) |
| 多要素認証 | 止めやすい | 本人が済ませてしまう |
| アドレスの確認 | 見分ける手がかりになる | 手がかりになりにくい |
「アドレスを確かめれば大丈夫」「多要素認証があるから安心」という、これまでの見分け方が通じにくい点が、この手口のやっかいなところです。
ただし裏を返せば、自分で始めていないサインインのコードを入れないだけで、被害を大きく減らせるということでもあります。
多要素認証そのものの仕組みは、記事の最後で紹介する多要素認証の記事でくわしく解説しています。
- デバイスコードは、別の機器へのサインインを許可する合図
- 本物の画面でも、他人のコードを入れると攻撃者の機器が通行証を受け取る
- 自分で始めていないサインインのコードは入力しない
デバイスコードフィッシングの手口
ここからは、攻撃がどのように進むのかを、順番に見ていきます。
2-1. 攻撃の流れは4つの段階
攻撃者はまず、自分のパソコンなどから、Microsoftのサインインの仕組みに「機器のサインインを始めたい」と申し込みます。
すると、利用者に入力してもらうための短いコードと、サインインに使うページのアドレスが返ってきます。

図の2で、攻撃者はこのコードを、会議の招待や共有ファイルの案内のような文面に添えて送ります。
利用者が3で本物のページを開き、コードを入れてサインインすると、その許可は、コードを発行した攻撃者の機器への許可として扱われます。
その間、攻撃者の機器は、サインインが終わったかどうかを、決まった間隔で問い合わせ続けています。
利用者のサインインが終わった時点で、4のように攻撃者の機器へ通行証が渡ります。
コードの有効期限は既定で15分なので、攻撃者は、コードを発行してから短い時間のうちに相手に入力させる必要があります(参考1)。
そのため、「今すぐ」「会議が始まります」のように急がせる文面には、特に注意しましょう。
2-2. 誘い文句の例と、気づくための手がかり
メッセージの文面は、受け取った人が「コードを入れるのは自然だ」と感じるように作られます。
次の表は、考えられる誘い文句の例と、怪しいと気づくための手がかりをまとめたものです。
| 誘い文句の例 | 気づくための手がかり |
|---|---|
| 会議に参加するには、このコードを入力してください | 自分の機器にはコードが表示されていない |
| 共有された文書を開くには、認証コードが必要です | コードを送ってきたのが相手の側である |
| セキュリティ更新のため、15分以内に入力してください | 期限を区切って急がせている |
| IT部門です、端末の登録のためにコードを入れてください | 社内の窓口を名乗っていても、コードをメッセージで送ってきている |
どの例にも共通するのは、コードが「あなたの手元の画面」ではなく、「相手からのメッセージ」に書かれていることです。
正規のデバイスコードは、サインインしたい機器の画面に表示されるものです。
送り主が誰であっても、メールやチャットで届いたコードは入力しないのが基本です。
電話で話しながら、その場でコードを入力させようとする手口も考えられます。
社外の人とのやり取りが多い部署では、取引先を名乗る文面で届くことも考えておきましょう。
文面が知り合いや取引先の名前で届くこともあるので、送り主の名前だけで判断しないことも大切です。
何度かやり取りを重ねて信用させてから送ってくる場合もあり、特定の相手を狙うスピアフィッシングの考え方とも重なります。
スピアフィッシングの手口は、記事の最後で紹介する記事にまとめています。
2-3. 攻撃者が手に入れる「通行証」
攻撃が成功すると、攻撃者の機器にはアクセストークンと更新トークンが届きます。
アクセストークンは、メールやファイルなどのサービスを使うための、短い期間だけ有効な通行証です。
Microsoftの説明では、アクセストークンの有効期間は既定で1時間です(参考4)。

図のように、更新トークンがあれば、アクセストークンの期限が切れても、新しいアクセストークンを受け取り直せます。
Microsoftも、更新トークンを使うと、新しいアクセストークンと更新トークンを取得できると説明しています(参考1)。
攻撃者は、コードを申し込むときに、使いたい権限もあわせて求めます。
実際に使える範囲は、求めた権限のうち認められたものに限られ、利用者自身が持つ権限や組織の設定によっても変わると考えられます。
メールの読み取りやファイルの閲覧など、求められた権限が広いほど、渡してしまったときの影響も大きくなります。
つまり、一度通行証を渡してしまうと、取り消されるまで、攻撃者が利用者として使い続けられるおそれがあります。
MITRE ATT&CKも、OAuthのトークンを盗む手口について、盗まれたトークンを使えば、攻撃者が利用者に代わってさまざまな操作をできると指摘しています(参考5)。
会社のアカウントなら、メールの盗み見や、本人になりすました社内への送信、ファイルの持ち出しにつながるおそれがあります。
パスワードは盗まれていないので、本人が気づきにくい点にも注意が必要です。
また、通行証は攻撃者の機器にあるので、本人が自分のパソコンやスマートフォンの電源を切っても、攻撃者の利用は止まりません。
OAuthという仕組みの全体像は、記事の最後で紹介するOAuth2.0の記事で解説しています。
デバイスコードフィッシングの見分け方
3-1. 「自分で始めたサインインか」で判断する
見分け方の基本は、とてもシンプルです。
コードを入力する前に、そのコードは自分が手元の機器で表示させたものかを確かめます。

図の右側のように、コードがメールやチャットで届いた場合は、その時点で入力しないと決めてしまいましょう。
手元の機器にコードが出ている場合でも、自分でサインインを始めた覚えがなければ入力しません。
正規の使い方では、コードは、サインインしようとしている自分の機器の画面に表示されます。
メッセージで届くコードは、相手が誰であっても、それだけで本来の使い方から外れていると言えます。
「本物のMicrosoftのページかどうか」を確かめることは、ほかの手口には有効ですが、この攻撃では決め手になりません。
攻撃者は、はじめから本物のページで入力させることを前提にしているからです。
MITRE ATT&CKも対策として利用者の教育を挙げ、OAuthの許可を求めるフィッシングを見分けられるようにすることを勧めています(参考5)。
家族や同僚にも、「メッセージで届いたコードは入れない」という一言のルールで伝えると覚えやすいでしょう。
QRコードを読み取らせて偽のページへ誘う手口にも、「自分で始めたかどうか」を確かめる考え方で備えられます。
QRフィッシングについては、記事の最後で紹介する記事でくわしく解説しています。
3-2. 迷ったときに確かめること
判断に迷ったときは、次の点を落ち着いて確かめましょう。
| 確かめること | 怪しいサイン |
|---|---|
| コードの出どころ | メール、チャット、電話で知らされた |
| サインインのきっかけ | 自分で操作を始めていない |
| 文面の言葉 | 今すぐ、何分以内と期限を区切っている |
| 送り主 | 知人や社内の名前でも、コードをメッセージで送ってきている |
送り主に確かめるときは、届いたメッセージに返信するのではなく、電話やふだん使っている社内チャットなど、別の方法で連絡します。
会社のアカウントなら、コードは入れずに、届いたメッセージを情報システム部門に報告するのがいちばん確実です。
個人のMicrosoftアカウントでは、コードを入れたあとにもう一度サインインし、機器に与える権限への同意を求められることがあります。
Microsoftは、この手順は会社や学校のアカウントには当てはまらないと説明しているので、同意の画面が出ないからといって安全とは限りません(参考1)。
身に覚えのない機器やアプリへの同意を求められたら、そこで手を止めましょう。
聞くのをためらう必要はなく、迷ったら入力しないというだけで、この手口はそこで止まります。
万が一入力してしまっても、すぐに相談すれば被害を小さくできるので、次の章の手順も覚えておきましょう。
- メールやチャットで届いたコードは入力しない
- ページが本物であることを、安心の材料にしない
- 迷ったら、別の方法で送り主や管理者に確かめる
コードを入力してしまったときの対処
4-1. 会社のアカウントなら、すぐ管理者に連絡する
もしコードを入れてサインインしてしまったら、できるだけ早く動くことが大切です。
会社や学校のアカウントなら、自分だけで対応しようとせず、まず情報システム部門や管理者に連絡してください。

図の2のように、管理者は管理画面から、その利用者の新しいサインインを止めたり、セッションを取り消して更新トークンを無効にしたりできます。
Microsoftの手順でも、パスワードの再設定とは別に、更新トークンを取り消す手順が示されています。
必要に応じて、管理者はアカウントを一時的に無効にしたり、登録されている端末を無効にしたりすることもできます。
ただし、取り消したあとも、すでに発行されたアクセストークンは、原則として期限が切れるまで使える場合があります。
例外は継続的アクセス評価(CAE)に対応したアプリで、管理者がアクセストークンまで取り消せるとMicrosoftは説明しています(参考4)。
どちらにしても、早く連絡するほど被害を小さくできます。
図の3と4は、通行証を止めたあとの確認で、これも管理者が受け持ちます。
攻撃者が連絡先や認証アプリの設定を書き換えていないか、メールやファイルに見覚えのない操作がないかを、管理画面の記録などで調べるのが一般的です。
具体的な確かめ方は組織や製品によって違うので、自分で設定を触らず、管理者の指示に従いましょう。
連絡するときは、届いたメッセージ、コードを入れた時刻、使ったアカウントを伝えると、調査を進めやすくなります。
入力した時刻がわかれば、管理者はサインインの記録から、その時刻のデバイスコードによるサインインを探しやすくなります。
同じメッセージがほかの人にも届いていないかを確かめるためにも、受け取ったメッセージは削除せずに残しておきましょう。
英国の国立サイバーセキュリティセンター(NCSC)は、利用者が「クリックしてしまった」あとでも安心して報告できるよう、責めない文化を作ることを組織に勧めています。
あわせて、被害の種類ごとに何をして誰が担当するかを、前もって計画しておくことも勧めています(参考6)。
入力してしまったことを隠す必要はないので、気づいた時点ですぐに伝えましょう。
4-2. 個人のアカウントの場合
Microsoftの説明では、デバイスコードによるサインインは、会社のアカウントだけでなく個人のMicrosoftアカウントでも使える仕組みです(参考1)。
個人のアカウントで入れてしまった場合は、安全な端末から公式サイトやアプリを開き、セキュリティの設定を確かめましょう。
サービスによっては、最近のサインインの記録や、サインインしている端末の一覧を確認できます。
ただし、この攻撃では本人が自分の端末でサインインするため、記録が本人のものに見える場合があります。
コードを入れてサインインしてしまったなら、記録に見覚えがあるかどうかに関係なく、ほかの端末からサインアウトする機能を使い、パスワードも変えましょう。
続けて、使っていない機器やアプリへの許可が残っていないかを見直し、心当たりのないものは取り消してください。
これらの操作でどこまで締め出せるかはサービスによって異なる場合があるため、一つだけで済ませず、まとめて行うのがおすすめです。
あわせて、登録しているメールアドレスや電話番号、認証アプリの設定が書き換えられていないかも確かめてください。
攻撃者が自分の連絡先を登録していると、あとから何度でも入り直されるおそれがあるからです。
家族のアカウントで入力してしまった場合も、同じ手順で一緒に確かめてあげましょう。
知人へのなりすまし送信やお金の被害が出ている場合は、周りの人や関係する窓口にも早めに知らせましょう。
設定を見直しても不審なサインインや送信が続く場合や、どこまで被害が広がったか自分では確かめられない場合は、専門業者に調査を依頼する方法があります。
相談先の候補の一つが、パソコンやスマートフォンのハッキング調査、法人のサイバー攻撃被害の調査を扱う「デジタルデータフォレンジック」で、広告主の案内では相談や見積もりは無料とされています。
会社のアカウントの場合は、先に管理者へ相談してください。
管理者ができるデバイスコードフィッシング対策
5-1. 条件付きアクセスでデバイスコードフローを止める
ここからは、Microsoft Entra IDを管理する人に向けた対策です。
Microsoftは、デバイスコードによるサインインを必要な場所だけに許し、できる限りブロックすることを勧めています。
そのために使うのが、サインインの条件に応じて許可やブロックを決める、条件付きアクセスという機能です。

図のように、ポリシーでは対象の利用者とリソースを選び、条件の「認証フロー」でデバイスコードフローを指定して、アクセスをブロックします。
対象は、すべてのユーザーとすべてのリソースが推奨されていますが、設定の誤りで締め出されないよう、緊急用の管理者アカウントは除外しておきます。
いきなり有効にせず、まずレポート専用モードで作成し、影響を確かめてからオンに切り替えます。
会議室の機器や更新できない古いツールなど、どうしても必要な使い道がある場合は、用途と場所を限って許可する形にします。
対象から外した緊急用のアカウントなどは、定期的に見直すことも勧められています。
同じ「認証フロー」の条件では、パソコンのOutlookに表示したQRコードをスマートフォンで読み取り、サインインの状態を移す「認証の転送」も制御できます。
個人の端末でのOutlookの利用を認めていない組織なら、こちらのブロックもあわせて検討するとよいでしょう。
なお、端末の登録にこの方法を使っている組織では、すべてのリソースを対象にすると影響が出ることがあり、Microsoftは登録用のサービスを対象から外す方法を案内しています(参考2・参考3)。
5-2. ログの確認と、多層の防御
ブロックする前に、組織の中でデバイスコードがどのくらい使われているかを知っておくことも大切です。
Microsoftは、サインインログを「認証プロトコル」で絞り込むと、デバイスコードによるサインインを確かめられると説明しています。
また、デバイスコードで始まったセッションは、その後に通行証を更新しても「デバイスコードを使ったもの」として追跡されます。
そのため、ブロックのポリシーを有効にすると、デバイスコードで始まったセッションは、あとから別の方法で使おうとしてもブロックされることがあります。
サインインログの詳細には「元の転送方法」という項目もあり、以前にデバイスコードを使ったセッションかどうかを確かめる手がかりになります(参考2)。

NCSCは、フィッシング対策を4つの層に分けて考え、どれか1つに頼らずに組み合わせることを勧めています。
デバイスコードフィッシングに当てはめると、1つ目の層はメールのフィルタ、2つ目は「コードが届いたら入力しない」という教育と、報告の窓口です。
1つ目の層では、自社のドメインになりすましたメールを送られにくくする設定や、怪しいメールを振り分ける仕組みが中心になります。
3つ目の層は条件付きアクセスによるブロックで、利用者がコードを入れてしまっても、攻撃者の機器に通行証が渡らないようにします。
4つ目の層は、報告を受けたらすぐにセッションを取り消せるよう、手順と担当をあらかじめ決めておくことです。
NCSCは、端末が乗っ取られてふだんの連絡手段が使えない場合も考え、報告の方法を前もって利用者に伝えておくよう勧めています。
NCSCは、教育だけですべてのフィッシングを見抜けるようにはできないとして、利用者への訓練に頼りすぎないよう注意しています(参考6)。
MITRE ATT&CKも、送信元を確かめるSPFやDKIM、DMARCといったメールの認証を、対策の1つに挙げています(参考5)。
- デバイスコードフローは原則ブロックし、必要な用途だけ許可する
- レポート専用モードとサインインログで、影響を確かめてからオンにする
- 報告を受けたらセッションを取り消す手順を、前もって決めておく
よくある質問
6-1. デバイスコードフィッシングでよくある質問
Q1. Microsoftのアカウントだけが狙われるのですか?
この記事ではMicrosoftを例にしましたが、デバイスコードの仕組みは、OAuth 2.0という標準の一部です。
Microsoftも、この仕組みを標準の「デバイス認可グラント」として提供しています。
同じ仕組みを使うほかのサービスでも、他人から届いたコードを入力しないという考え方は変わりません。
Q2. コードを入れただけで、サインインを最後まで進めていなければ大丈夫ですか?
サインインが終わる前に画面を閉じていれば、仕組みの上では通行証は発行されません。
ただし、ブラウザですでにサインインしていると、パスワードを入れずにアカウントを選ぶだけで進む場合があります。
どこまで進めたか自信がないときは、4章の手順で管理者に相談しましょう。
Q3. 多要素認証を使っていても、意味がないのですか?
いいえ、パスワードを盗まれたときの被害を防ぐ、とても大切な対策です。
NCSCも、被害を抑える層の対策として、多要素認証の導入を挙げています(参考6)。
パスワードを手で入力する場面が減ると、ふだんと違う依頼に気づきやすくなるとも説明されています。
ただしデバイスコードフィッシングには効きにくいため、条件付きアクセスや「届いたコードは入れない」というルールと組み合わせましょう。
Q4. デバイスコードフローをブロックすると、困ることはありますか?
会議室の機器や一部の古いツールのように、この方法でサインインしている機器が使えなくなることがあります。
Microsoftは、この種のポリシーでブロックされると、一部のリソースにアクセスできなくなったり、機器のサインアウトが起きたりする場合があると説明しています(参考2)。
レポート専用モードとサインインログで使い道を確かめてから、必要な用途だけを許可しましょう。
オンにしたあとしばらくは、利用者からの問い合わせが増えていないかも見ておくと安心です。
Q5. 自宅のテレビでコードを入力するのも危ないのですか?
自分でテレビのサインインを始め、その画面に出たコードを入力するのは、本来の正しい使い方です。
危ないのは、自分で始めていないのに、メッセージなどで届いたコードを入力する場合です(参考1)。
コードを入れる前に、「いま自分の目の前の機器が、このコードを表示しているか」を確かめる習慣をつけましょう。
ここまで読んでくださって、ありがとうございます。
デバイスコードフィッシングは、本物のサインイン画面を使って、通行証を攻撃者の機器へ渡させる手口です。
見分け方の決め手は、画面が本物かどうかではなく、そのコードを自分の機器で表示させたかどうかです。
もし入力してしまったら、会社のアカウントならすぐに管理者へ連絡し、個人のアカウントならサインインの記録と設定を確かめましょう。
管理者は、条件付きアクセスでデバイスコードフローを必要な場所だけに絞り、報告を受けたらすぐにセッションを取り消せるよう準備しておくと安心です。
今日できることを1つ選ぶなら、「メッセージで届いたコードは入力しない」というルールを、家族や同僚と共有してみてください。
フィッシングの基本や、関連する仕組みをもっと知りたい方は、次の記事もどうぞ。
- 参考1:Microsoft Learn「Microsoft identity platform and the OAuth 2.0 device authorization grant flow」
- 参考2:Microsoft Learn「Conditional Access: Authentication flows」
- 参考3:Microsoft Learn「Block authentication flows with Conditional Access policy」
- 参考4:Microsoft Learn「Revoke user access in Microsoft Entra ID」
- 参考5:MITRE ATT&CK「Phishing: Spearphishing Link(T1566.002)」
- 参考6:NCSC「Phishing attacks: defending your organisation」

