1 पॉइंट द्वारा GN⁺ 2025-07-13 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Chrome के MV3 अपडेट ने मौजूदा adblockers की क्षमता कमज़ोर करने के लिए webRequestBlocking permission को हटा दिया
  • लेखक ने MV3 environment में भी webRequestBlocking को बायपास करने वाला एक bug 2023 में खोजा
  • यह bug JavaScript bindings की ढीली संरचना और पुराने code के जस का तस बचे रहने की वजह से पैदा हुआ
  • WebView instance ID में हेरफेर करके permission check को बायपास किया जा सकता था, जिससे MV3 environment में भी blocking feature इस्तेमाल किया जा सकता था
  • अब patch लागू हो चुका है, इसलिए यह बायपास तरीका अब काम नहीं करता

MV3 और adblocker में बदलाव

  • Chrome ने MV2 extensions को चरणबद्ध तरीके से बंद करना शुरू किया और उनकी जगह MV3 में migration आगे बढ़ाया
  • MV3 ने webRequestBlocking permission हटा दिया, ताकि adblockers network requests को script के ज़रिए dynamically block न कर सकें
  • इस permission की जगह declarativeNetRequest API जोड़ी गई, लेकिन यह उसी स्तर की flexibility सपोर्ट नहीं करती
  • इस बदलाव की वजह से adblockers की क्षमता काफ़ी घटने लगी

JavaScript binding संरचना की सीमाएँ

  • Chrome का core C++ में बना है, लेकिन extensions JavaScript पर चलते हैं, और extension APIs तक पहुँच भी JS bindings के ज़रिए होती है
  • 2015~2016 तक API initialization और validation के लिए साइट में JS files (extension binding modules) inject की जाती थीं
    • यह तरीका JS global functions और prototype overriding के प्रति कमज़ोर था, इसलिए Universal XSS bugs के कई मामले सामने आए
  • बाद में Google ने मुख्य bindings को C++ में migrate किया, लेकिन कुछ JS binding files अब भी बची हुई हैं
  • आज भी chrome.webRequest जैसी कुछ APIs JS binding संरचना का इस्तेमाल करती हैं

web request event class का इस्तेमाल कर बायपास

  • MV2 में web request blocking नीचे दिए गए code से लागू किया जा सकता था

    chrome.webRequest.onBeforeRequest.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • MV3 में blocking option प्रतिबंधित है, इसलिए सामान्य तरीके से block करना संभव नहीं है

  • लेकिन webRequest event के .constructor के ज़रिए मनचाहा event object बनाया जा सकता है

  • अंदरूनी रूप से JS binding की एक special wrapper class इस event object को संभालती है

  • constructor parameters में से एक opt_webViewInstanceId देने पर platform app-केवल allow logic को बायपास करके blocking permission check को पार किया जा सकता था

    let WebRequestEvent = chrome.webRequest.onBeforeRequest.constructor
    let fakeEvent = new WebRequestEvent("webRequest.onBeforeRequest", 0, 0, 0, 1337)
    
    fakeEvent.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • इसे मूल रूप से सिर्फ platform apps के लिए डिज़ाइन किया गया था, लेकिन WebView ID validation कमज़ोर होने की वजह से सामान्य extensions भी इसका दुरुपयोग कर सकते थे

नतीजे और security patch

  • इस vulnerability की वजह से MV3 environment में भी व्यवहारिक रूप से पूरी क्षमता वाला adblocker बनाना संभव था
  • लेखक ने यह bug 2023 में Google को report किया, और Chrome 118 में इसे इस तरह patch किया गया कि WebView permission ownership को सही ढंग से verify किया जा सके
  • कोई bounty नहीं दी गई, क्योंकि इस संरचना में अतिरिक्त data exposure के बिना सिर्फ permission bypass ही संभव था
  • यह मामला दिखाता है कि कुछ दर्जन lines के code changes किसी बड़े enterprise के security update को निष्प्रभावी कर सकते हैं

निष्कर्ष और संदर्भ

  • यह bug अब patch हो चुका है और अब काम नहीं करता
  • इसी तरह दिलचस्प Chrome extension vulnerabilities के उदाहरणों में एक ऐसा issue भी है जिसे वास्तव में CVE number और $10,000 reward मिला था (अलग blog post देखें)

4 टिप्पणियां

 
hhcrux 2025-07-14

शायद उस अपडेट के बाद adblock कंपनियों की कमाई और बढ़ी होगी।
जो standalone apps नेटवर्क स्तर पर ही इसे ब्लॉक कर देते हैं, वे सिर्फ़ paid रूप में इस्तेमाल किए जा सकते हैं, इसलिए शायद वे भी काफ़ी बिके होंगे।

 
crawler 2025-07-14

2 साल बाद ऐसी vulnerability पोस्ट करना जिसका अब कोई मतलब ही नहीं रहा, और फिर यह खास तौर पर कहना कि इसके पैसे नहीं मिले... निजी तौर पर यह मुझे ज़्यादा cool नहीं लगता।
लेकिन शायद ऐसी बातें भी ब्लॉग पर लिखनी पड़ती हैं ताकि अपनी value साबित की जा सके?
सच कहूँ तो मैं भी ऐसी mindset सीखकर ब्लॉग पर बहुत ज़्यादा लिखना चाहता हूँ।

 
ndrgrd 2025-07-14

