PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

Cloudflare TurnstileがWebGLの“指紋”を要求してくる話

キーポイント

何が起きているのか

この記事が扱っているのは、Cloudflareの Turnstile という仕組みです。
これはサイト側が「あなたは人間ですか?」を確認するための device verification、つまりボット対策の一種です。

ただ、筆者の環境ではこの Turnstile がずっと回り続けて終わらない状態になってしまい、結果としていくつものWebサイトにアクセスできなくなったそうです。
これ、地味にかなり痛いです。ログイン画面でも決済画面でも、こういう認証が止まるとユーザーはただの巻き添えですからね。

原因として筆者がたどり着いたのは、Cloudflareが WebGL を使って端末の fingerprinting を求めていることでした。

fingerprinting って何?

ざっくり言うと、ブラウザや端末の細かい特徴を集めて「この人の端末っぽい」と見分ける技術です。
Cookie を消しても、設定やGPUの特徴などから“なんとなく同じ端末”を推測できるのが厄介なところです。

WebGL は本来、ブラウザ上で3D描画をするための仕組みですが、GPUの種類や描画結果の差が手がかりになるので、​fingerprinting に悪用されやすいんですね。
筆者はここをかなり強く問題視していて、「これをやる理由は追跡以外にない」と切り捨てています。これはかなり率直で、たしかにそう見える面はあると思います。

Turnstileの説明文がかなり露骨

元記事には、Cloudflare側の説明として次の趣旨の文が引用されています。

image_0001.png

これ、かなり強い言い方です。
要するに Cloudflare は「匿名化やプライバシー保護をしている人は、bot に見えるので通しにくい」と言っているわけです。

個人的には、ここがこの話のいちばん嫌なところだと思います。
“人間らしさ”の証明を、プライバシーを削ってやらせる構図になっているからです。しかも、その判定がうまくいかなければ正当な利用者まで締め出す。便利さと監視がセットになっている感じで、あまり気持ちのいい設計ではありません。

WebKitGTK が締め出された、という見方

筆者によると、こうした fingerprinting は WebKit 側では以前からブロックされているそうです。
WebKit は Apple の Safari でも使われているレンダリングエンジンで、WebKitGTK はその Linux 向け実装です。

つまり筆者の見立てでは、Cloudflare の Turnstile は WebKitGTK ブラウザを事実上弾いていることになります。
Safari は例外扱いが入っているのでは、と筆者は推測しています。

ここはかなり面白いポイントです。
「プライバシー保護が強いブラウザを守る仕組み」が、結果として「そのブラウザでは通れないWebサイト」を生む。
防御が強いと利用できない、というのは技術の世界でよくある話ですが、これが認証や可用性のレベルで起きると、なかなか笑えません。

Firefox は大丈夫なのか?

記事ではついでに、Mozilla Firefox の WebGL fingerprinting 防止についても触れています。
筆者は、Firefox がこのあたりでうまくやれていないと見ています。

具体的には、Bugzilla の報告として
Gecko reveals sanitized GPU Characteristics; webkit and blink return hardcoded strings for all users
という件が挙げられています。

用語をかみ砕くと、

image_0003.png

という話です。
つまり、WebKit や Blink では「みんな同じ情報」にして fingerprinting しにくくしているのに、Firefox ではその処理が中途半端に見える、という指摘です。

さらに筆者は、Firefox の設定である privacy.resistfingerprinting が、設定画面で「Strict」の Enhanced Privacy Protection を選んでも有効になっていないと不満を述べています。
これはかなり皮肉な話で、​プライバシー重視をうたうブラウザなのに、肝心の保護機能がデフォルトでは前面に出ていないわけです。

ただし、筆者は同時に「もしこれが有効だと、今後は Cloudflare の device verification を通れない Firefox ユーザーが出るかもしれない」とも示唆しています。
ここは難しいところで、プライバシー保護を強めるほど、Web 側の“普通の人認定”から外れてしまう。
この摩擦は、今後もっと増えるのではないかと思います。

この問題の本質

この件、単なる「Cloudflare が嫌い」という話ではなくて、もっと大きな問題が見えます。

1. セキュリティとプライバシーが衝突している

bot 対策は必要です。そこは否定しにくいです。
でも、そのやり方が fingerprinting 依存になってしまうと、​プライバシーを守る人ほど不利になります。

2. ユーザーの選択肢が減る

WebKitGTK を使っている人や、fingerprinting を抑える設定にしている人が、サイトに入れない。
これはつまり、​​「どのブラウザを使うか」でウェブの見え方が変わるということです。ウェブ本来の開放性からすると、かなり息苦しいです。

image_0004.png

3. “人間確認”が実質的な追跡になる

Turnstile は表向きには bot 対策ですが、fingerprinting を使うなら話は変わります。
人間かどうかの判定と引き換えに、端末の識別を許してしまうからです。
筆者が「tracking 以外の理由はない」と強く言うのも、完全には言い過ぎだとは思えません。

個人的な感想

個人的には、この記事はかなり重要だと思います。
なぜかというと、こういう問題は「一部の変わったブラウザの不具合」で片付けられがちですが、実際にはWeb の入口を誰がコントロールするのかという話だからです。

Cloudflare は多くのサイトの前段にいるので、そこで採用される判定ロジックは、ほぼ“インフラのルール”になります。
つまり、一企業の判断がそのまま「通れる人/通れない人」を作ってしまう。これはなかなか強い力です。

そして厄介なのは、利用者から見ると「ページがずっと回って終わらない」だけで、原因が見えにくいこと。
不親切というより、​不可視の差別に近い感じすらあります。言い過ぎかもしれませんが、少なくとも“透明なUX”ではありません。

まとめ

この元記事は、Cloudflare Turnstile が一部ブラウザで動かない原因として、​WebGL を使った fingerprinting 要求に注目したものです。
筆者はそれを、プライバシー保護への配慮ではなく、実質的な追跡機能だと批判しています。

技術的には「ボット対策」の話ですが、見えてくるのはそれだけではありません。
プライバシーを守るブラウザほど不利になる、というWebのちょっとイヤな現実です。
便利さの代償として何を差し出しているのか、改めて考えさせられる記事でした。


参考: Cloudflare Turnstile requiring fingerprintable WebGL

同じ著者の記事