ブラウザの外部プロトコル ハンドラーの分析による識別

Fingerprintjs ライブラリの開発者は、画面解像度、WebGL 機能、インストールされているプラ​​グインやフォントのリストなどの間接的な機能に基づいてパッシブ モードでブラウザ識別子を生成できるようにし、インストールされている典型的なアプリケーションの評価に基づいた新しい識別方法を提示しました。ユーザーに基づいて、ブラウザーの追加プロトコル ハンドラーのサポートを確認して作業します。 このメソッドを実装したスクリプト コードは、MIT ライセンスに基づいて公開されています。

このチェックは、32 の一般的なアプリケーションへのハンドラーのバインドの分析に基づいて実行されます。 たとえば、ブラウザ内に URL スキーム ハンドラー telegram://、slack://、skype:// が存在するかどうかを判断することで、システムに telegram、slack、skype アプリケーションが存在すると結論付け、この情報を標識として使用できます。システム識別子を生成するとき。 ハンドラーのリストはシステム内のすべてのブラウザーで同じであるため、ブラウザーを変更しても識別子は変更されず、Chrome、Firefox、Safari、Brave、Yandex ブラウザー、Edge、さらには Tor ブラウザーでも使用できます。

このメソッドを使用すると、32 ビットの識別子を生成できます。 個別に優れた精度を達成することはできませんが、他のパラメータと組み合わせた追加機能としては意味があります。 この方法の顕著な欠点は、識別試行がユーザーに見えることです。提案されたデモ ページで識別子を生成するとき、小さいながらも明らかに目立つウィンドウが右下隅に開き、そこでハンドラーが非常に長い間スクロールします。 この欠点は、識別子が気づかれずに計算される可能性があるため、Tor Browser には現れません。

アプリケーションの存在を確認するために、スクリプトはポップアップ ウィンドウで外部ハンドラーに関連付けられたリンクを開こうとします。その後、チェックされているアプリケーションが有効である場合、ブラウザーは関連付けられたアプリケーションのコンテンツを開くように求めるダイアログを表示します。存在するか、アプリケーションがシステム上にない場合はエラー ページが表示されます。 典型的な外部ハンドラーの順次検索とエラー戻りの分析を通じて、システムにテスト対象のプログラムが含まれていると結論付けることができます。

Linux 版 Chrome 90 では、このメソッドは機能せず、ハンドラーを確認しようとするすべての試行に対してブラウザに標準の動作確認ダイアログが表示されました (Windows および macOS 版の Chrome ではこのメソッドは機能します)。 Linux 版 Firefox 88 では、通常モードとシークレット モードの両方で、スクリプトはインストールされている追加アプリケーションの存在をリストから検出し、識別精度は 99.87% と推定されました (実行された 35 のテストのうち 26 件の同様の一致)。 同じシステム上で実行されている Tor ブラウザでは、Firefox でのテストと一致する識別子が生成されました。

興味深いことに、Tor ブラウザの追加保護は残酷な冗談を演じ、ユーザーが気付かないうちに身元確認を実行する機会になってしまいました。 Tor ブラウザで外部ハンドラーの使用に関する確認ダイアログが無効になっているため、検証リクエストはポップアップ ウィンドウではなく iframe で開くことができることが判明しました (ハンドラーの有無を区別するため、同一生成元ルールエラーのあるページへのアクセスをブロックし、about:blank ページへのアクセスを許可します)。 フラッド保護のため、Tor ブラウザのチェックインにはかなり時間がかかります (アプリケーションごとに 10 秒)。

出所: オープンネット.ru

コメントを追加します