इंस्टॉल किए गए Chrome extensions के owner बदलने का पता लगाएँ
(github.com/classvsoftware)- 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 करें औरdistdirectory को browser में load करें
source से build करें
- Under New Management Plasmo का उपयोग करता है
pnpm install: dependencies इंस्टॉल करेंpnpm dev: लोकल रनpnpm build --zip: release buildpnpm build --target=firefox-mv3: Firefox के लिए build
external server की ज़रूरत क्यों है
- browser extension marketplace domains को modify करने पर विशेष नियम लगाते हैं
- उदाहरण के लिए
chromewebstore.google.comके लिएdeclarative_net_requestrule सेट नहीं किया जा सकता - इसलिए developer जानकारी की जांच का काम ExBoost API server को सौंपा जाता है
1 टिप्पणियां
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/crxmonnegotiation के दौरान मैंने कहा कि extension को हटा दूँगा/दूँगी और पूरा source code दे दूँगा/दूँगी ताकि वे खुद distribute कर सकें, तो सामने वाला Opera extension account credentials तक सौंपने की उम्मीद कर रहा था। आखिरकार deal छोड़ दी, और यह मानता/मानती हूँ कि ऐसे tools कुछ हद तक useful हैं, लेकिन extensions के लिए malware scanner बेहतर होगा
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 टूट जाती है
लेकिन मुझे सच में संदेह है कि 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 करना समझ में नहीं आता
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 गंवा देता थालगभग हर कोई सही कीमत मिलने पर आखिरकार मान जाएगा, फर्क सिर्फ इतना होगा कि किसे कितनी रकम चाहिए
कुछ महीने पहले मैंने 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 के समय से बदला हुआ दिखा
मैं पूरा background नहीं समझ पाया, लेकिन वह extension असल में 50 lines की मामूली JavaScript है। यह कहना काफी bold है कि किसी ने उसे चुरा लिया। idea अपने आप में value नहीं रखता, और यह दावा करना भी मुश्किल है कि यह idea बहुत नया है। मान भी लें कि दूसरे व्यक्ति को inspiration मिला, तो किसने पहले क्या किया इसकी timeline बहुत साफ नहीं है
हालांकि YouTube और Chrome इसे कितने समय तक काम करने देंगे, यह अलग मुद्दा है, और हो सकता है उन्हें भी यह पसंद न आए
“…अगर पूरी दुनिया तुम्हारा गाना गा रही हो / और तुम्हारी सारी paintings टंगी हों / तो याद रखना जो तुम्हारा था, अब सबका है / यह सही है या गलत, बात वह नहीं / तुम चाहो तो उससे जितना चाहो चिपके रह सकते हो / बस बेचैन तुम ही रहोगे…” — Wilco का “What Light”
यह वाकई उपयोगी है, लेकिन जैसा किसी और ने कहा, यह 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” लगना चाहिए
इससे ज़्यादा strong notification मुझे बहुत intrusive लगा
इससे 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 बनी रहे, ऐसी उम्मीद करना समझदारी नहीं है
लक्ष्य से मैं काफी हद तक सहमत हूँ और तकनीकी सीमाएँ भी समझता हूँ, लेकिन यूज़र के सभी 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 दिखाई जाती है
मेरे 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...
उसमें कहा गया था कि उनका code मेरे extension में डाल दूँ, और “तुम मेरा दिखाओगे तो मैं तुम्हारा दिखाऊँगा। cost 0, सबका फायदा”। यह संदिग्ध लगा, इसलिए spam mark कर दिया; यह मुझे scammers से मिलने वाले दूसरे spam mails से अलग नहीं लगा
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 होगा, यह भी जानना चाहूँगा
मेरी मौजूदा personal policy है कि ऐसे curated extensions को ही सभी sites और tabs पर चलने की अनुमति दूँ
यानी कोई कितना भी popular हो या कितनी भी जानी-मानी organization हो, अगर वे बार-बार नियम तोड़ते हैं या marketplace features को bypass करने की कोशिश करते हैं, तो उन्हें ban किया जा सके
सचमुच malicious मामलों में, extension transfer करते समय अक्सर Google developer account के credentials ही बेच दिए जाते हैं, इसलिए ऐसे case detect नहीं हो पाएँगे
बहुत पहले मैंने adblock install किया था और वह मुझे बहुत पसंद था
नई machine खरीदी तो फिर से install करना पड़ा, और तब पहली बार permissions देखीं—दिमाग ही घूम गया। Ads block करने के लिए वह जो मैं देखता हूँ उसे देख सके, यह logic से सही है, लेकिन मैंने कभी इसे गंभीरता से सोचा नहीं था
अब मैं Pi-hole इस्तेमाल करता हूँ और कोई extension इस्तेमाल नहीं करता
फिर भी जिन्हें चाहिए उनके लिए option होना अच्छा है, और अलग-अलग लोगों के risk profile और concerns अलग होते हैं
कुछ extensions open source और भरोसेमंद होते हैं, लेकिन कई नहीं होते, और लोगों को verify करने में दिक्कत होती दिखती है
आप block list देते हैं और browser सीधे blocking करता है। Firefox में यह संभव है या नहीं, पता नहीं: https://developer.apple.com/documentation/safariservices/cre...
अगर मैं malicious extension buyer होता, तो इससे बचने के लिए developer name वही बनाए रखता, है न? या Chrome Extension Store developer name को सख्ती से manage करता है?
मसलन कोई malicious nation-state actor uBlock के author को करोड़ों dollars offer करके बहुत सारे browser access हासिल करने की कोशिश कर सकता है। इसकी economics कैसी होगी, पता नहीं, लेकिन ज्यादा niche extensions को कहीं सस्ते में target किया जा सकता है
जानना चाहता/चाहती हूँ कि क्या यह समस्या दूसरे 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 को भी ज़्यादा उपयोगी बनाती है