- StarDict में एक गंभीर सुरक्षा समस्या पाई गई है, जो X11 वातावरण में उपयोगकर्ता द्वारा चुने गए टेक्स्ट को बिना एन्क्रिप्शन वाले HTTP के जरिए बाहरी सर्वर पर भेजती है
- यह समस्या Debian की डिफ़ॉल्ट सेटिंग में YouDao और dict.cn प्लगइन के डिफ़ॉल्ट रूप से सक्षम होने के कारण उत्पन्न होती है
- इसका मतलब है कि जैसे ही उपयोगकर्ता कोई भी टेक्स्ट चुनता है, वह अपने-आप सर्वर पर भेज दिया जाता है, जिससे संवेदनशील जानकारी लीक होने का जोखिम है
- पैकेज मेंटेनरों ने इस फीचर को बंद करने और प्लगइन को अलग करने के प्रस्तावों पर विचार किया, लेकिन मूलभूत समाधान लागू करने में कमी रही
- यह समस्या अतीत में भी कई बार उठाई जा चुकी है, लेकिन पूर्ण प्रतिक्रिया की कमी और सुरक्षा जागरूकता के महत्व को फिर से उजागर करती है
StarDict के व्यवहार और सुरक्षा मुद्दे का सार
- StarDict GPLv3 लाइसेंस वाला एक cross-platform dictionary प्रोग्राम है, जिसमें कई भाषाओं का समर्थन और प्लगइन इकोसिस्टम मौजूद है
- Debian की डिफ़ॉल्ट सेटिंग में StarDict चलाने पर, उपयोगकर्ता द्वारा चुना गया टेक्स्ट बिना एन्क्रिप्शन वाले HTTP के माध्यम से youdao.com और dict.cn इन दो रिमोट सर्वरों पर भेजा जाता है
- इस समस्या की oss-security mailing list और Debian bug tracker में भी रिपोर्ट की गई है
समस्या का विस्तृत विवरण
- StarDict के डिज़ाइन में dictionary websites से संचार करने वाला कोड होना स्वाभाविक लग सकता है, लेकिन "scan" फीचर डिफ़ॉल्ट रूप से सक्षम है
- इसका मतलब है कि जब उपयोगकर्ता माउस से टेक्स्ट चुनता है, तो अनुवाद पॉप-अप अपने-आप खुलता है और वह टेक्स्ट बाहरी सर्वर पर स्वतः भेज दिया जाता है
- जब उपयोगकर्ता StarDict को हमेशा बैकग्राउंड में चलने देता है, तब समस्या और गंभीर हो जाती है
Linux वातावरण के अनुसार अंतर
- Wayland वातावरण में StarDict दूसरे एप्लिकेशन का टेक्स्ट कैप्चर नहीं कर सकता, इसलिए scan फीचर काम नहीं करता और यह सुरक्षा समस्या उत्पन्न नहीं होती
- यह समस्या फिलहाल केवल पुराने X11 वातावरण में मौजूद है
Debian और StarDict डेवलपर्स की प्रतिक्रिया
- Debian पैकेज मेंटेनर Xiao Sheng Wen ने कहा कि
"scan फीचर और YouDao प्लगइन को बंद किया जा सकता है", इसलिए उन्होंने इसे बड़ा मुद्दा नहीं माना - लेकिन रिपोर्ट करने वाले Vincent Lefevre ने कहा कि "privacy से जुड़े फीचर डिफ़ॉल्ट रूप से हमेशा बंद होने चाहिए"
- पैकेज विवरण के जरिए इस फीचर की जानकारी दी जा सकती है, लेकिन stardict-plugin के विवरण में online dictionary के उपयोग का उल्लेख नहीं है
- प्लगइन अलग करने जैसे सुधार प्रस्तावित हुए हैं, लेकिन तुरंत कोई कार्रवाई नहीं हुई
फीचर की उपयोगिता और सुरक्षा चिंता
- scan फीचर, विदेशी भाषा पढ़ते समय तेज़ dictionary lookup की जरूरत में, StarDict का एक प्रमुख लाभ है
- लेकिन उपयोगकर्ताओं के लिए यह अनुमान लगाना आसान नहीं कि यह संचार एन्क्रिप्टेड नहीं है। रास्ते में मौजूद कोई भी व्यक्ति संवेदनशील टेक्स्ट को देख सकता है
अतीत की समान सुरक्षा घटनाएँ और प्रतिक्रिया
- 2009 और 2015 में भी ऐसे ही मामले रिपोर्ट किए गए थे
- 2009: network dictionary को डिफ़ॉल्ट रूप से कुछ समय के लिए बंद किया गया था
- लेकिन 2016 में जोड़ा गया YouDao प्लगइन उस सेटिंग को नज़रअंदाज़ करता है
- 2015 की समस्या का समाधान 2025 में जाकर प्लगइन हटाने के रूप में हुआ
- इससे पता चलता है कि मुद्दे का दोबारा सामने आना और प्रतिक्रिया में देरी, साथ ही मेंटेनर बदलना और प्राथमिकता तय करने में कमी, बार-बार दोहराई गई
उपयोगकर्ता संख्या और सुरक्षा प्रभाव
- Debian के आँकड़ों के अनुसार फिलहाल लगभग 178 उपयोगकर्ता ही StarDict इंस्टॉल करके इस्तेमाल कर रहे हैं, लेकिन आँकड़ों में शामिल न होने वाले सिस्टम आदि को देखते हुए संभव है कि कई वर्षों तक अधिक उपयोगकर्ता टेक्स्ट लीक के जोखिम में रहे हों
- पासवर्ड कॉपी करना, संवेदनशील ईमेल, दस्तावेज़ संपादन के दौरान चुना गया टेक्स्ट आदि सीधे बाहरी रूप से उजागर हो सकते हैं
ओपन सोर्स इकोसिस्टम और सुरक्षा एजेंडा
- Debian जैसे बड़े वितरण बहुत सारे पैकेज प्रबंधित करते हैं, इसलिए अपडेट छूट जाना और सॉफ़्टवेयर का पुराना हो जाना अक्सर होता है
- "काफी लोग देखेंगे तो bug उथला होगा" वाली Linus's Law तभी सच होती है जब कोई bug खोजे, रिपोर्ट करे, और फिर मेंटेनर उसे समस्या मानकर ठीक भी करे
X11 से Wayland की ओर बदलाव
- Wayland को अपनाने का एक कारण ऐसे सुरक्षा दोषों को कम करना भी है, खासकर एप्लिकेशन के बीच जानकारी लीक होने की संभावना को
- हालांकि इसके साथ फीचर संबंधी असुविधाएँ और नई permission handling जैसी चुनौतियाँ भी बनी रहती हैं
निष्कर्ष और संकेत
- यह चिंताजनक है कि खोजी गई, विश्लेषित और रिपोर्ट की गई सुरक्षा समस्याएँ अब भी अनसुलझी रह जाती हैं या फिर दोबारा सामने आती हैं
- Linux की security reputation बनाए रखने के लिए open source डेवलपर्स, पैकेज मेंटेनर और उपयोगकर्ताओं की निरंतर जागरूकता और तेज़ प्रतिक्रिया ज़रूरी है
1 टिप्पणियां
Hacker News राय
जैसा कि Xiao ने बताया, सॉफ़्टवेयर इंस्टॉल करने वाले उपयोगकर्ता पैकेज विवरण पढ़ सकते हैं, और उसमें स्कैन फ़ीचर का ज़िक्र वास्तव में है। लेकिन Debian मेंटेनर अक्सर bug report पर इस तरह जवाब देते हैं कि “आपको सभी पैकेजों के विवरण, यहाँ तक कि dependency के रूप में इंस्टॉल होने वाले सैकड़ों पैकेजों के भी, ध्यान से पढ़ने चाहिए,” और सच कहूँ तो अगर आपने कुछ दिन पहले रिलीज़ हुई Trixie के हिसाब से सभी विवरण और README पढ़ना शुरू किया होता, तो शायद अब तक भी पूरा न कर पाए होते
ज़ाहिर है, कोई सोच सकता है कि dictionary प्रोग्राम में वेबसाइट से communication करने वाला code होगा। लेकिन अगर मैं apt-get से dictionary इंस्टॉल करता हूँ, तो मैं यह उम्मीद कर सकता हूँ कि पूरी dictionary मेरे कंप्यूटर पर ही होगी। आखिर कागज़ी dictionary भी सदियों से इस्तेमाल होती आई है... Stardict online-आधारित है, तो यह सामान्य भी हो सकता है, लेकिन फिर भी इसमें कुछ trap जैसा एहसास होता है
dingप्रोग्राम local dictionary को बहुत अच्छी तरह support करता है। यह Debian में भी शामिल है ding लिंकfirejail, फिरbubblewrap, और समय के साथ अपने बनाए bash scripts के ज़रिए sandbox environment में apps चलाने लगा। मैं यह flatpak से पहले से करता आ रहा हूँमुझे यह जानकर काफ़ी झटका लगा कि Samsung फ़ोन पर सारा clipboard data मेरे Samsung account से जुड़े सभी devices पर share हो रहा था (passwords तक सहित), और उसका history भी बचा रह रहा था। मुझे याद नहीं कि यह default setting थी या मैंने गलती से सहमति दे दी थी। संभवतः यह data Samsung servers के ज़रिए होकर जाता है। मैंने sharing feature बंद कर दी, लेकिन clipboard history बंद नहीं हुई, और keyboard बदल देने के बाद भी अगर Samsung keyboard पर लौटूँ तो पुराना clipboard history जस का तस रहता है। अब अगला फ़ोन Samsung का लेने का इरादा नहीं है
मुझे लगता है Wayland को लेकर कुछ बातों में ग़लतफ़हमी की गुंजाइश है। आख़िरी सारांश सही है: “संभव है कि StarDict ने Wayland पर चलने के लिए विशेष permissions माँगी हों, और उपयोगकर्ता ने अभी की तरह वही default स्वीकार कर लिया हो।” यानी इसकी संभावना ज़्यादा है, और इंस्टॉलेशन प्रक्रिया में वे permissions अपने-आप सेट भी की गई होंगी। malware हमेशा रहेगा। Wayland कुछ हमलों से बचा सकता है, लेकिन distribution के हिस्से के रूप में इंस्टॉल हुए package से आपको सुरक्षित नहीं रख सकता
dict.youdao.comऔरdict.cnservers को बिना किसी सुरक्षा के साधारण HTTP में भेजा जाता है, और रास्ते में मौजूद कोई भी व्यक्ति request की सामग्री देख सकता हैहर clipboard selection पर local dictionary lookup ठीक है। remote dictionary request की सुविधा जोड़ना भी समस्या नहीं है। इन दोनों सुविधाओं को अगर किसी special flag जैसी चीज़ से अलग रखा गया होता और आसानी से जोड़ा जा सकता, तो यह समझ में आता; लेकिन default में इन दोनों को मिला देना लगभग दुर्भावनापूर्ण व्यवहार के क़रीब है
“बेशक dictionary प्रोग्राम में वेबसाइट से जुड़ा code होता है” वाली बात पर मैं कहना चाहूँगा कि असलियत उपयोग के उद्देश्य पर निर्भर करती है। मेरी Finnish dictionary
tskका न्यूनतम version लगभग 30MB है और उसमें लगभग 2.5 लाख शब्द हैं, इसलिए dictionary सीधे binary में एम्बेड की गई है, और हर run पर prefix search फिर से बनाया जाता है। लेकिन lemmatization, etymology वगैरह को शामिल करने वाला विशाल database दर्जनों GB तक बढ़ सकता है। मेरा उद्देश्य पूरी तरह त्वरित, कीबोर्ड-इनपुट-स्तर की खोज था, इसलिए यह संरचना ज़रूरी थी। इसमें बहुत मेहनत लगी, इसलिए बाद के versions से इसे paid करने का फ़ैसला किया tsk Github paid version homepage (फ़िलहाल Windows code-signing समस्या के कारण offline है)। ज़्यादातर दूसरे use cases में server query करना कहीं ज़्यादा सुविधाजनक है। पूरी विशाल dictionary download करने की शायद ही कोई वजह हो, इसलिए hybrid structure (जैसे शीर्ष 10,000 शब्द local cache में, और बाकी दुर्लभ शब्दों के लिए server से communication) भी काफ़ी तर्कसंगत हैऐसी चीज़ें देखकर मुझे कई पहलुओं से यही लगता है कि इसमें दुर्भावना थी। मेंटेनर ने जवाब दिया: “उपयोगकर्ता ने ‘scan’ फ़ीचर खुद enable किया था, और text select करने पर translation action trigger होता है... फिर confidential data को translation query के लिए क्यों select किया?”
Debian में डाले गए भारी प्रयास का मैं सम्मान करता हूँ, लेकिन पैकेज मैनेजर की इस तरह की “maximalism” हमेशा से नापसंद रही है। उदाहरण के लिए, अगर आप
fooइंस्टॉल करना चाहें, तो वह संभव हो सके तो उससे जुड़ा हर software साथ में इंस्टॉल कर देता है, और अगर network daemon भी हो तो उसे तुरंत चला भी देता है। मुझे पता है कि “recommended packages” को इंस्टॉल होने से रोकने वाला flag है, लेकिन फिर भी लगता है कि default setting उपयोगकर्ता को असुविधा देती हैaptयाaptitudeइस्तेमाल करते समय इंस्टॉलेशन preview दिया जाता है और उपयोगकर्ता उसे चुन सकता है। minimalism और user convenience के बीच हमेशा तनाव रहता है। Debian 13 रिलीज़ में तो “Debian कभी user-friendly distribution रहा ही नहीं” जैसी राय भी सामने आई। व्यक्तिगत रूप से मुझे “DIY for DIY” IKEA शैली से ज़्यादा “स्थिर, बुनियादी और user-friendly distribution” पसंद है। और advanced users चाहें तो इसे कभी भी बदल सकते हैं। अगर default बदलना हो तो/etc/apt/conf.d/में किया जा सकता है, और एक बार के लिए--no-install-recommendsइस्तेमाल किया जा सकता हैAPT::Install-Recommendsका defaultfalseथा, और Debian 6.0 Squeeze (2011-02-06) में इसेtrueकिया गया। उस समय Debian और Ubuntu पर बहुत से अनावश्यक packages इंस्टॉल हो जाने से मुझे चिढ़ होती थी। अब पीछे मुड़कर देखता हूँ तो लगता है कि recommends और suggests के बीच भेद कभी-कभी धुंधला था, और “recommends” को default रूप से इंस्टॉल करना तथा उपयोगकर्ता को opt-out देना शायद बेहतर था। फिर भी जिन systems को मैं खुद प्रबंधित करता हूँ, उनमें recommended packages की automatic installation आज भी बंद रखता हूँ--install-recommendsका default होना अपने-आप में समस्या नहीं है। Recommends और Suggests के बीच “हममें से ज़्यादातर लोग यह चाहेंगे” बनाम “यह कुछ सीमित functionality है” जैसा सूक्ष्म फ़र्क रखना बुरा नहीं है। लेकिन मैं भी मानता हूँ कि अलग-अलग मेंटेनरों द्वारा Recommends field का दुरुपयोग समस्या है। उदाहरण के लिए, अगर किसी compression tool को इंस्टॉल करने पर कोई खास init system तक ठूँस दिया जाए, तो यह बेतुका है (file-roller, GNOME से जुड़ी टीम की ओर देख रहा हूँ)मुझे समझ नहीं आता कि यह सब offline क्यों नहीं है। पूरी चीनी dictionary 4 लाख शब्दों से कम है, और अगर हर शब्द के लिए सिर्फ 1k मान लें तो 400MB काफ़ी होगा। यह स्थानीय रूप से आसानी से implement किया जा सकता है; network connection पर निर्भर होना सिर्फ खराब design है
इस तरह के मुद्दे देखकर मुझे बहुत गुस्सा आता है। यह बिल्कुल भी स्वीकार्य नहीं है