Windows Helloの指紋セキュリティテスト、上位3つのノートパソコンで不合格c

Windows Helloの指紋セキュリティテスト、上位3つのノートパソコンで不合格c
Windows Helloの指紋セキュリティテスト、上位3つのノートパソコンで不合格c
Windows Hello fingerprint security | Microsoft Surface keyboard cover with fingerprint reader

Windowsノートパソコンのユーザーは、自分用のTouch IDを搭載していると思いがちですが、Touch IDほどのセキュリティレベルは提供されていないようです。Windows Hello指紋認証システムを搭載した上位3機種のノートパソコンは、セキュリティ研究者によるテストを受けましたが、いずれも不合格でした。

公平に言えば、チームはマイクロソフトの要請で侵入テストを実施していたのですが、最も簡単に回避できたのはマイクロソフトの Surface 製品でした…

マイクロソフトはサイバーセキュリティ企業のブラックウィング・インテリジェンスにテストの実施を依頼した。

MicrosoftのOffensive Research and Security Engineering(MORSE)から、ノートパソコンに搭載されWindows Helloの指紋認証に使用されている上位3つの指紋センサーのセキュリティ評価を依頼されました。調査の結果、複数の脆弱性が明らかになり、私たちのチームはこれらの脆弱性を悪用することに成功し、3つのノートパソコンすべてでWindows Hello認証を完全にバイパスすることができました。

3 つそれぞれに対して異なるアプローチを取る必要がありました。

  • デル インスパイロン 15
  • レノボ ThinkPad T14
  • Microsoft Surface Pro タイプ カバー (指紋認証付き) (Surface Pro 8 / X 用)

使用された(あるいは使用されなかった、後ほど説明しますが…)セキュリティプロトコルに関するチームの説明を読むと、確かに大変な挑戦のように聞こえます。しかし、チームはそれらを回避する方法を見つけました。

デル インスパイロン 15

マシンを Windows で起動すると、Secure Device Connection Protocol (SDCP) と呼ばれるものを含む完全なセキュリティ プロトコルに従います。

これは、次のチェックを実行することを目的としています。

  • ホストは悪意のあるデバイスではなく、信頼できるデバイスと通信しています
  • デバイスはハッキングされたファームウェアが実行されていないことを確認するためにチェックされます
  • 指紋データはキャッシュも再生もされない

しかし、Windows のリーダーへのアクセスでは SDCP が使用されますが、Linux のアクセスでは使用されないという点が、チームに最初のアイデアを与えました。

ターゲットデバイスを Linux で起動し、Linux 側を使用して、Windows 側に登録されている正当なユーザーと同じ ID を指定して、攻撃者の指紋をテンプレート データベースに登録したらどうなるでしょうか?

これはうまくいきませんでした。チップ上にはWindowsとLinux用の別々のデータベースがあることが判明したからです。しかしBlackwingは、Windowsがどのデータベースにアクセスするかをどのように認識するかを解明し、代わりにLinuxのデータベースを指定することに成功しました。その結果、以下の解決策が生まれました(MitMは中間者攻撃を指します)。

  1. Linuxを起動する
  2. 有効なIDを列挙する
  3. 正規のWindowsユーザーと同じIDを使用して攻撃者の指紋を登録する
  4. ホストとセンサー間の接続をMitMする
  5. Windowsを起動する
  6. 中間者攻撃(MitM)を使用して、構成パケットを傍受し、Linux DBを指すように書き換える
  7. 攻撃者の指紋を使って正規ユーザーとしてログイン

レノボ ThinkPad T14s

このデバイスで使用されているSynaptics指紋センサーはSDCPをサポートしていますが、無効になっています。代わりに、デバイスは同じ機能を果たすカスタムトランスポートセキュリティレイヤー(TLS)を使用しています。

残念ながら、この代替セキュリティ システムはあまり安全ではありません。

クライアント証明書とキーは誰でも読み取り可能ですが、暗号化されています。何で暗号化されているのでしょうか?後ほど詳しく調べてみると、マシンの製品名とシリアル番号という2つの情報から生成されたキーで暗号化されていることがわかりました。これらの情報はACPI経由でBIOSから取得されます(ラップトップの底面のステッカーにも記載されています😜)。

その結果、次の解決策が得られました。

  1. 暗号化されたクライアント証明書/キーの読み取り
  2. 製品名とシリアル番号から派生したキーを使用して暗号化されたBLOBを復号化する
  3. センサーとのTLSセッションをネゴシエートする
  4. 有効な Windows 指紋テンプレート ID を列挙する
  5. 攻撃者の指紋を登録し、有効なIDを偽装する
  6. Windowsを起動する
  7. 攻撃者の指紋を使って対象のWindowsユーザーとしてログインする

Microsoft Surface Pro タイプ カバー(指紋認証付き)

チームは、公式の Microsoft 製品が最も困難な課題になると予想していましたが、セキュリティが信じられないほど貧弱であることに驚きました。

  • SDCPなし
  • クリアテキストUSB通信
  • 認証なし

そのため、偽装するには指紋センサーを外し、自分のデバイス(最初は Raspberry Pi、後に小型で高速な USB アーマリー)を接続するだけで済みました。

  1. タイプ カバーを取り外します (ドライバーは 2 つのセンサーが接続された状態を処理できず、動作がおかしくなります)
  2. 攻撃デバイスを接続し、センサーのVID/PIDをアドバタイズする
  3. Windows ドライバーから有効な SID を確認します
  4. 「指紋の数」チェックに合格
  5. Windowsで指紋ログインを開始する
  6. 偽装デバイスから有効なログイン応答を送信する

MacBookのTouchIDはどうですか?

Apple は競合他社よりもはるかに優れた生体認証セキュリティを実装してきた優れた実績を持っています。

Touch IDとFace IDはどちらも生体認証データをSecure Enclaveに保存しており、Macの他の部分からはこのデータにアクセスできません。デバイスのロック解除の許可を求めるだけで、Secure Enclaveは単に「はい」か「いいえ」と答えるだけです。Appleは以下のように説明しています。

お使いのデバイスに搭載されているチップには、パスコードと指紋データを保護するために開発された「Secure Enclave」と呼ばれる高度なセキュリティアーキテクチャが搭載されています。Touch IDは指紋の画像を保存せず、数学的表現のみを使用します。この保存データから実際の指紋画像をリバースエンジニアリングすることは不可能です。

指紋データは暗号化され、ディスクに保存され、Secure Enclaveのみが利用できる鍵で保護されています。指紋データは、Secure Enclaveが登録済みの指紋データと一致するかどうかを検証するためにのみ使用されます。デバイスのOSや実行中のアプリケーションからはアクセスできません。Appleのサーバーに保存されることはなく、iCloudやその他の場所にバックアップされることもなく、他の指紋データベースとの照合にも使用されません。

Blackwing が Touch ID を破ろうと同じような試みをした場合、失敗するだろうと私は予想しているが、Apple が十分な自信を示してチームに試してみるよう依頼してくれたら素晴らしいだろう。

写真: マイクロソフト

havebin.com を Google ニュース フィードに追加します。 

FTC: 収益を生み出す自動アフィリエイトリンクを使用しています。詳細はこちら。