2 पॉइंट द्वारा GN⁺ 2024-03-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Under New Management एक extension है जो समय-समय पर यह जांचता है कि इंस्टॉल किए गए browser extensions की developer जानकारी Chrome Web Store या Firefox Addons में बदली है या नहीं
  • अगर developer जानकारी बदल जाती है, तो extension icon पर लाल badge दिखाया जाता है ताकि उपयोगकर्ता ownership change के बारे में जान सकें
  • इसकी आवश्यकता उस समस्या से निकलती है कि extension developers को अक्सर acquisition proposals मिलते हैं, और अधिकतर मामलों में खरीदार मौजूदा users का दुरुपयोग करना चाहते हैं
  • उपयोगकर्ता यह नहीं जान सकते कि उनके इंस्टॉल किए गए extension की ownership बदल चुकी है और उसके compromised होने की संभावना है, इसलिए यह टूल उन्हें निर्णय लेने का मौका देता है
  • क्योंकि browser extension marketplace domains में बदलाव पर सीमाएँ लगाते हैं, developer जानकारी की जांच ExBoost API server को सौंपी जाती है

extension ownership change detection

  • Under New Management समय-समय पर यह जांचता है कि इंस्टॉल किए गए extensions की developer जानकारी Chrome Web Store या Firefox Addons स्टोर में बदली है या नहीं
  • अगर कोई बदलाव होता है, तो extension icon पर लाल badge दिखाई देता है, जिससे उपयोगकर्ता ownership change को पहचान सकते हैं
  • इसका उद्देश्य उपयोगकर्ताओं को अपने इस्तेमाल किए जाने वाले software के बारे में जानकारी-आधारित निर्णय लेने का अवसर देना है

इसकी ज़रूरत क्यों है

  • extension developers को लगातार अपने extension खरीदने के प्रस्ताव मिलते रहते हैं
  • README के अनुसार लगभग हर मामले में खरीदार का उद्देश्य मौजूदा users को धोखा देना होता है
  • उपयोगकर्ता यह नहीं जान सकते कि उनके इंस्टॉल किए गए extension की ownership बदल चुकी है और अब उसके compromised होने की संभावना है

इंस्टॉल करने का तरीका

  • Chrome इंस्टॉल: Chrome Web Store
  • Firefox इंस्टॉल: Firefox Add-ons
  • या prebuilt release डाउनलोड करके .zip फ़ाइल को extract करें और dist directory को browser में load करें

source से build करें

  • Under New Management Plasmo का उपयोग करता है
  • pnpm install: dependencies इंस्टॉल करें
  • pnpm dev: लोकल रन
  • pnpm build --zip: release build
  • pnpm build --target=firefox-mv3: Firefox के लिए build

external server की ज़रूरत क्यों है

  • browser extension marketplace domains को modify करने पर विशेष नियम लगाते हैं
  • उदाहरण के लिए chromewebstore.google.com के लिए declarative_net_request rule सेट नहीं किया जा सकता
  • इसलिए developer जानकारी की जांच का काम ExBoost API server को सौंपा जाता है

