Cloudflare Turnstile, fingerprinting सक्षम WebGL की मांग
(hacktivis.me)- Cloudflare Turnstile का “Verify you're human” डिवाइस वेरिफिकेशन लगभग एक हफ्ते से WebKitGTK-आधारित ब्राउज़रों में अनंत लूप में फंस रहा है
- कई वेबसाइटों तक पहुंच रुकने का सीधा कारण यह लगता है कि Cloudflare WebGL के जरिए डिवाइस fingerprint लेने की कोशिश कर रहा है
- Turnstile का सूचना संदेश कहता है कि browser fingerprinting का उपयोग इंसान और बॉट में फर्क करने के लिए किया जाता है, और blocking या randomization tools ब्राउज़र को बॉट जैसा दिखा सकते हैं
- WebKit वर्षों से ऐसे फीचर्स को ब्लॉक करता आया है, और यह ऐसा privacy option नहीं लगता जिसे उपयोगकर्ता आसानी से बंद कर सके
- माना जा रहा है कि Safari के लिए अपवाद है, जबकि पूरे WebKitGTK ब्राउज़र परिवार को ब्लॉक किया जा रहा है, और Firefox की सुरक्षा सेटिंग्स इस्तेमाल करने वाले यूज़र भी प्रभावित हो सकते हैं
WebKitGTK में बार-बार होने वाला Turnstile वेरिफिकेशन
- Cloudflare Turnstile का “Verify you're human” डिवाइस वेरिफिकेशन लगभग एक हफ्ते से WebKitGTK-आधारित ब्राउज़रों में अनंत लूप में फंस रहा है, जिससे कई वेबसाइटों तक पहुंच रुक रही है
- पहुंच रुकने का कारण यह लगता है कि Cloudflare WebGL के जरिए डिवाइस fingerprint लेने की कोशिश कर रहा है
- Turnstile का सूचना संदेश बताता है कि browser fingerprinting का उपयोग इंसान होने की पुष्टि के लिए किया जाता है
- fingerprinting को ब्लॉक या randomize करने वाले privacy tools ब्राउज़र को पहचान छिपाने की कोशिश करने वाले बॉट जैसा दिखा सकते हैं
- WebKit वर्षों से ऐसे फीचर्स को ब्लॉक करता आया है, और यह ऐसा privacy feature नहीं लगता जिसे आसानी से disable किया जा सके
- माना जा रहा है कि Cloudflare ने Safari के लिए अपवाद रखा है, जबकि पूरे WebKitGTK ब्राउज़र परिवार को ब्लॉक किया जा रहा है
Firefox का संबंधित सुरक्षा व्यवहार
- Mozilla Firefox की WebGL fingerprinting सुरक्षा में Bugzilla#1916271: Gecko reveals sanitized GPU Characteristics; webkit and blink return hardcoded strings for all users समस्या मौजूद है
privacy.resistfingerprintingसेटिंग्स में “Strict” “Enhanced Privacy Protection” चुनने पर भी सक्रिय नहीं होताprivacy.resistfingerprintingको सीधे सक्रिय करने वाले privacy-केंद्रित Firefox उपयोगकर्ता भविष्य में Cloudflare के डिवाइस वेरिफिकेशन को पार नहीं कर पाने की आशंका रखते हैं
2 टिप्पणियां
Lobste.rs की राय
लगता है लेख में Firefox से जुड़ी कई अलग-अलग बातों को मिला दिया गया है। उस टीम में रह चुका हूँ जिसने यह काम सीधे किया था, इसलिए कह सकता हूँ कि Firefox fingerprinting defense कई तरीकों से काम करता है
पहला, Firefox WebGL vendor/renderer strings की जानकारी सीमित करता है, जिसमें तथाकथित “unmasked” strings भी शामिल हैं। इसे सीधे देखने के लिए उदाहरण code Fatih ने comment 14 में पोस्ट किया है। यह दावा कि इसने कुछ तोड़ दिया, पूरी तरह गलत है
दूसरा, Firefox canvas output को भी randomize करता है। उसी canvas पर
toDataURL()कॉल करने पर हर session में लौटने वाली value थोड़ी अलग होती है। उदाहरण के लिए, इसे private mode/normal mode या अलग-अलग container tabs में टेस्ट किया जा सकता हैतीसरा, ऊपर वाली सुविधा और दूसरी हाल की fingerprinting defense सुविधाएँ अनुभवजन्य analysis के आधार पर बनाई गई हैं ताकि वे web को तोड़े बिना प्रभावी ढंग से काम करें। इनमें से ज़्यादातर default रूप से लागू होती हैं, और अगर आप और चाहते हैं तो settings में “Enhanced Tracking Protection” को strict पर सेट कर सकते हैं
चौथा,
resistFingerprintingmode settings में नहीं है और सिर्फabout:configके ज़रिए उपलब्ध है, क्योंकि यह web को तोड़ सकता है, यह जाना-पहचाना तथ्य है। इसे Firefox fork Tor Browser के लिए छोड़ा गया है, लेकिन मेरी निजी राय में Enhanced Tracking Protection वाला protection कहीं बेहतर हैमैं fingerprint tracking का बचाव नहीं कर रहा, लेकिन अपने मौजूदा काम के एक हिस्से के कारण bot blocking tools में दिलचस्पी है
लगता है Cloudflare का Turnstile के साथ लक्ष्य ऐसा bot defense widget बनाना है जिसमें इंसानों को captcha हल न करना पड़े। शायद यह fingerprint tracking के ज़रिए कई sites पर behavior देखकर ज़्यादातर users को pass कर देता है; जानना चाहता हूँ कि क्या मेरी यह समझ सही है
क्या fingerprint tracking के बिना भी ऐसा widget संभव है जिसमें captcha solve न करना पड़े? क्या यह मूल रूप से संभव है? यह भी सुना है कि Turnstile को bypass करना इतना मुश्किल नहीं है :tm:. क्या सभी bot blocking widgets आखिरकार security through obscurity पर ही निर्भर होते हैं?
लोग कई अलग-अलग sites पर जा रहे हैं या नहीं, यह उतना महत्वपूर्ण नहीं है; असली बात यह पकड़ना है कि क्या वही actor उसी site पर बार-बार आ रहा है
fingerprint tracking के बिना captcha-free widget बनाने के लिए hardware attestation भी काम कर सकती है। लेकिन सबको यह नापसंद है। Apple hardware attestation देता है, और Cloudflare Safari में इसका उपयोग करता है, इसलिए Safari canvas randomization होने पर भी pass कर सकता है। इस blog post के उलट, ऐसा नहीं है कि Cloudflare ने Safari के लिए कोई special exception रखा है
proof of work भी माँगा जा सकता है, लेकिन तब आपको यह स्वीकार करना होगा कि केवल सस्ते Android phones वाले बहुत से web users बाहर हो जाएँगे, और यह भी कि individual bot actions की value इतनी कम हो कि bot operators के पास proof of work करने की आर्थिक प्रेरणा न हो। ये शर्तें कभी-कभी सही बैठती हैं, लेकिन shopping sites या banking जैसी जगहों पर नहीं
इसके अलावा कोई अच्छा हल नहीं है। मुझे Turnstile का खास पता नहीं, लेकिन जिस company के product पर मैं था, उसे बड़े पैमाने पर bypass करना निश्चित रूप से मुश्किल था। हाँ, अगर scale छोटा हो तो हमने जानबूझकर उसे बहुत कठिन नहीं बनाया था, और अगर Cloudflare ने भी यही चुनाव किया हो तो मुझे हैरानी नहीं होगी
सभी bot blocking widgets का लक्ष्य bots को असंभव बना देना नहीं, बल्कि website पर bot attack करना आर्थिक रूप से असंभव बना देना है। इसलिए यह दूसरे cyber security खेलों से अलग खेल है, और obscurity यहाँ काफ़ी अच्छी तरह काम करती है। लक्ष्य यह है कि समय के साथ भी सामने वाले की लागत बढ़ती रहे
canvas/webglfingerprint tracking web scrapers के लिए लगभग solved problem है। यह web scraping से जुड़ी job interviews में भी पूछा जाता हैआम तरीका drawing commands को extract करना है। इसके लिए ऐसा modified browser इस्तेमाल किया जा सकता है जो commands dump करे, या script को deobfuscate करके भी यह निकाला जा सकता है
फिर निकाले गए canvas/webgl scripts को अपनी site पर host कर दीजिए, और visitors से ऐसे fingerprints generate कराइए जिन्हें bots के लिए दोबारा इस्तेमाल किया जा सके
यह तरीका काफ़ी robust है। ऐसी fingerprinting scripts लगभग कभी बदलती नहीं हैं, क्योंकि इन्हें बदलने पर canvas → GPU/vendor/browser/OS pair database बेकार हो जाता है
संक्षेप में, यह एक और उदाहरण है जहाँ आम users को बस ज़्यादा असुविधा होती है, जबकि गंभीर web scrapers पहले से कई bypass strategies जानते हैं
Hacker News की राय
यह जाना जाता है कि Cloudflare scraper detection के लिए browser fingerprinting का इस्तेमाल करता है। उदाहरण के लिए, वह JA3 fingerprint को user agent से मिलाकर cURL जैसी चीज़ों को रोक सकता है और OkHttp (Android client) को अनुमति दे सकता है, लेकिन CycleTLS जैसे पैकेज से इसकी आसानी से नकल की जा सकती है [1]
मैं इसे सही नहीं ठहराना चाहता क्योंकि यह “bot protection” के नाम पर इंटरनेट के बड़े हिस्से को रोक देता है, लेकिन अगर proof of work (PoW) का इस्तेमाल नहीं किया जाए तो fingerprinting एक व्यावहारिक तरीका हो सकता है, और उसका नतीजा यह होता है कि इससे जुड़े सभी लोगों की privacy पूरी तरह बर्बाद हो जाती है
Android के लिए Chromium का privacy-focused fork Cromite लगातार Cloudflare Turnstile के साथ समस्या झेल रहा है [2], क्योंकि Cloudflare challenge पास कराने के लिए कई तरीकों से fingerprinting करता है
इसे हल करने के लिए Cloudflare Browser Developer program में शामिल होना पड़ता है, जिसके लिए NDA पर हस्ताक्षर करने होते हैं, और प्रोजेक्ट मैनेजर का इससे इनकार करना उचित लगता है
अगर आप देखना चाहते हैं कि Cloudflare browser fingerprinting में कितनी गहराई तक जाता है, तो issue [2] में देखिए कि challenge पास करने के लिए किन flags को बंद करना पड़ता है। कम-से-कम Cloudflare इतना लचीला तो हो सकता है कि लोगों को form submit करने या वेबसाइट access से सीधे ब्लॉक करने के बजाय इसे proof of work से बदल दे
[1]: https://github.com/Danny-Dasilva/CycleTLS
[2]: https://github.com/uazo/cromite/issues/2365
residential IP और commercial ranges को reputation देना भी मनचाहा नतीजा पाने का एक दूसरा तरीका हो सकता है। इससे providers IP abuse के बारे में कहीं ज़्यादा सावधान होंगे, लेकिन तब attackers और defenders दोनों तरफ़ के DDoS business साथ में ढह सकते हैं
विडंबना यह है कि काफ़ी कंपनियाँ अपने bot बना रही हैं और साथ ही दूसरी कंपनियों के bots को रोकने के तरीकों में भी निवेश कर रही हैं
5W का लोड 2 सेकंड देने पर 0.002Wh होता है, और smartphone को भी पास होना चाहिए, इसलिए कई दसियों सेकंड का proof of work नहीं कराया जा सकता। अगर दिन में 8 अरब checks हों, तब भी साल भर में यह 8GWh होगा
privacy.resistfingerprintingके “Strict” “Enhanced Privacy Protection” चुनने पर भी चालू न होने की वजह है। मैंने इसे लंबे समय तक चालू रखकर इस्तेमाल किया, लेकिन वेबसाइटें अजीब तरह से टूट जाती थीं, इसलिए मुझे इसे बार-बार बंद करना पड़ता था और workaround भी जोड़ने पड़ते थेकुछ साइटों पर timezone handling गड़बड़ा गई थी, जिससे मैं कई बार appointments मिस करते-मिस करते बचा। user को यह बताने के लिए कि Firefox खराब नहीं हुआ है, लगभग ऐसा स्थायी banner चाहिए होगा: “अगर वेबसाइट टूट जाए, अजीब glitches दिखें, आपके कंप्यूटर का समय गलत लगे, fonts अजीब दिखें, या वीडियो कभी-कभी न चले, तो fingerprint protection बंद करने के लिए यहाँ क्लिक करें”
दिलचस्प बात यह है कि Turnstile,
resistfingerprintingके साथ टूट जाता है लेकिनfingerprintingProtectionके साथ काम करता है। लगता है बाद वाला इस तरह की बेकार स्थिति को ध्यान में रखकर बनाया गया हैStrict setting में आप कुछ हद तक उम्मीद करते हैं कि साइटें टूट सकती हैं, लेकिन यह उम्मीद नहीं करते कि tracking path अभी भी पूरी तरह खुला रहेगा। यह भ्रामक लगता है
मैं एक niche browser maintain करता हूँ[0], और कुछ हफ्तों से कई users इस समस्या का सामना कर रहे हैं[1]। अभी मुझे यह browser bug नहीं लगता, लेकिन बेशक इससे जुड़ा कोई bug हो सकता है, और ज़्यादा लोग देखें तो अच्छा होगा, इसलिए स्थिति को बेहतर करने या कम करने के लिए ideas और मदद चाहिए
[0]: https://konform-browser.codeberg.page/
[1]: यह ज़्यादातर users हैं या सभी, पता नहीं। telemetry के बिना हम user reports और अपने testing पर निर्भर हैं
“अगर तुम्हारी disguise पकड़ ली गई, तो मतलब तुमने काफ़ी अच्छी disguise नहीं की।”
bots के खिलाफ यह बेहूदा युद्ध इंटरनेट के पतन की ओर ले जा रहा है, और आखिरकार इसे एक और walled garden बना देगा जहाँ सिर्फ “approved” user-hostile agents को ही अनुमति होगी। “AI scrapers” वाली इस बकवास में नहीं आना चाहिए। यह सिर्फ consent manufacture करने का एक तरीका है
क्या Google और Cloudflare ने non-Chrome browsers को इस्तेमाल करना मुश्किल बनाने के लिए कोई सौदा किया है? Chrome इस्तेमाल करने का दबाव बढ़ता जा रहा है, और Chrome में जो ad filtering की जा सकती है वह लगातार कम होती जा रही है
अगर आप कुछ छिपाते हैं, तो आपको अपने-आप “ऐसा agent जिसके पास छिपाने की वजह है” वाली श्रेणी में डाल दिया जाता है
साफ़ कहें तो यही मूल समस्या है। इंटरनेट का इतना बड़ा हिस्सा Cloudflare से होकर गुजरता है, इसलिए कोई एक खास signal से भी ज़्यादा मज़बूत वैकल्पिक signals होने चाहिए जो यह दिखा सकें कि आप malicious actor नहीं हैं
हालांकि, ऐसे settings इस्तेमाल करने वाले users ecosystem में बहुत कम हैं, इसलिए असली समाधान आने में बहुत लंबा समय लग सकता है
वे कहते हैं, “लगता है आप अपनी पहचान छिपाने की कोशिश कर रहे हैं”, लेकिन शुरू से ही उन्हें यह मांग करने का अधिकार नहीं था
मुझे
privacy.resistfingerprintingके बारे में पता नहीं था, लेकिन अब मैं सोच रहा हूँ कि आगे से हर Cloudflare Turnstile को fail होने दूँprivacy.resistfingerprintingsetting Tor Browser के लिए हैTor Browser के privacy और security patches का बड़ा हिस्सा लेने वाले Konform Browser और Mullvad Browser में भी यह default रूप से चालू रहती है
मुझे अपराध से जुड़ी वह कहावत पसंद है कि अगर आबादी का X% किसी कानून को तोड़ रहा है, तो उस कानून को खत्म कर देना चाहिए। recreational drugs इसका साफ़ उदाहरण हैं
अगर random canvas handling को bot behavior मानकर कार्रवाई की गई थी, लेकिन अब Firefox इस्तेमाल करने वाला हर व्यक्ति वही कर रहा है, तो क्या Cloudflare को भी इसे बस “कानूनी” नहीं मान लेना चाहिए?