パスキーハイジャック

サイバーセキュリティにおける**パスキーハイジャック**（Passkeys hijack）とは、パスキー認証を乗っ取る攻撃手法の一つである。公開鍵暗号方式を使うパスキー認証では秘密鍵はデバイスのセキュリティチップに保存され奪うことが出来ないため安全だとされている。パスキーハイジャックは同期パスキーで秘密鍵がクラウド経由で同期されるシステムを悪用し、犯人が遠隔から秘密鍵を犯人のスマートフォンにダウンロードし生体認証のシステムとしての脆弱性を使ってパスキー認証を乗っ取る攻撃方法である。類似の攻撃方法としてパスキーの秘密鍵が保存されているスマートフォンを物理的に入手して生体情報を追加することでパスキー認証を乗っ取る生体ハイジャックがある。これらの攻撃は高いハッキングのスキルがなくても容易にパスキー認証を乗っ取ることが可能であり、パスキー認証を使う場合にはそれぞれの攻撃に対してしっかりした対策を実施する必要がある。

## 概要
インターネットや企業内ネットワークなどへの接続するユーザーを識別し、許可された正規のユーザーであることを確認する認証手段はサイバー攻撃を防ぐためには重要な技術である。認証の要素とは、「知識情報」、「所持情報」、「生体情報」の3つに分類されることが多く、これらの要素を複数組み合わせた認証手段は「多要素認証」と呼ばれる。

従来、認証手段としては「記憶情報」を使うID・パスワード方式が一般的であったが、フィッシング攻撃によってID・パスワードが盗まれることによる被害が急増し問題となっている。

ハードウェアトークンやスマートフォンの認証アプリなどの「所持情報」については盗難・紛失のリスクはあるもののフィッシング対策に有効であるとされてきたが、中間者攻撃などの新しい攻撃手法によって防御が難しくなっている。特に2025年春頃から被害が急増した証券口座乗っ取りではリアルタイムフィッシング攻撃により従来の多要素認証の主流であったSMSやメール、認証アプリを用いたワンタイムパスワードでは防げないという認識が広がり、フィッシング耐性のあるFIDO認証（パスキー認証）が注目されている。FIDO認証にはスマートフォンの生体認証を使ったものや秘密鍵を物理デバイスに保存するFIDO対応のセキュリティキー等がある。

「生体情報」は指紋や虹彩、静脈、顔、音声等の人間の身体的特徴の情報を用いて個人を特定することが可能である。生体認証を行うためには専用の機器が必要となり、システムによっては認証が確実ではない場合もあったが、現在ではスマートフォンに搭載されている生体認証は、登録された指紋情報や顔情報から認証用の特徴点データを抽出し、セキュリティチップに安全に保管され、生体情報をハッキングなどで盗むことや改ざんすることも難しく、他人を誤認識する確率も十分低く安全であると考えられロック解除用としてだけでなくセキュリティ用としても広く使用されている。

スマートフォンに搭載されている生体認証はスマートフォンを所持する正規の所有者が自身の生体情報のみを登録することが前提で設計されている。しかしながら、iPhoneの場合であればパスコードを知っていれば誰でも生体情報の登録・追加・削除が可能である。またスマートフォンに搭載されている生体認証は登録された生体情報とスマートフォンのセンサで検出した生体情報を比較し判定結果のみをシステムに送り、誰の生体情報と比較したかについてはシステムでは不明のまま比較結果が一致していればパスキー認証の場合もセキュリティチップに保存された秘密鍵を使ってチャレンジコードを暗号化してFIDOサーバーに送信されパスキー認証が完了する。従って、パスキーの秘密鍵が保存されているスマートフォンに生体情報を追加して生体認証を乗っ取る（生体ハイジャック）ことでパスキー認証も同時に乗っ取ることが可能である。この攻撃方法ではパスキーの秘密鍵をスマートフォンごと物理的に入手することが必要であるが、同期バスキーだけでなく秘密鍵を同期しないFIDO2でも乗っ取りが可能である。

同期パスキーは複数のデバイス間で秘密鍵をクラウド経由で共有することにより、機種変更時などにパスキー認証を再設定することなく使用可能とし利便性とセキュリティを両立する方式として広く使われている。同期パスキーが提案された時点では、秘密鍵を同期してもセキュリティチップに保存すれば秘密鍵の窃取は出来ないし、生体認証により第三者では拒絶されるので乗っ取りは出来ず安全だと考えられていた。しかしながら同期パスキーの秘密鍵が紐づいているアップルアカウントやグーグルアカウント等が乗っ取られると以下のような状態が発生する。

