2 पॉइंट द्वारा GN⁺ 2023-08-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Little Rat एक छोटा Chrome एक्सटेंशन है जो दूसरे Chrome एक्सटेंशन प्रोग्रामों के नेटवर्क कॉल मॉनिटर करता है और ज़रूरत पड़ने पर उन्हें ब्लॉक भी कर सकता है
  • दूसरे एक्सटेंशन प्रोग्रामों के ट्रैफ़िक को detect और block करने के लिए chrome://flags/#extensions-on-chrome-urls में extensions-on-chrome-urls फ्लैग को enable करना होगा, या Chrome को --extensions-on-chrome-urls के साथ चलाना होगा
  • मैन्युअल इंस्टॉलेशन के लिए GitHub ZIP डाउनलोड करें, उसे unzip करें, Chromium/Chrome Extensions में Developer mode enable करें, और little-rat-main डायरेक्टरी से Load unpacked extension प्रक्रिया का उपयोग करें

1 टिप्पणियां

 
GN⁺ 2023-08-15
Hacker News टिप्पणियां
  • यह third-party extension के बजाय Firefox या Chrome की built-in feature हो तो बेहतर होगा। तभी adoption rate इतना होगा कि बाकी browsers भी ध्यान देंगे। मैं चाहूंगा कि किसी खास extension को headers बदले बिना सिर्फ तय static URLs पर GET requests की अनुमति मिले
    इससे data updates संभव रहेंगे और leak का जोखिम कम होगा। कुछ extensions तो local browser के अंदर ही काम करते हैं, इसलिए उन्हें network access की बिल्कुल जरूरत नहीं होती। हालांकि अगर page source में बदलाव किया जा सकता है, तो data transfer को bypass किया जा सकता है, इसलिए शायद browsers ऐसा नहीं करते। फिर भी, हार मानकर इसे Chrome extension पर छोड़ देने से बेहतर है कि कोशिश की जाए

    • सिर्फ observe करना हो तो यह संभव है। current page के debugger की जगह browser का debugger खोलना होगा
      UI inspection जैसी ही प्रक्रिया से remote debugging चालू करें और फिर Browser Toolbox चलाएं: https://superuser.com/questions/1608096/how-to-inspect-firef...
      जब tabs की display को theme से ज्यादा बदलना हो, तो user-chrome CSS file में क्या चाहिए यह पता लगाने के लिए भी यह अच्छा है। हालांकि user-chrome CSS इस्तेमाल करना अपने-आप में थोड़ा झंझट वाला है
      extension network requests दिखाने के लिए मुझे multi-process mode पर switch करना पड़ा, और कुल मिलाकर यह behaviour समझ में आता है
      उदाहरण के लिए, test में क्लिक की गई किसी random block list को uBlock द्वारा fetch करते हुए: https://i.imgur.com/wBYbBM2.png
      Firefox खुद background में safe-browsing list update करते हुए: https://i.imgur.com/JYxWwjW.png
    • GET requests भी path और query string parameters के जरिए data leak कर सकती हैं। अगर उसे भी रोक दें, तब भी time या frequency से activity संकेतित करने वाली Morse code जैसी communication बनाई जा सकती है, और requests पर्याप्त हों तो megabytes के हिसाब से data भी आसानी से भेजा जा सकता है
    • अगर कोई extension page में पहले से मौजूद URLs को दोहराने से आगे बढ़कर HTTP request बनाता है, तो मेरा मानना है कि request body को readable तरीके से format करके toast notification दिखानी चाहिए
      अच्छी तरह बने extensions में notifications कभी-कभार ही आएंगी, और जिन extensions को server चाहिए वे उस समय pop up होंगी जब user server से communication की उम्मीद करता है। Keystrokes या संदिग्ध data भेजने वाला extension बहुत आसानी से पकड़ में आ जाएगा
    • मेरी याद के मुताबिक extensions उन URLs तक access नहीं कर सकते जो manifest के permissions section में specified नहीं हैं। मुझे लगता है Firefox permissions confirmation window में वे URLs दिखाता है
      हालांकि URL में wildcards डाले जा सकते हैं, और शायद सभी URLs के लिए कोई special value भी थी। फिर भी ऐसे permission की जरूरत वाले extensions ज्यादा नहीं होने चाहिए
    • Browser makers ऐसी feature क्यों नहीं देते, इसकी वजह शायद यह है कि कोई भी safeguard लगाएं, bypass करना आसान है
      उदाहरण के लिए, भले ही extension खुद request न बना सके, अगर उसे webpage DOM modify करने का अधिकार है, तो webpage से उसकी तरफ से request भिजवाने के कई तरीके हैं
  • यह extension install करना बहुत आसान नहीं है, इसलिए असल में capture किए गए network events दिखाने वाले screenshots जोड़ना अच्छा होगा। मौजूदा screenshot सबसे दिलचस्प feature को छिपा रहा है

    • Google Chrome खोलें और ऊपर दाईं ओर three-dot menu → Extensions → Manage Extensions → ऊपर दाईं ओर Developer Mode toggle → ऊपर बाईं ओर “Load Packged” button → unzipped .zip directory load करें
      इसके बाद सामान्य browser screen पर लौटें, address bar के दाईं ओर puzzle-piece extension icon दबाएं, और Little Rat के पास छोटे pin icon को दबाएं; यह install होकर extension icon list में दिखने लगेगा
  • बढ़िया। सच कहूं तो हैरानी है कि यह संभव है
    मुझे ठीक-ठीक नहीं पता कि ये APIs कौन सा data provide करती हैं, लेकिन अगर एक extension दूसरे extension की requests access कर सकता है, तो क्या password manager extensions या authentication tokens इस्तेमाल करने वाले extensions के लिए security concern नहीं बन सकता?

  • अच्छा है। लगता है ऐसी चीज chrome:// URL के रूप में होनी चाहिए

    • Extensions security और privacy के लिहाज से इतना बड़ा risk हैं, तो मेरे मन में सबसे पहले यही सवाल आया कि यह Chromium की built-in feature क्यों नहीं है
  • अच्छा लग रहा है, लेकिन जानना चाहूंगा कि Firefox port का कोई plan है क्या
    किसी को पता है कि Firefox में यही काम करने वाला कोई alternative है?

    • ऐसे connections शायद browser console में भी दिखेंगे[1]। या traffic को log किया जा सकता है[2], या individual extensions को inspect/debug भी कर सकते हैं[3]
      यह देखकर आप हैरान होंगे कि Mozilla “recommended” extensions में कितनी स्पष्ट extension policy violations को यूं ही जाने दे रहा है
      [1]: https://firefox-source-docs.mozilla.org/devtools-user/browse...
      [2]: https://firefox-source-docs.mozilla.org/networking/http/logg...
      [3]: https://firefox-source-docs.mozilla.org/devtools-user/about_...
    • जल्द ही try करके update डालूंगा
    • ज्यादातर cases में हर JS file के सबसे ऊपर बस var chrome = browser; जोड़ देने से यह Firefox में काम कर सकता है। Firefox extension API थोड़े differences के साथ Chrome Extension APIs की copy के काफी करीब है
  • Chrome Store पर आ जाए तो इस्तेमाल करके देखूंगा

    • यह declarativeNetRequest.onRuleMatchedDebug[0] इस्तेमाल कर रहा है, और यह debug-only लगता है, इसलिए पता नहीं Chrome Web Store में allow होगा या नहीं
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Releases में जाएं, crx file पर right-click करके save करें, फिर Chrome के Extensions में जाकर उस crx file को drag and drop करें
  • Chrome Store में क्यों नहीं है?

    • अभी review में है। वजह यह है कि यह chrome.declarativeNetRequest इस्तेमाल करता है, और यह वही API है जो uBlock भी इस्तेमाल करता है
  • साफ-सुथरा है, लेकिन इस हिस्से को और सावधानी से handle करना चाहिए: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    मैं यह चिंता नहीं करना चाहता कि कोई दूसरा extension crafted request, ID या name के जरिए यहां XSS inject कर सकता है

    • बहुत अच्छी बात उठाई है, लेकिन content security policy unsafe-inline को allow नहीं करती और extension ID Chrome खुद automatically generate करता है
  • सिर्फ यह fact कि network calls नहीं हैं, यह साबित नहीं करता कि extension safe है। वह private रखना चाहा गया data cache कर सकता है और बाद में periodic तरीके से भेज सकता है