「本当に人間かどうか?」を確認するCloudflare TurnstileでWebGL情報が問題に、フィンガープリント対策で引っかかる環境が続出 – GIGAZINE


WebKitベースのブラウザエンジンであるWebKitGTKを使用してプライバシー重視のウェブブラウザ「BadWolf」を開発しているハエルウェン・モニエ氏が、Cloudflare Turnstileの「Verify you’re human」認証がWebKitGTKベースのブラウザで無限ループするようになり、複数のウェブサイトにアクセスできなくなったと報告しました。

Cloudflare Turnstile requiring fingerprintable WebGL – lanodan’s cyber-home
https://hacktivis.me/articles/cloudflare-turnstile-webgl-fingerprinting

ウェブサイトにアクセスした際に「本当に人間かどうか」を確認する小さな認証画面を見かけたことがある人は多いはず。画像の中から信号機や横断歩道を選ばせる従来型のCAPTCHAに代わり、近年はユーザーに面倒な作業をさせず、ブラウザ側で自動的に安全性を判定する仕組みが増えています。

Cloudflareが提供する「Turnstile」もCAPTCHA代替サービスのひとつです。Cloudflareの説明によると、Turnstileはウェブサイトに埋め込める認証ウィジェットで、ユーザーに画像選択などのCAPTCHAを表示せず、ブラウザ内で小さなJavaScriptチャレンジを実行して訪問者やブラウザ環境に関するシグナルを集めるとのこと。多くの場合はユーザーが何もしなくても認証が完了し、必要に応じてチェックボックスが表示される仕組みです。

CloudflareがCAPTCHAの代わりとして「Turnstile」をリリース、ユーザーではなくブラウザをテストしてボットかどうかを見極める仕組みとは? – GIGAZINE


ここでいうシグナルとは「ブラウザがJavaScriptを実行できるか」「Web APIが通常通り応答するか」「ブラウザの挙動が自動化ツールらしくないか」などの判定材料です。大量のアカウント作成やスパム投稿、スクレイピングを行う悪意あるボットからサイトを守るため、ウェブサイト運営者は「人間の普通のブラウザ」らしいアクセスと「自動化されたアクセス」を見分けるためにTurnstileなどの判定ツールを使用するというわけ。

しかし、Turnstileの判定にはOS、ブラウザ、画面サイズ、言語設定、フォント、GPU情報、描画結果などを組み合わせてユーザーの環境を識別しようとする手法であるフィンガープリンティングが使用されており、プライバシーを重視するユーザーから問題視されてきました。

特に今回注目されているのが、3Dグラフィックスをウェブブラウザ上で扱うためのWebGLです。WebGLを使うと、ブラウザはGPUの種類や描画結果などにアクセスできます。WebGL本来の用途は3Dゲームや地図、可視化ツールなどの描画ですが、GPUやドライバーの違いが描画結果に表れるため、端末を見分ける材料としても利用可能です。WebGLによる判定材料は「WebGLフィンガープリント」と呼ばれることがあります。

モニエ氏がWebGLフィンガープリントを採取されないようになっているBadWolfブラウザでTurnstileの互換性テストページにアクセスすると、「WebGLのレンダラー情報が偽装されている」といった趣旨の表示が出たとのこと。ブラウザ側がGPU情報を細かく返さない、または返す情報を一般化している場合、Turnstileはプライバシー保護ではなく「怪しい偽装」と判定する可能性があるわけです。


GPU情報を一般化することは必ずしも不正行為ではなく、プライバシー保護機能を持つブラウザや拡張機能はユーザーを追跡されにくくするために、端末固有の情報を隠したり丸めたりすることがあります。ところがボット検知側から見ると「情報を隠すブラウザ」は「正体を隠そうとするボット」にも見えるため、プライバシー保護とボット対策が衝突します。今回の問題は、プライバシー保護とボット対策の衝突がWebGL情報をめぐって表面化したものといえます。

エンジニア向けのニュース共有サイト「Hacker News」でも、この問題をめぐって多数の議論が行われています。別のブラウザでも問題が発生していると報告されたほか、あるコメントでは、CloudflareがTLS接続時の暗号スイートや拡張機能の組み合わせからクライアントの特徴を識別する手法である「JA3フィンガープリント」など複数の方法でスクレイパーを検出していると指摘されました。ブラウザの画面内だけでなく、通信の入り口でも「普通のブラウザらしさ」が見られているというわけです。

一方で、AIクローラーやスパムボットのアクセスが急増し、CloudflareやTurnstileを使わざるを得ないというウェブサイト運営者側の事情も投稿されていました。フォームやログイン画面、ユーザー投稿欄を持つウェブサイトは、不正投稿やアカウント作成、カードテスト攻撃などの標的になりやすくなります。

Turnstileのような認証サービスが広く使われるほど、ウェブサイトへのアクセス権限が少数の大企業に集中するという懸念も出ています。Cloudflareの認証を通過できないブラウザや設定を使っているユーザーは、サイト運営者が意図しなくても締め出される可能性があります。

また、Firefoxには「privacy.resistFingerprinting」という設定が存在しますが、モニエ氏がFirefoxで強化型トラッキング防止機能を「厳格」にしてもprivacy.resistFingerprintingは有効にならずTurnstileを通過する点に言及し、「フィンガープリンティングからの保護に失敗している」と指摘しました。


さらにHacker Newsのコメントでは、「privacy.resistFingerprinting」を有効にするとウェブサイトのタイムゾーンや表示が壊れることがあり、標準で有効にしにくい事情があると指摘されています。

つまり、プライバシーを強く守るほど一部のウェブサイトで壊れやすくなり、ウェブサイトとの互換性を優先するほどフィンガープリントの材料が増えるという板挟みです。ブラウザ開発者は「追跡されにくさ」と「ウェブサイトが普通に使えること」の両方を求められます。ユーザーからすると、プライバシー保護を有効にしただけで「人間ではない」と扱われる可能性がある点が厄介です。

フィンガープリントへの依存を弱める案として、Hacker Newsではプルーフ・オブ・ワークをより前面に出す方法も議論されています。プルーフ・オブ・ワークとは、ブラウザに短時間の計算作業を行わせることで、少数の人間にはほとんど負担をかけず、大量アクセスを行うボットには大きなコストをかける仕組みです。ただし、モバイル端末や低性能端末では負担になりやすく、高価値のデータを狙う攻撃者には十分な抑止力にならない可能性もあります。

WebGLやWebGPU、WebRTCのような識別に使われやすい機能について、利用前にブラウザの許可ダイアログを出すべきではないかという意見もあります。しかし、すべてのWebGL利用で許可を求めると、3D表示や地図、ゲームなど通常のウェブ体験が大きく損なわれます。さらに、認証サービス側が「アクセスするには許可を押してください」と表示すれば、結局ユーザーは押さざるを得ません。Cookie同意バナーのような形骸化が起きる可能性もあります。

かつてのCAPTCHAは「信号機を選んでください」「横断歩道を選んでください」とユーザーに問いかける仕組みでした。しかしTurnstileのような新世代の認証システムでは、ユーザー自身ではなくブラウザや端末環境が審査対象になります。

AIクローラーや自動化ボットの増加によって、ウェブサイト側が人間とボットを見分ける必要性は高まっていますが、一方でプライバシー保護のために端末情報を隠す行為が「人間らしくない」と判断される場面も増えつつあります。モニエ氏は、WebGLフィンガープリントへの依存が問題を引き起こしており、追跡の擁護は正当化できないと訴えました。

この記事のタイトルとURLをコピーする


ソース元はコチラ

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事