セキュリティ
巧妙なプロトコル操作により、本来iBiz専用の人物追跡機能を非iGadget端末でも動作させることに成功
ある若手セキュリティ研究者が、Linux端末をApple社のFind Myネットワークに登録し、そこからリアルタイムの位置情報を読み取る方法を発見しました。
Find Myは、その名の通り物を探し出すためのAppleのアプリです。対象となるのはAirTagsやiPad、その他対応デバイスやアイテムなど。さらに、人物の位置情報にも対応しています。家族同士で安全のため互いの居場所を確認し合ったり、友人同士で誰がどこで一緒に過ごしているかを把握したりすることができます。
ただし、いかにもAppleらしいことに、Find Myのフル機能はiPhoneやMacといったApple製ハードウェアでのみ利用可能です。AppleはiCloudのWebサイト経由でもFind Devices機能を提供していますが、こちらには他者と共有された位置情報を閲覧できるFind Myの人物追跡機能が搭載されていません。
しかし、「Zerotistic」を名乗る22歳の研究者は、Linuxベースのマシンをこの「iネットワーク」に登録し、Appleに対しApple製デバイス専用として扱われている人物位置情報データを送信させる手法を編み出しました。
ここで重要なのは、この手法は誰かが任意のApple利用者の位置情報を勝手に取得できるようにするエクスプロイトではないという点です。あくまで、Apple以外のデバイスをFind Myネットワークに登録し、そのApple アカウントの所有者に対してすでに位置情報の共有を許可していた人物のデータを取得する、という仕組みにすぎません。
人物の位置情報データを取得するには、使用しているマシンが自社のネットワークに属し、データを受信できる能力があるとAppleに信頼させる必要があります。このデータはApple Push Notification service(APNs)経由で送信されます。
最初のステップは、Linuxマシンを研究者自身のApple アカウントに紐付けることでした。Zerotistic氏はAppleの標準的な認証プロトコルであるGrandSlamを通じてID委任(identity delegate)を取得しました。次に、対象デバイスをApple アカウントに紐付けるApple Identity Services(IDS)デバイス証明書を得るため、この委任情報を使ってカスタムの証明書署名要求(CSR)を作成しました。
幾度もの試行錯誤の末、Zerotistic氏はこのCSRがPKCS#10形式かつSHA-1で署名された2048ビットRSA鍵を使用する必要があることを突き止め、Linuxマシンを自身のApple アカウントに紐付けました。これを圧縮したXMLファイルにまとめ、AppleのauthenticateDSプロファイル登録エンドポイントへ送信しました。
SHA-1署名の要件やXMLエンコーディングは予想外のものでした。研究者の「最も有力な推測」によれば、authenticateDSがレガシーなエンドポイントであるため、CSRが古い規格に準拠する必要があったのではないかとのことです。
Appleはこの CSR に署名し、Linuxデバイスに対して、公開鍵を研究者のApple アカウントに登録するために必要なIDS証明書を発行しました。
この時点でLinuxデバイスの登録は完了しましたが、AppleにFind My機能を実行できると認めさせるにはさらなる作業が必要でした。
Zerotistic氏によれば、Find Myの登録リクエストには、デバイスが6つの異なるサブサービスを購読し、対応する暗号化方式を定義し、Appleのデバイスtoデバイスメッセージングフォーマットをサポートするための公開鍵を提供することが求められました。さらに、IDS証明書と、初回のネットワークセットアップ時に取得したAPNs証明書の両方による署名も必要でした。
ここまでの段階で、研究者はLinuxマシンをApple アカウントに登録し、AppleのプライベートAPNsサーバーへの永続的なバイナリTLS接続を通じて位置情報データを受信できる能力があるとFind Myに信じ込ませることに成功しました。
しかし、この登録だけでは、まっさらなApple製デバイスがセットアップ後に自動的に行うような、以前にZerotistic氏と位置情報を共有していた人々のデータの取得は行われませんでした。
そこでSubscribeAndFetchリクエストを発行したところ、この問題は解決し、研究者の友人のデバイスが暗号化された位置情報キーを新たに登録されたLinuxデバイスへプッシュ送信するようになりました。
最後の課題は、LinuxデバイスがAppleのSearchPartyサービスから取得した位置情報データを読み取ることでした。Zerotistic氏は単にLinux版のFind My GUIアプリを使用していたわけではなく、暗号化されたデータそのものを受信し、その位置情報メッセージをどう解読するかを自力で解明する必要がありました。
そのためには、Appleのメッセージング用エンベロープを展開し、共有された位置情報キーを抽出したうえで、座標・タイムスタンプ・精度情報から構成されるFind Myの位置情報データを復号するLinuxスクリプトが必要でした。
このスクリプトが完成すると、既存の位置情報共有について、以降の位置情報レポートを取得・デコードできるようになりました。
研究者によれば、このFind My回避技術の開発には1週間もかからなかったとのことです。
The RegisterはAppleに対し、この研究者の成果を把握しているか、また対応の予定はあるかを尋ねましたが、即座の回答は得られませんでした。®