iPhone所有者のA氏のアップルアカウントのサインイン情報（ID・パスワード等）を犯人Bが何らかの方法で入手し、犯人BのiPhoneにA氏のアップルアカウントでサインインした場合、アップルアカウントに紐づいたパスキーの秘密鍵やID・パスワード等の認証情報が自動的に犯人Bのスマートフォンのセキュリティチップにダウンロードされる。セキュリティチップに保存された秘密鍵は取り出すことはできませんが、犯人Bのスマートフォンには犯人Bの生体情報が登録されており犯人BがFace IDやTouch IDを使ってA氏のパスキーの秘密鍵を用いてパスキー認証が成功する。

従って、アップルアカウントやグーグルアカウント等を乗っ取るだけでパスキー認証も乗っ取り（パスキーハイジャック）が可能である。同様にID・パスワード情報もFace IDやTouch IDで呼び出すことが可能である。証券口座乗っ取りではリアルタイムフィッシングだけでなくインフォスティーラーによる認証情報の窃取の可能性が議論されているが、アップルアカウントやグーグルアカウント等を乗っ取るだけでインフォスティーラー以上の認証情報が奪われるリスクがあることを周知し対策を徹底する必要がある。

同じ公開鍵暗号方式を使うFIDO認証（パスキー認証）でもスマートフォン以外の物理デバイスに秘密鍵を保存するFIDO対応のセキュリティキーではパスキーハイジャックや生体ハイジャックのリスクはなく、スマートフォンの生体認証を使ったパスキー認証よりはるかに安全である。スマートフォンの生体認証を使ったパスキー認証とFIDO対応のセキュリティキーはFIDOサーバーとの信号のやり取りは基本的に同じであり両方に対応する際の負担は大きく変わらないので、高いセキュリティが要求される場合にはFIDO対応のセキュリティキーを使ったFIDO認証を選択可能なように認証システムを構築しておくことが望ましい。

## 対策
パスキーハイジャックも生体ハイジャックも秘密鍵を窃取することと生体認証を乗っ取ることでパスキー認証を乗っ取っている。特にパスキーハイジャックでは完全に遠隔からの攻撃が可能で、物理的に攻撃対象のスマートフォン等を入手する必要がなく、デバイスに攻撃対象のアップルアカウントやグーグルアカウント等でサインインするだけで秘密鍵の窃取が完了する。犯人の管理下のデバイスなので生体認証は最初から乗っ取られた状態と同じであり、秘密鍵をダウンロードする経路を遮断する以外にはパスキーハイジャックを防ぐ方法がない。アップルアカウントの保護策としてはSMS認証を使った二要素認証を設定できるが、リアルタイムフィッシングでワンタイムパスワードを突破できることが当たり前となっている現在では有効な保護策とは言えない。アップル社ではiOS16.3以降でFIDO対応のセキュリティキーをアップルアカウントの二要素認証に設定できる。この設定を行った場合にはアップルアカウントの二要素認証はSMS認証からFIDO対応のセキュリティキーに切り換わり、アップルアカウントにサインインする場合にFIDO対応のセキュリティキーが必須になる。これによりアップルアカウントのID・パスワード等が漏洩していてもリアルタイムフィッシングで攻撃しても遠隔からアップルアカウントにサインインすることはできない。アップルアカウントの二要素認証を回避する方法として、メールやメッセージ、電話等で二要素認証をOFFに設定するよう誘導する例もあるので、二要素認証をOFFに設定しようとした場合に強く警告表示を行うなどの改善も今後検討するべきである。アップルアカウント以外にグーグルアカウントやマイクロソフトアカウントのようにパスキーの秘密鍵に紐づけられるアカウントではアップルアカウントと同様に二要素認証としてFIDO対応のセキュリティキーを設定できる。それぞれのアカウントでセキュリティキーを紛失した場合の回復手段やセキュリティキーがなくてもサインインできる方法の有無などが異なるので実際に対策を行う際には留意する必要がある。

生体ハイジャックでは秘密鍵が保存されているスマートフォンを物理的に入手して生体情報を追加することでパスキー認証を乗っ取るので、本人以外が生体情報を登録・追加・削除できないようにする以外には生体ハイジャックを防ぐ方法がない。アップル社ではiOS17.3以降で盗難デバイスの保護機能を追加した。この機能をONにすることで生体情報を登録・追加・削除する場合には本人の生体認証が必須となり、本人以外が生体情報を登録・追加・削除することを防ぐことが可能になる。この機能はかなり強力だがアップルアカウントにサインインして盗難デバイスの保護機能をONにしたデバイスを初期化することで盗難デバイスの保護機能を無効化できる可能性がある。従って生体ハイジャックを防ぐためにもアップルアカウントの二要素認証としてFIDO対応のセキュリティキーを設定することは重要である。盗難デバイスの保護機能では機能をONにしたデバイスでのみ本人以外が生体情報を登録・追加・削除することを防ぐことができる。したがってこの機能でパスキーハイジャックを防ぐことはできない。Android OSにも同様の盗難保護機能があるが、生体情報を保護する機能は高いセキュリティレベル（クラス3）の生体認証に対応しているデバイスのみで対応との記述があるので、対応デバイスの確認が必要がある。

## 脚注