- Verifikasi perangkat “Verify you're human” dari Cloudflare Turnstile terus berulang tanpa henti sejak sekitar seminggu lalu di browser berbasis WebKitGTK
- Penyebab langsung yang memblokir akses ke banyak situs tampaknya adalah perilaku Cloudflare yang mencoba memperoleh sidik jari perangkat melalui WebGL
- Panduan Turnstile menyatakan bahwa pengambilan sidik jari browser digunakan untuk memeriksa apakah pengguna adalah manusia, dan alat pemblokiran atau pengacakan dapat membuat pengguna tampak seperti bot
- WebKit telah memblokir fungsi semacam ini selama bertahun-tahun, dan ini tampaknya bukan opsi privasi yang bisa dimatikan pengguna dengan mudah
- Sementara Safari diduga mendapat pengecualian, seluruh browser WebKitGTK diblokir, dan pengguna Firefox dengan pengaturan perlindungan tertentu juga bisa terdampak
Verifikasi Turnstile yang Berulang di WebKitGTK
- Verifikasi perangkat “Verify you're human” dari Cloudflare Turnstile terus berulang tanpa henti sejak sekitar seminggu lalu di browser berbasis WebKitGTK, sehingga memblokir akses ke banyak situs
- Penyebab pemblokiran akses tampaknya adalah perilaku Cloudflare yang mencoba memperoleh sidik jari perangkat melalui WebGL
- Teks panduan Turnstile menyatakan bahwa pengambilan sidik jari browser digunakan untuk memeriksa apakah pengguna adalah manusia
- Alat privasi yang memblokir atau mengacak sidik jari dapat membuat browser tampak seperti bot yang mencoba menyembunyikan identitasnya
- WebKit telah memblokir fungsi semacam ini selama bertahun-tahun, dan ini tampaknya bukan fitur privasi yang bisa dinonaktifkan dengan mudah
- Sementara Cloudflare diduga memberi pengecualian untuk Safari, seluruh browser WebKitGTK justru berada dalam kondisi diblokir
Perilaku Perlindungan Terkait di Firefox
- Perlindungan pengambilan sidik jari WebGL di Mozilla Firefox memiliki masalah Bugzilla#1916271: Gecko reveals sanitized GPU Characteristics; webkit and blink return hardcoded strings for all users
privacy.resistfingerprintingtidak aktif meskipun memilih “Strict” “Enhanced Privacy Protection” di pengaturan- Pengguna Firefox yang berfokus pada privasi dan mengaktifkan
privacy.resistfingerprintingsecara manual kemungkinan tidak akan dapat melewati verifikasi perangkat Cloudflare di masa depan
2 komentar
Opini Lobste.rs
Sepertinya artikel itu mencampuradukkan beberapa hal tentang Firefox. Dari sudut pandang seseorang yang pernah berada di tim yang mengerjakan ini secara langsung, perlindungan fingerprinting Firefox bekerja dengan beberapa cara
Pertama, Firefox membatasi informasi dalam string vendor/renderer WebGL, termasuk string yang disebut “unmasked”. Contoh kode untuk memeriksanya secara langsung sudah diposting Fatih di comment 14. Klaim bahwa ini merusak sesuatu sepenuhnya salah
Kedua, Firefox juga mengacak output canvas. Jika Anda memanggil
toDataURL()pada canvas yang sama, nilai yang dikembalikan akan sedikit berbeda di setiap sesi. Misalnya, ini bisa diuji antara mode private/biasa atau di container tabs yang berbedaKetiga, fitur di atas dan fitur perlindungan fingerprinting terbaru lainnya dibuat berdasarkan analisis empiris agar bekerja efektif tanpa merusak web. Sebagian besar aktif secara default, dan jika ingin lebih, Anda bisa mengubah “Enhanced Tracking Protection” menjadi strict di pengaturan
Keempat, mode
resistFingerprintingtidak ada di pengaturan dan hanya bisa diakses lewatabout:config, karena diketahui bisa merusak web. Fitur itu masih dipertahankan untuk Tor Browser, yang merupakan fork Firefox, tetapi secara pribadi saya menilai perlindungan dari Enhanced Tracking Protection jauh lebih baikBukan bermaksud membela fingerprinting, tetapi sebagian pekerjaan saya saat ini membuat saya tertarik pada alat pemblokir bot
Sasaran Cloudflare dengan Turnstile tampaknya adalah membuat widget pertahanan bot yang tidak mengharuskan manusia memecahkan CAPTCHA. Mungkin caranya dengan mengamati perilaku di banyak situs melalui fingerprinting lalu meloloskan sebagian besar pengguna; saya penasaran apakah pemahaman ini benar
Apakah mungkin membuat widget tanpa CAPTCHA yang tidak bergantung pada fingerprinting? Apakah ini memang memungkinkan sejak awal? Saya juga pernah dengar bahwa melewati Turnstile tidak terlalu sulit :tm:. Apakah semua widget pemblokir bot pada akhirnya hanya bisa menjadi keamanan yang bergantung pada obscurity?
Apakah pengguna berkeliling ke banyak situs tidak terlalu penting; yang utama adalah mendeteksi apakah ia mengakses situs yang sama berulang kali
Untuk membuat widget tanpa CAPTCHA tanpa fingerprinting, attestasi perangkat keras juga bisa bekerja. Namun semua orang membencinya. Apple menyediakan attestasi perangkat keras, dan karena Cloudflare menggunakannya di Safari, Safari tetap bisa lolos meskipun melakukan pengacakan canvas. Tidak seperti yang disiratkan posting blog itu, ini bukan berarti Cloudflare memberi pengecualian khusus untuk Safari
Anda juga bisa mewajibkan proof of work, tetapi itu hanya masuk akal jika tidak masalah mengecualikan banyak pengguna web yang hanya punya ponsel Android murah, dan jika nilai dari tiap tindakan bot cukup rendah sehingga operator bot tidak punya insentif untuk menjalankan proof of work. Kondisi seperti ini kadang terpenuhi, tetapi tidak cocok untuk toko online atau bank
Selain itu, tidak ada solusi yang bagus. Saya tidak terlalu tahu soal Turnstile, tetapi produk perusahaan tempat saya dulu bekerja jelas sulit dilewati dalam skala besar. Namun jika skalanya tidak besar, kami memang tidak sengaja membuatnya terlalu sulit, dan saya tidak akan terkejut jika Cloudflare membuat pilihan yang sama
Tujuan semua widget pemblokir bot bukanlah membuat bot menjadi mustahil, melainkan membuat penyerangan situs web dengan bot menjadi tidak layak secara ekonomi. Karena itu permainannya berbeda dari keamanan siber lain, dan obscurity bekerja cukup baik. Tujuannya adalah memastikan pihak lawan harus terus mengeluarkan biaya tambahan seiring waktu
canvas/webglpada praktiknya adalah masalah yang sudah terselesaikan bagi web scraper. Ini bahkan muncul sebagai pertanyaan wawancara kerja terkait web scrapingSolusi yang umum adalah mengekstrak perintah-perintah rendering. Itu bisa dilakukan dengan memakai browser yang dimodifikasi untuk membuang perintah, atau dengan mendeobfuscasi skrip untuk mendapatkannya
Setelah itu, skrip canvas/webgl yang diekstrak bisa diunggah ke situs milik sendiri untuk menghasilkan fingerprint dari para pengunjung, lalu digunakan ulang oleh bot
Pendekatan ini cukup kokoh. Skrip fingerprinting semacam ini hampir tidak pernah berubah, karena jika diubah maka basis data pasangan canvas → GPU/vendor/browser/OS akan menjadi tidak valid
Singkatnya, ini hanyalah satu lagi contoh yang membuat pengguna biasa makin tidak nyaman, sementara web scraper yang serius sudah mengetahui berbagai strategi bypass
Komentar Hacker News
Cloudflare diketahui menggunakan pengambilan sidik jari browser untuk mendeteksi scraper. Misalnya, sidik jari JA3 dicocokkan dengan user agent untuk memblokir hal seperti cURL dan mengizinkan OkHttp (klien Android), tetapi ini mudah disamarkan dengan paket seperti CycleTLS [1]
Saya tidak ingin membelanya karena mereka menghalangi sebagian besar internet atas nama “perlindungan bot”, tetapi jika tidak menggunakan proof-of-work (PoW), pengambilan sidik jari mungkin menjadi metode yang realistis, dan akibatnya privasi semua pihak yang terkait jadi benar-benar hancur
Cromite, fork Chromium untuk Android yang berfokus pada privasi, terus bermasalah dengan Cloudflare Turnstile [2], karena Cloudflare mengambil sidik jari dengan berbagai cara agar challenge bisa lolos
Untuk menyelesaikannya, harus masuk ke program Cloudflare Browser Developer, tetapi itu memerlukan penandatanganan NDA, dan penolakan pengelola proyek tampak masuk akal
Kalau ingin melihat seberapa dalam Cloudflare menggali sidik jari browser, lihat saja di isu [2] flag apa saja yang harus dimatikan agar challenge bisa lolos. Paling tidak, saya rasa Cloudflare bisa cukup fleksibel untuk mengganti dengan proof-of-work alih-alih langsung memblokir orang saat mengirim formulir atau mengakses situs web
[1]: https://github.com/Danny-Dasilva/CycleTLS
[2]: https://github.com/uazo/cromite/issues/2365
Memberi reputasi pada IP rumahan dan rentang komersial juga bisa menjadi cara lain untuk mendapatkan hasil yang diinginkan. Itu akan membuat operator jauh lebih berhati-hati terhadap penyalahgunaan IP, tetapi kalau begitu bisnis DDoS di pihak penyerang maupun pembela bisa sama-sama runtuh
Ironisnya, ada cukup banyak perusahaan yang membangun bot sendiri sambil berinvestasi dalam cara memblokir bot perusahaan lain
Beban 5W selama 2 detik adalah 0,002Wh, dan karena ponsel juga harus bisa lolos, kita tidak mungkin memaksa proof-of-work selama puluhan detik. Bahkan jika ada 8 miliar pemeriksaan per hari selama 1 tahun, itu tetap 8GWh
Ada alasan mengapa
privacy.resistfingerprintingtidak diaktifkan meskipun Anda memilih “Strict” “Enhanced Privacy Protection”. Saya pernah mengaktifkannya cukup lama, tetapi situs web sering rusak aneh sehingga saya terus harus mematikannya dan menambahkan pengecualianPenanganan zona waktu di situs tertentu jadi kacau sampai saya hampir beberapa kali melewatkan janji. Untuk memberi tahu pengguna bahwa Firefox bukan yang rusak, rasanya perlu banner permanen seperti “Jika situs web rusak, muncul glitch aneh, waktu komputer salah, font terlihat aneh, atau video kadang tidak keluar, klik di sini untuk mematikan perlindungan sidik jari”
Menariknya, Turnstile rusak pada
resistfingerprinting, tetapi berfungsi padafingerprintingProtection. Yang terakhir tampaknya memang mempertimbangkan situasi buruk seperti iniPada pengaturan Strict, saya memang memperkirakan situs bisa rusak sampai tingkat tertentu, tetapi saya tidak menyangka jalur pelacakan masih dibiarkan terbuka lebar. Terasa menipu
Saya memelihara browser minor [0], dan sejak beberapa minggu lalu beberapa pengguna mengalami masalah ini [1]. Saat ini saya tidak menganggapnya sebagai bug browser, tetapi tentu saja bisa saja ada bug terkait, dan akan bagus jika lebih banyak orang melihat ini; saya butuh ide dan bantuan untuk memperbaiki atau mengurangi situasinya
[0]: https://konform-browser.codeberg.page/
[1]: Saya tidak tahu apakah ini mayoritas atau semuanya. Saat ini kami mengandalkan laporan pengguna dan pengujian sendiri tanpa telemetri
“Kalau ketahuan menyamar, berarti penyamaranmu belum cukup serius.”
Perang melawan bot yang bodoh ini akan membawa internet menuju keruntuhan, dan pada akhirnya menjadikannya taman tertutup lain yang hanya mengizinkan agen yang “disetujui” dan memusuhi pengguna. Jangan termakan omong kosong tentang “scraper AI”. Itu cuma alat untuk merekayasa persetujuan
Apakah Google dan Cloudflare membuat semacam kesepakatan untuk mempersulit penggunaan browser non-Chrome? Tekanan untuk memakai Chrome terus meningkat, dan pemfilteran iklan yang bisa dilakukan di Chrome terus berkurang
Jika Anda menyembunyikan sesuatu, Anda otomatis diklasifikasikan sebagai “agen yang punya alasan untuk menyembunyikan sesuatu”
Sejujurnya, itulah inti masalahnya. Karena begitu banyak bagian internet melewati Cloudflare, seharusnya ada cukup banyak sinyal alternatif untuk menunjukkan bahwa seseorang bukan pelaku jahat, bukan bergantung terlalu kuat pada satu sinyal tertentu
Hanya saja, karena hampir tidak ada pengguna dalam basis mereka yang memakai pengaturan yang sama, solusi nyata mungkin butuh waktu sangat lama untuk muncul
Mereka berkata, “Anda tampaknya mencoba menyembunyikan identitas,” tetapi sejak awal mereka memang tidak punya hak untuk menuntut itu
Saya tidak tahu soal
privacy.resistfingerprinting, sekarang saya berniat membiarkan semua Cloudflare Turnstile gagalPengaturan
privacy.resistfingerprintingitu ditujukan untuk Tor BrowserItu juga aktif secara default di Konform Browser dan Mullvad Browser, yang mengambil banyak patch privasi dan keamanan dari Tor Browser
Ada pepatah tentang kriminalitas yang saya suka: kalau X% dari populasi melanggar suatu hukum, berarti hukum itu seharusnya dihapus. Narkoba rekreasional adalah contoh yang jelas
Jika pemrosesan canvas acak dulu ditindak sebagai perilaku bot, tetapi sekarang semua pengguna Firefox melakukannya, mungkin Cloudflare juga seharusnya cukup “melegalkannya”