बस Firefox इस्तेमाल कीजिए। पिछले 1–2 सालों में यह काफ़ी तेज़ हुआ है, इसलिए बुरा नहीं है।
मैं कई सालों से Firefox को अपने main browser के रूप में इस्तेमाल कर रहा हूँ और बीच-बीच में Chrome से तुलना भी करता हूँ; खासकर हाल में मुझे लगने लगा है कि Firefox अब काफ़ी उपयोगी हो गया है।
कोरिया के बैंकों जैसी web pages, जो web standards को नज़रअंदाज़ करती थीं, वे भी हाल के दिनों में काफ़ी सुधरी हैं, इसलिए अब ज़्यादातर Firefox में भी अच्छी तरह काम करती हैं।
Customization भी Firefox में कहीं ज़्यादा आसान है।

 
GN⁺ 2025-07-13
Hacker News राय
  • मैं Firefox को एक बार आज़माना चाहता हूँ, लेकिन कभी-कभार होने वाले वेबसाइट लोडिंग बग और PWA (Progressive Web Apps) इंस्टॉल न कर पाने की कमी सबसे बड़ी रुकावट है। Chrome और उसके परिवार के ब्राउज़र बहुत पहले से यह फीचर सपोर्ट करते रहे हैं, लेकिन Firefox ने अभी तक इसे क्यों लागू नहीं किया, यह समझ नहीं आता। एक third-party extension (PWAs for Firefox) मिला था, लेकिन privacy के लिहाज़ से उसे इस्तेमाल करने में हिचकिचाहट है

  • Google के व्यवहार को bypass करने का कोई तरीका हो भी, तब भी मुझे नहीं लगता कि वह सही दिशा है। अगर लोग Google की चालों से सहमत नहीं हैं, तो Chrome और Chromium-आधारित सभी ब्राउज़र छोड़ देना ही एकमात्र सही तरीका है। Google के monopoly को चोट पहुँचाकर वेब के भविष्य की दिशा पर उसका नियंत्रण छीनना ज़रूरी है

    • मुझे लगता है कि आज का यह monopoly इस वजह से है कि सब लोग वह सबक भूल गए जो IE से सीखना चाहिए था। Web standards सीखे बिना Chrome को application के साथ bundle करके बाँटना ही इसकी वजह है
    • लेख का सार यह नहीं है; असली लेख में कहा गया है कि यह bypass Chrome 118 में patch कर दिया गया था
    • "monopoly को चोट पहुँचानी चाहिए" कहने से क्या कभी सच में कुछ बदला है, यह ताना मारने का मन करता है
    • वास्तविकता में ऐसा होने वाला नहीं है
    • बहुत से लोग मानते हैं कि Google tracking हटाए गए Chromium ब्राउज़र पर चले जाना काफी नहीं है, लेकिन मुझे लगता है कि यह वही framing है जो Google चाहता है। Firefox, Chrome से सचमुच अलग है और Chrome से उस पर जाना आसान नहीं। दूसरी तरफ Brave, custom Chromium, Vivaldi वगैरह Google tracking के बिना लगभग Chrome जैसे ही हैं। "Google अब भी Chromium को नियंत्रित करता है, इसलिए यह ठीक नहीं" — मुझे तो यह वही FUD (fear, uncertainty, doubt) लगता है जिसे Google अपने पक्ष में फैलाना चाहेगा
  • असली bypass तो Firefox इस्तेमाल करना है। uBlock Origin, Firefox पर सबसे अच्छा काम करता है
    uBlock Origin works best on Firefox

    • मैं हमेशा Firefox ही इस्तेमाल करता आया हूँ, इसलिए मुझे पता ही नहीं था कि ऐसा कुछ हो रहा है। पत्नी ने कहा कि उसे YouTube पर ads दिख रहे हैं, तब देखा कि मैंने पहले uBlock इंस्टॉल किया था, फिर भी ऐसा हो रहा था
  • मुझे शक है कि Google का MV3, MV2 से सच में ज़्यादा सुरक्षित भी है या नहीं। सिर्फ MV3 पर बदल देने से मूल रूप से security बेहतर हो जाती है, ऐसा नहीं लगता

    • सच कहूँ तो मुझे हैरानी होती है कि क्या कोई इसे सच में मानता भी है। लेख खुद एक साफ़ conflict of interest के साथ शुरू होता है। किसी extension को यह जानने देना कि user किन sites पर जाता है और क्या requests कर रहा है, निश्चित ही एक कमजोर माहौल है। फिर भी, मैं ad companies और data collectors की तुलना में uBO पर ज़्यादा भरोसा करता हूँ, इसलिए फिलहाल उसी तरह इस्तेमाल कर रहा हूँ
  • किसी ने adblocker bypass ढूँढकर Google को बता दिया, इस पर प्रतिक्रिया है: “ढूँढते ही Google के पास चुगली कर दी, कमाल है”

    • सच तो यह है कि अगर adblocker ने इसका इस्तेमाल शुरू कर दिया होता, तो Google ने इसे तुरंत patch कर दिया होता, और उस developer को कोई फायदा नहीं मिलता। विडंबना यह है कि अंत में उसे फिर भी कुछ नहीं मिलता
  • OP ने Google को एक ऐसा “issue” रिपोर्ट कर दिया जिसमें Google के लिए कोई समस्या ही नहीं थी, और इस तरह addon developer के लिए MV3 restrictions को bypass करने का रास्ता बंद कर दिया। उम्मीद है इसकी कीमत $0 रही होगी

    • ऐसा bypass ज़्यादा से ज़्यादा एक दिन के भीतर Google द्वारा हटा दिया जाता। उल्टा OP को शायद पैसों का reward मिल सकता था, इसलिए मेरे हिसाब से यह करना जायज़ था। मैं उसे दोष नहीं देना चाहता
    • मैं इस निष्कर्ष से सहमत नहीं हूँ। पूरी ज़िम्मेदारी Google की है। अगर OP ने issue रिपोर्ट नहीं किया होता, तब भी बाद में कोई दूसरा adblocker इस तरीके का इस्तेमाल करता तो Google इसे जल्दी ही बंद कर देता। शायद वह उस extension को Web Store से पूरी तरह हटाने जैसा कड़ा कदम भी उठाता
    • अगर कोई adblocker जिसे लोग सच में इस्तेमाल कर रहे थे, इस तरीके को लागू कर देता, तो Google ने जाहिर है तुरंत इसे रोक दिया होता। यह कोई अनंत समय तक चलने वाली cheat key नहीं थी
    • मैं भी यही सोचता हूँ। OP ने एक बड़ी कंपनी के लिए मुफ्त में काम कर दिया और नतीजे में वेब अनुभव को और खराब बना दिया। वजह क्या होगी... "security" के नाम पर, शायद। कमाल है
  • Brave इस्तेमाल करना शुरू करने के बाद से Chrome की बिल्कुल याद नहीं आती
    Brave

    • उल्टा Brave, Chrome से भी ज़्यादा असुविधाजनक है। Brendan Eich की समस्या अपनी जगह, लेकिन ब्राउज़र के अंदर तरह-तरह के मनमाने फीचर्स, ad blocking (Brave Shields) को पूरी तरह बंद भी नहीं कर सकते, cryptocurrency से जुड़े हिस्से, बंद न किए जा सकने वाले webapp download buttons, हटाए न जा सकने वाले UI — बहुत सारा कचरा भरा हुआ है
    • Brave अब भी एक for-profit कंपनी है, और डिफ़ॉल्ट रूप से उसमें बहुत सारे अनावश्यक फीचर्स ठूँस दिए गए हैं, इसलिए उससे असहज होना स्वाभाविक है। लेकिन "Brave को diet पर कैसे रखें" जैसी settings को slim करने वाली टिप्स भी कम नहीं हैं
    • इंजन आखिरकार Blink ही है, इसलिए बस ऊपर की सजावट बदली है। Manifest V2 को बनाए रखने वाला कोई Blink ब्राउज़र मैंने नहीं देखा। अगर है भी, तो वह soft fork होगा और ज़्यादा समय नहीं टिकेगा
    • Brave भी आखिर Chromium-आधारित है, इसलिए असल में Chrome जैसा ही है। Manifest V3 आखिर लागू होकर रहेगा
    • Brave ब्राउज़र का इस्तेमाल न करने वाली आलोचनात्मक राय भी है
      Stop using Brave browser
  • "adblocker को webRequestBlocking ज़रूरी है, और Google ads से कमाता है इसलिए इस फीचर को हटाना बहुत जानबूझकर किया गया कदम है" — इस दावे के जवाब में यह राय भी है: "यह सही नहीं है; कोई भी Chrome और manifest v3 पर uBlock Origin Lite इस्तेमाल कर सकता है, इसकी performance अच्छी है और मुझे पुराने uBlock Origin से कोई फर्क महसूस नहीं होता। सब कुछ C++ में filter होता है इसलिए यह बहुत तेज़ है। हाँ, rules की maximum limit है, लेकिन अभी के लिए वह काफ़ी संभालने लायक है"

    • लेकिन Lite, आखिर Lite ही है, इसलिए इसकी संभावनाएँ सीमित हैं। वह अपने आप में मूल adblocker जैसा नहीं है, इसलिए पूरी तरह वही नहीं हो सकता
  • काम के laptop के अलावा Chrome इस्तेमाल करने की नौबत नहीं आती, और सामान्यतः मैं Firefox ही इस्तेमाल करता हूँ। फिर भी, काम के दौरान web surfing (research, documents वगैरह) में मदद करने वाला uBlock Origin इस्तेमाल न कर पाना खलेगा

  • अगर बस bypass चाहिए, तो Firefox इंस्टॉल कर लो

    • मुझे लगता है Firefox न web browser के रूप में खास है, न base के रूप में। अफ़सोस है कि Zen ने Chromium इस्तेमाल नहीं किया