1 टिप्पणियां

 
GN⁺ 2024-03-07
Hacker News की रायें
  • Extension ID उस private key से derive होती है जिसे developer ऐप स्टोर पर पहली बार अपलोड करते समय साथ में अपलोड करता है, और अगर बाद के अपलोड ZIP में अलग key.pem हो तो ID बदल जाती है
    हालांकि अगर key.pem नहीं है, तो extension ID वही रहती है। इसलिए ID बदलने पर owner बदलने की संभावना हो सकती है, लेकिन original owner ने private key नए owner को भी सौंपी हो सकती है। Google हर upload पर private key नहीं मांगता, इसलिए नया owner उस key के बिना भी changes deploy कर सकता है
    extension ecosystem दिलचस्प है, इसलिए इस क्षेत्र के लिए tools भी बना रहा/रही हूँ। किसी specific extension के लिए GitHub repository बनाकर, हर update को repository change के रूप में record करने के बाद static analyzer और eval या postMessage जैसे dangerous sinks तक user input flow हो रहा है या नहीं, यह track करने वाली runtime taint analysis चलाकर देखना चाहता/चाहती हूँ: https://github.com/milesrichardson/crxmon

    • पहले Opera के लिए मेरा एक extension पहले पेज पर आकर popular हो गया था, और किसी ने उसे काफी बड़ी रकम में खरीदने की पेशकश की थी
      negotiation के दौरान मैंने कहा कि extension को हटा दूँगा/दूँगी और पूरा source code दे दूँगा/दूँगी ताकि वे खुद distribute कर सकें, तो सामने वाला Opera extension account credentials तक सौंपने की उम्मीद कर रहा था। आखिरकार deal छोड़ दी, और यह मानता/मानती हूँ कि ऐसे tools कुछ हद तक useful हैं, लेकिन extensions के लिए malware scanner बेहतर होगा
    • यह public key infrastructure (PKI) के काम करने के तरीके से अलग है। मुझे संदेह है कि Chrome extensions में सचमुच private key को PEM file के रूप में upload कराया जाता है
      developer को private key से extension या manifest पर sign करना चाहिए, और public key share करनी चाहिए या upload में शामिल करनी चाहिए। Updates को भी लगातार उसी private key से sign होना चाहिए, और जब तक key नहीं बदलती, first upload की public key से verify किया जा सकता है कि वही private key इस्तेमाल हुई है। बाद के uploads में public key शामिल है या नहीं, यह मूल बात नहीं है। अगर private key बेच दी या share कर दी, तो दूसरा व्यक्ति legitimately signed updates बना सकता है, लेकिन यह signer द्वारा private key को secret न रखने से पैदा होने वाला risk है। Google हो या कोई और, private key share करने पर extension की origin guarantee टूट जाती है
    • अगर extension ID बदलती है, तो नया version explicitly install करना होगा, auto-update नहीं होगा
      लेकिन मुझे सच में संदेह है कि Google private key के बिना भी नए owner को changes deploy करने की अनुमति देता है या नहीं। Chrome Web Store छोटी-छोटी बातों पर भी बहुत strict है, इसलिए यह अजीब है कि वे ऐसी चीज़ की परवाह नहीं करेंगे
      मैं testing के लिए ही public किए गए 3 extensions इस्तेमाल कर रहा/रही हूँ, और कई machines पर आसानी से install करने के लिए developer mode या rsync/robocopy के बिना इस्तेमाल कर रहा/रही हूँ। लेकिन इस weekend Chrome ने सिर्फ एक machine पर उन सभी को यह कहकर disable कर दिया कि “यह Chrome Web Store में listed नहीं है और user को पता चले बिना add किया गया हो सकता है।” उन्हें force-enable भी नहीं किया जा सकता, और store में “disabled” कहते हुए “enable now” दिखता है, लेकिन banner सिर्फ गायब होता है और refresh करने पर फिर आ जाता है। वह Chrome profile allowlist account से logged in है
      Chrome Web Store page badge दिखाता है कि developer के रूप में मेरे account पर कोई sanction नहीं है और status healthy है। अगर allowlist email से login न किया होता तो वह page भी नहीं दिखता। इतना “ध्यान रखने” के बावजूद key के बिना updates allow करना समझ में नहीं आता
    • बताया गया तरीका संभव तो है, लेकिन extension ID generate होने का अनिवार्य या सामान्य तरीका नहीं है। आम तौर पर developer पहली submission में सिर्फ ZIP file upload करता है, और Chrome Web Store public distribution के लिए signing में इस्तेमाल होने वाली private key generate करके store करता है
      CWS को existing extension की ID कभी नहीं बदलनी चाहिए, क्योंकि ID extension को uniquely identify करती है। ID बदलने पर Chrome client उस extension के updates request नहीं कर सकता, और CWS व Chrome users को एक extension से दूसरे extension में migrate करने की सुविधा support नहीं करते
      मेरी जानकारी में, first submission के बाद ZIP में key.pem होने पर CWS उसे reject कर देगा। अगर extension ID बदल गई है, तो वह वही extension नहीं है। नया owner PEM के बिना भी changes deploy कर सकता है, यह आम तौर पर सही है, लेकिन अगर developer ने CWS में submitted extension को खुद sign किया था, तो PEM के बिना update नहीं कर सकता। सच कहूँ तो मुझे नहीं पता कि यह feature अब भी possible है या नहीं, और पहले यह एक बड़ी trap थी जिसमें developer अपने upload में इस्तेमाल की गई private key खोकर installed base गंवा देता था
    • अगर कोई बुरे इरादे से extension खरीद रहा है, तो वह private key भी चाहेगा
      लगभग हर कोई सही कीमत मिलने पर आखिरकार मान जाएगा, फर्क सिर्फ इतना होगा कि किसे कितनी रकम चाहिए
  • कुछ महीने पहले मैंने YouTube विज्ञापनों को जल्दी स्किप करने वाला एक मुफ्त open source extension बनाया, उसे यहाँ शेयर किया और वह पहले पेज पर आ गया था
    एक हफ्ते के भीतर, मेरे Show HN पोस्ट पर comment करने वाले एक व्यक्ति ने उसे copy कर Reddit पर अपना version promote किया, और वह viral होकर 3 लाख से ज़्यादा users तक पहुँच गया: https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
    मुझे लगा कि मुफ्त open source extension में PR भेजने के बजाय उसने copy क्यों किया होगा, लेकिन कुछ हफ्तों बाद वह कई sites पर उसे 5-figure amount में बेचने की कोशिश कर रहा था। हो सकता है वह अभी भी owner हो, लेकिन Chrome Store में registered developer भी initial public release के समय से बदला हुआ दिखा

    • दूसरी तरफ की कहानी भी देखें तो context थोड़ा अलग हो जाता है: https://news.ycombinator.com/item?id=38463233
      मैं पूरा background नहीं समझ पाया, लेकिन वह extension असल में 50 lines की मामूली JavaScript है। यह कहना काफी bold है कि किसी ने उसे चुरा लिया। idea अपने आप में value नहीं रखता, और यह दावा करना भी मुश्किल है कि यह idea बहुत नया है। मान भी लें कि दूसरे व्यक्ति को inspiration मिला, तो किसने पहले क्या किया इसकी timeline बहुत साफ नहीं है
    • आपने कहा था “अगली बार promotion और aggressive करूँगा,” लेकिन मुझे लगता है कि इस बार भी कर सकते हैं। extension अभी मौजूद है, इसलिए अभी भी promote किया जा सकता है
      हालांकि YouTube और Chrome इसे कितने समय तक काम करने देंगे, यह अलग मुद्दा है, और हो सकता है उन्हें भी यह पसंद न आए
    • उम्मीद है नतीजा अच्छा रहेगा, लेकिन अगर नहीं, तो Jeff Tweedy का रवैया मदद कर सकता है
      “…अगर पूरी दुनिया तुम्हारा गाना गा रही हो / और तुम्हारी सारी paintings टंगी हों / तो याद रखना जो तुम्हारा था, अब सबका है / यह सही है या गलत, बात वह नहीं / तुम चाहो तो उससे जितना चाहो चिपके रह सकते हो / बस बेचैन तुम ही रहोगे…” — Wilco का “What Light”
    • मुझे आश्चर्य है कि HN user के handle को text में कभी नहीं लिखा गया और सिर्फ image में रखा गया। इस comment या blog post में copy करने वाले user का नाम साफ-साफ बताने पर कौन-सा threat model माना जा रहा है, समझ नहीं आता
    • लगता है इसे “zuckered” होना कहते हैं
  • यह वाकई उपयोगी है, लेकिन जैसा किसी और ने कहा, यह browser built-in feature होना चाहिए
    मैंने अभी source code को गहराई से नहीं देखा है, पर जानना चाहता हूँ कि ownership change होने पर यह automatically बताता है या नहीं। real-time होना ज़रूरी नहीं, लेकिन startup पर बताता है या manually check command चलानी पड़ती है?
    कुछ महीने पहले भी यह topic चर्चा में था: https://news.ycombinator.com/item?id=36233068
    उस समय के top comment की तरह, Firefox और Chrome के लिए बेहतर होगा कि वे ऐसी स्थिति में automatic extension upgrade policy बदलें। अगर कोई extension ownership change disclose करता है, तो upgrade के लिए user approval मांगना चाहिए, और अगर disclose नहीं करता, तो users को उसे malicious के रूप में report कर सकना चाहिए। साथ ही title में शायद “Show HN” लगना चाहिए

    • मैं creator हूँ। check हर घंटे automatically run होता है, और changes detect होने पर extension icon पर badge दिखता है
      इससे ज़्यादा strong notification मुझे बहुत intrusive लगा
    • company ownership change के कारण users से upgrades के लिए explicitly approve करवाने वाला speed bump जोड़ने पर users का काफी हिस्सा छूट जाएगा
      इससे sale के समय product या company की value घटती है। यह user-friendly है, लेकिन bills चुकाने वाले creators के लिए unfriendly है
  • यह मज़ाक की बात नहीं है
    मैंने कई साल तक एक काफी popular open source Chrome extension own किया, और कुल donations महीने की coffee के खर्च जितनी भी नहीं थीं
    लेकिन साफ तौर पर malicious उद्देश्य से—यहाँ तक कि खुले तौर पर ऐसा कहने वाले cases समेत—extension बेचने के offers बहुत बार आए और amounts भी पागलपन जैसे थे। मैंने सबको reject किया, लेकिन ऐसी स्थिति में original developer की नैतिकता ही एकमात्र security और privacy framework बनी रहे, ऐसी उम्मीद करना समझदारी नहीं है

    • सचमुच malicious लोग इस post के tool से detect नहीं होंगे। क्योंकि वे सिर्फ extension ownership और code ही नहीं, बल्कि developer account transfer तक मांगते हैं
  • लक्ष्य से मैं काफी हद तक सहमत हूँ और तकनीकी सीमाएँ भी समझता हूँ, लेकिन यूज़र के सभी extension की सूची को extension-केंद्रित advertising network पर भेजना थोड़ा संदिग्ध लगता है
    बाहरी server की ज़रूरत का कारण यह बताया गया है कि browser chromewebstore.google.com जैसे extension market domains में बदलावों पर खास नियम लगाता है, इसलिए developer जानकारी की जाँच ExBoost API server को सौंप दी जाती है
    https://www.extensionboost.com/
    ExBoost खुद को उन browser extensions का collaboration network बताता है जो ज़्यादा users और reviews चाहते हैं। तरीका यह है कि extension UI में ExBoost slot डाला जाता है और मिलते-जुलते extensions का promotion या review request दिखाई जाती है

    • अच्छी खोज। थोड़ा खंगालने पर पता चला कि फिलहाल browser से जुड़ा metadata नहीं भेजा जाता, सिर्फ comma-separated extension ID सूची भेजी जाती है। बेशक IP का इस्तेमाल आसानी से किया जा सकता है
      मेरे install किए हुए एक extension के API result में developer-related metadata दिखता है। chrome.management.get(id) Chrome API आज़माया, लेकिन यह जानकारी return नहीं हुई, और manifest.json की सामग्री को programmatically लाने का कोई तरीका भी नहीं दिखता। इसलिए मौजूदा extension जो करना चाहता है, उसके लिए बाहरी source की ज़रूरत सच में है
      https://github.com/classvsoftware/under-new-management/blob/...
      https://api.extensionboost.com/v1/developer?extension_ids=gh...
    • ExBoost भी मूल पोस्ट लिखने वाले का ही project लगता है। अच्छे इरादे से देखें तो, extension ID देने पर owner जैसे metadata को scrape करने के लिए ज़रूरी data उनके पास पहले से था, इसलिए उन्होंने वही API server इस्तेमाल किया होगा
    • मज़े-मज़े में मैंने कुछ छोटे extensions बनाए थे, और कुछ हफ्ते पहले ExBoost से “Collaboration To Grow Our Extensions” subject वाला email मिला
      उसमें कहा गया था कि उनका code मेरे extension में डाल दूँ, और “तुम मेरा दिखाओगे तो मैं तुम्हारा दिखाऊँगा। cost 0, सबका फायदा”। यह संदिग्ध लगा, इसलिए spam mark कर दिया; यह मुझे scammers से मिलने वाले दूसरे spam mails से अलग नहीं लगा
    • इस तरह के project में यह एक अप्रत्याशित connection है। हैरान करने वाला
    • समझ नहीं आता कि बाहरी service से connect करने की ज़रूरत क्यों है। मुझे लगा था owner बदलने पर extension ID बदल जाती है, तो local में ID track करके कोई नया ID दिखे तो उसे दिखा देना काफी होना चाहिए। शायद मैं कुछ गलत समझ रहा हूँ
  • Firefox extensions के लिए Mozilla का Recommended Extensions Program है, और कहा गया है कि शामिल किए जाने से पहले staff security experts द्वारा सख्त technical review किया जाता है: https://support.mozilla.org/en-US/kb/recommended-extensions-...
    हालांकि सिर्फ support document देखकर यह साफ नहीं होता कि हर update publish होने से पहले review होता है या नहीं। अगर हर बार review होता है तो popular extensions के लिए यह समस्या कुछ हद तक हल होगी, लेकिन emergency security update की ज़रूरत पड़ने पर कितना delay होगा, यह भी जानना चाहूँगा

    • सभी updates review होते हैं। uBlock Origin जैसे बेहद popular extensions भी कभी-कभी अटक जाते हैं
      मेरी मौजूदा personal policy है कि ऐसे curated extensions को ही सभी sites और tabs पर चलने की अनुमति दूँ
    • सुनने में ऐसा लगता है कि आप एक ऐसा थोड़ा झंझट वाला “marketplace” चाहते हैं जहाँ नियम हों और उनका enforcement भी हो
      यानी कोई कितना भी popular हो या कितनी भी जानी-मानी organization हो, अगर वे बार-बार नियम तोड़ते हैं या marketplace features को bypass करने की कोशिश करते हैं, तो उन्हें ban किया जा सके
  • सचमुच malicious मामलों में, extension transfer करते समय अक्सर Google developer account के credentials ही बेच दिए जाते हैं, इसलिए ऐसे case detect नहीं हो पाएँगे

    • पूरा developer account बेचना क्या शुरू से ही allowed है?
  • बहुत पहले मैंने adblock install किया था और वह मुझे बहुत पसंद था
    नई machine खरीदी तो फिर से install करना पड़ा, और तब पहली बार permissions देखीं—दिमाग ही घूम गया। Ads block करने के लिए वह जो मैं देखता हूँ उसे देख सके, यह logic से सही है, लेकिन मैंने कभी इसे गंभीरता से सोचा नहीं था
    अब मैं Pi-hole इस्तेमाल करता हूँ और कोई extension इस्तेमाल नहीं करता

    • Pi-hole, uBlock Origin जितना effectively ads और trackers block नहीं करता
      फिर भी जिन्हें चाहिए उनके लिए option होना अच्छा है, और अलग-अलग लोगों के risk profile और concerns अलग होते हैं
    • Manifest V3 में आने वाले permission changes की एक वजह शुरुआत से ही यह है कि extensions की access scope कम की जाए
      कुछ extensions open source और भरोसेमंद होते हैं, लेकिन कई नहीं होते, और लोगों को verify करने में दिक्कत होती दिखती है
    • Safari में एक special interface है जहाँ content blockers बिना किसी permission के काम कर सकते हैं
      आप block list देते हैं और browser सीधे blocking करता है। Firefox में यह संभव है या नहीं, पता नहीं: https://developer.apple.com/documentation/safariservices/cre...
    • यहाँ जिस adblock extension की बात हो रही है, वह कौन सा है, यह जानना चाहूँगा। उदाहरण के लिए uBlock local block lists इस्तेमाल करता है
    • mobile पर क्या करते हैं?
  • अगर मैं malicious extension buyer होता, तो इससे बचने के लिए developer name वही बनाए रखता, है न? या Chrome Extension Store developer name को सख्ती से manage करता है?

    • बेईमान extension maker को अनौपचारिक रूप से password देकर “ओह, hack हो गया” कहकर किसी संदिग्ध buyer के पास निकल जाने से practically रोकना मुश्किल है
      मसलन कोई malicious nation-state actor uBlock के author को करोड़ों dollars offer करके बहुत सारे browser access हासिल करने की कोशिश कर सकता है। इसकी economics कैसी होगी, पता नहीं, लेकिन ज्यादा niche extensions को कहीं सस्ते में target किया जा सकता है
    • शायद यह Chrome Web Store Terms of Service का उल्लंघन होने की काफी संभावना है
  • जानना चाहता/चाहती हूँ कि क्या यह समस्या दूसरे browsers के मुकाबले Chrome में ज़्यादा गंभीर है
    मैं जो इकलौता browser extension इस्तेमाल करता/करती हूँ वह exam proctoring software HonorLock है, और उसे इस्तेमाल करना अनिवार्य है। Extension सिर्फ Chrome के लिए है, इसलिए HonorLock की वजह से कभी-कभी Chrome इस्तेमाल करता/करती हूँ। Safari में install link खोलने पर Chrome install करने को कहा जाता है: https://app.honorlock.com/install/extension
    जानना चाहता/चाहती हूँ कि क्या Chrome extensions में ऐसी कोई खासियत है जो HonorLock के use case को संभव बनाती है, और साथ ही इस लेख के tool को भी ज़्यादा उपयोगी बनाती है

    • Chrome सबसे लोकप्रिय browser है, इसलिए यह सिर्फ चुना हुआ extension attack vector है
    • अगर आप सिर्फ HonorLock इस्तेमाल करते/करती हैं, तो समझ नहीं आता कि AdBlock के बिना कैसे जीते हैं