- Android 11 के बाद Google ने ऐप्स के बीच क्वेरी करने पर पाबंदी लगाई, लेकिन कई ऐप्स सिर्फ
AndroidManifest.xml declaration के ज़रिए इंस्टॉल की गई ऐप्स की सूची देख पा रही थीं
- package visibility policy कहती है कि सिर्फ core functionality के लिए ज़रूरी ऐप्स ही दिखने चाहिए, लेकिन individual package declarations और
ACTION_MAIN filter का इस्तेमाल बाइपास रास्ते की तरह हुआ
- Swiggy ने 154, Zepto ने 165, KreditBee ने 860, और Moneyview ने 944 ऐप्स declare किए थे, जिससे वे देख सकते थे कि यूज़र के डिवाइस में कौन-सी खास ऐप्स मौजूद हैं
- भारत के 47 ऐप्स के एक random sample में 31 ने
ACTION_MAIN intent filter का इस्तेमाल किया, जिससे QUERY_ALL_PACKAGES के बिना भी स्क्रीन वाली ज़्यादातर इंस्टॉल्ड ऐप्स देखी जा सकती हैं
- इंस्टॉल्ड ऐप डेटा और
READ_SMS permission का इस्तेमाल profiling, differential pricing, और credit/eligibility assessment के लिए हो सकता है, लेकिन यूज़र के लिए यह जानना मुश्किल है कि ऐप कब और क्या पढ़ रही है
Android ऐप visibility policy की खामी
- पहले Android में ऐप्स बिना किसी अलग permission के यूज़र के फ़ोन में इंस्टॉल दूसरी ऐप्स देख सकती थीं
- Google ने Android 11 से package visibility policy लागू करके इस access को सीमित किया
- ऐप्स को सिर्फ वही दूसरी इंस्टॉल्ड ऐप्स देखनी चाहिए जो उनकी core functionality के लिए अनिवार्य हों
- डेवलपर को जिन ऐप्स को चेक करना है, उन्हें
AndroidManifest.xml में लिखना होता है, जो हर Android ऐप की अनिवार्य configuration file है
- file manager, browser, और antivirus ऐप्स जैसे खास use cases में
QUERY_ALL_PACKAGES permission को अपवाद के रूप में अनुमति मिलती है
- UPI payment ऐप दिखाना, ऐप cloning या multi-account ऐप detect करना जैसे मामले ऐप query करने के वैध कारण हो सकते हैं
- जांचे गए कई manifest में payment, security, और fraud detection के लिए ऐप query शामिल थी
Swiggy और Zepto की व्यापक ऐप query
- Swiggy ने अपने manifest में 154 package names list किए थे, जिससे वह देख सकती थी कि वे ऐप्स फ़ोन में मौजूद हैं या नहीं
- इस सूची में Xbox, PlayStation, Naukri, और Upstox जैसी ऐप्स शामिल थीं
- categories बहुत व्यापक थीं, इसलिए यूज़र profiling और behavioral profile बनाने के लिए डेटा collection की संभावना बड़ी है
- Google इंस्टॉल्ड ऐप सूची को personal and sensitive user data मानता है
- Zepto ने डिवाइस पर 165 ऐप्स चेक करने के लिए manifest में registration किया था
- इसमें Netflix, Bumble, Binance जैसी कई categories की लोकप्रिय ऐप्स शामिल थीं
- ऐसी रिपोर्ट आई थी कि Zepto ने iOS और Android यूज़र्स को अलग कीमतें दिखाईं, और कुछ ग्राहकों ने अलग-अलग Android फ़ोनों के बीच भी price differences report किए
- यूज़र Play Store से ऐप इंस्टॉल करते समय यह नहीं देख सकते कि उसके manifest में कौन-सी ऐप query list शामिल है
डिलीवरी राइडर ऐप्स और personal loan ऐप्स की query range
- Swiggy और Zepto के delivery rider ऐप्स की ऐप query list उनके consumer ऐप्स से अलग थी
- दोनों ऐप्स में ऐसे entries शामिल थे जिनसे पता चल सकता था कि rider किन दूसरी कंपनियों के लिए काम करता है
- Swiggy personal loan ऐप्स, personal finance ऐप्स, और Ludo King, Carrom Pool जैसे game ऐप्स तक चेक कर रही थी
- भारत के personal loan ऐप्स की predatory practices documented हैं, और कुछ साल पहले बड़े crackdown में Play Store से हज़ारों ऐप्स हटाई गई थीं
- KreditBee Play Store के personal loan category की top ऐप्स में से एक है, इसके 5 करोड़ से ज़्यादा downloads हैं, और इसने manifest में 860 ऐप्स चेक की थीं
- इसमें Tamil Calendar, Odia Calendar, Qibla Direction Finder, मंदिर ऐप्स, और astrology ऐप्स जैसी entries भी थीं
Jodii for Diploma, +2,10 below नाम की matrimonial ऐप, जो हाई स्कूल पास न करने वालों के लिए है, और मवेशी-भैंस खरीद-बिक्री ऐप 소와 버팔로 사고팔기 Animall भी उदाहरण के रूप में दिखीं; दोनों के 1 करोड़ से ज़्यादा downloads हैं
- Moneyview भी 5 करोड़ से ज़्यादा downloads वाली personal loan ऐप है और इसके manifest में 944 ऐप्स शामिल थीं
- Play Store policy personal loan ऐप्स द्वारा
QUERY_ALL_PACKAGES के इस्तेमाल को स्पष्ट रूप से सीमित करती है, लेकिन KreditBee और Moneyview ने मनचाही ऐप्स को manifest में एक-एक करके list करके इस सीमा को बाइपास किया
QUERY_ALL_PACKAGES के बिना ऐप सूची देखने का तरीका
- जांचे गए ऐप्स में high-risk, sensitive permission
QUERY_ALL_PACKAGES को manifest में शामिल करने का मामला सिर्फ Cred का था
- Play Store इस permission के लिए उन ऐप्स को “temporary exception” देता है जिनका financial regulated products से जुड़ी financial transactions को facilitate करने का सत्यापित core purpose हो
- उसी category के PhonePe और PayTM के manifest में यह permission नहीं थी
- Cred personal loans भी देता है, इसलिए Play Store की personal loan policy के हिसाब से यह इस exception के दायरे में नहीं लगता
- कुछ ऐप manifest में नीचे जैसा
ACTION_MAIN intent filter शामिल था
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
ACTION_MAIN filter स्क्रीन वाली ज़्यादातर इंस्टॉल्ड ऐप्स पर visibility देता था, और QUERY_ALL_PACKAGES permission के बिना भी फ़ोन की ऐप सूची देखी जा सकती थी
- यही setting डालकर बनाए गए एक basic Android ऐप से इंस्टॉल्ड ऐप्स query करने पर फ़ोन की पूरी ऐप सूची वापस मिली
- random तरीके से analyze किए गए भारतीय ऐप्स 47 में से 31 ने यह filter इस्तेमाल किया, यानी लगभग हर 3 में 2 ऐप्स
- इस्तेमाल करने वाले ऐप्स: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
- इस्तेमाल न करने वाले ऐप्स: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
- Swiggy के पास
ACTION_MAIN filter भी था, लेकिन उसने ऐप query list को अलग से स्पष्ट रूप से भी list किया था, जिससे उसके data collection practices का एक हिस्सा सामने आता है
- पढ़ी गई manifest files android-manifest-files पर सार्वजनिक हैं, और इनमें से ज़्यादातर 18 या 19 मार्च को download की गई थीं
- यह setting सिर्फ भारतीय कंपनियों के ऐप्स तक सीमित नहीं थी
- Facebook, Instagram, Snapchat, Subway Surfers, और Truecaller में भी यही setting थी
- Amazon, Spotify, X, Discord, और WhatsApp में यह नहीं थी
इंस्टॉल्ड ऐप डेटा और SMS permission की संवेदनशीलता
- इंस्टॉल्ड ऐप डेटा संवेदनशील personal data है
- 2022 में Vice ने रिपोर्ट किया था कि Roe v. Wade पलटे जाने की संभावना की खबर के तुरंत बाद Narrative नाम का एक data marketplace period-tracking ऐप डाउनलोड करने वाले यूज़र्स का डेटा बेच रहा था
- किसी ऐप के manifest में इंस्टॉल्ड ऐप query के अलावा ऐसी permissions भी बड़े पैमाने पर शामिल हो सकती हैं जो ज़रूरत की सीमा से बाहर लगती हैं
- Zepto
READ_SMS permission मांगता है
- यूज़र इसे मना कर सकते हैं, लेकिन Zepto Postpaid के लिए sign up करते समय यह अनिवार्य है
- permission देने पर कई बैंकों के TRAI sender ID के साथ Blinkit, Swiggy, Bigbasket, और Flipkart के SMS भी उसके दायरे में आते हैं
- ऐसा लगता है कि यह Postpaid plan eligibility check के लिए bank SMS पढ़ता है, लेकिन यूज़र उस feature को चुने बिना भी इन्हें पढ़ा जा सकता है
READ_SMS जैसी permission देने के बाद यूज़र यह नहीं देख सकते कि ऐप कब और क्या access कर रही है
- Android ऐप installation जानकारी का इस्तेमाल app developers और data brokers द्वारा profiling, ad network data के साथ cross-reference, और pricing जैसे उद्देश्यों के लिए किया जा सकता है
1 टिप्पणियां
Hacker News की राय
ACTION_MAIN loophole पर पहले ही चर्चा हो चुकी है: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
Google इसे patch करने की कोशिश नहीं कर रहा। सोचता हूं, अगर इसे Android VDP में permission bypass के तौर पर submit किया जाए तो क्या होगा
bypass के बारे में लेखक का SO सवाल भी है: https://stackoverflow.com/q/79527331
उस समय, अभी-अभी डाउनलोड किए गए किसी random game को default launcher बनाने के लिए Android का पूछना ही संदिग्ध apps के लिए काफी risky interaction बन जाएगा। संभावना है कि user बाहर निकलकर report करे, या कोई कम जानकार user उसे default launcher चुन ले, home screen खराब कर बैठे और Play Store में report कर दे। असल में launcher-level app के तौर पर distribute करने के लिए automated tests और extra requirements भी लगेंगे, जो developer पर बोझ होंगे
यह मानना मुश्किल है कि Google engineers को इस widely used loophole के बारे में पता नहीं होगा, लेकिन जानना चाहूंगा कि क्या कोई source है कि Google ने fix करने से इनकार किया
मुझे अब भी बिल्कुल समझ नहीं आता कि native “apps” की जरूरत क्यों है। आज तक मैंने ऐसा कोई “app” नहीं देखा जिसके लिए website या webapp काफी न हो, और ज्यादातर मामलों में webapp शायद बेहतर ही होता
“app” का इकलौता फायदा यही लगता है कि developer उस personal information तक पहुंच सकता है जिसकी असल में जरूरत नहीं होती
“App Store” पर उपलब्ध होने का फायदा भी है, लेकिन App Store एक बेकार concept है जिसे Apple/Google ने बिक्री से बड़ा हिस्सा लेने के लिए बनाया है
web browser ठीक-ठाक sandboxing देता है, “submission” fee नहीं होती, और हर phone पर हर व्यक्ति उसे access कर सकता है
व्यवहार में ज्यादातर mobile webapps खराब होते हैं। user experience native apps के आसपास भी नहीं पहुंचता। मुझे text select हो जाना पसंद नहीं, हर page पर pull-to-refresh होना पसंद नहीं, और left swipe करने पर previous page पर जाना भी पसंद नहीं
इन समस्याओं को bypass करने के तरीके मिल सकते हैं, लेकिन नई Silk library(https://silkhq.co/) native experience के काफी करीब पहुंचने वाली पहली मिसाल लगती है। लेकिन इसका paid library होना ही दिखाता है कि यह समस्या कितनी मामूली नहीं है
native apps बहुत कुछ कर सकते हैं जो browser ठीक से नहीं कर पाता या बिल्कुल नहीं कर पाता। जैसे heavy video/audio editing, ज्यादा RAM access, GPU computation का इस्तेमाल, hardware के करीब वाले tasks—इनके लिए सिर्फ browser अभी भी पर्याप्त नहीं है
इसका मतलब यह नहीं कि Apple और Google ने इसे जिस तरह implement किया है वह अच्छा है, लेकिन मुझे नहीं लगता कि सिर्फ webapps वाला future आएगा। इसी वजह से फिलहाल मैं अपने real computer को Chromebook से replace नहीं करूंगा
लेकिन जो apps device पर offline काम करते हैं, और मेरे data को उन services में नहीं फैलाते जिन्हें मैं control नहीं करता, वे अब भी अच्छे हैं। मैं जहां भी रहूं, internet connection पर निर्भर नहीं रहना चाहता
जंगल या पहाड़ों में रास्ता दिखाने वाले offline OsmAnd/Organic Maps apps अच्छे लगते हैं, और third-party server के बजाय मेरे local device से सीधे connect होकर data share करने वाले apps भी अच्छे हैं
अगर संभव हो तो सभी apps offline-first बनाए जाने चाहिए, और जरूरत पड़ने पर ही internet मांगना चाहिए। जो app internet के बिना काम ही नहीं कर सकता, उसके लिए webapp काफी है और उसे मेरे device पर होने की जरूरत नहीं
सोचता हूं आपने आखिरी बार mobile web पर flight ticket कब book किया था। browser जो screen space लेता है, उससे कैसे निपटते हैं, यह भी समझ नहीं आता। apps authentication cache कर सकते हैं और FaceID से handle कर सकते हैं, जबकि हर बार login करना भी समस्या है
इसलिए Hacker News अच्छा लगता है
कल मुझे यह पोस्ट मिली और मैंने इसे Reddit के Android बोर्ड पर डाला: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
0 upvotes, और comments उदास लोगों या bots जैसे reactions से भरे थे
यहाँ यह दूसरे स्थान के आसपास है, और ज्यादातर comments दिलचस्प हैं
कई subreddits dead हैं, लेकिन r/android उनमें सबसे खराब के करीब है
ऊपर से, topic-specific subreddits आम तौर पर ऐसे लोगों द्वारा moderate किए जाते दिखते हैं जिनका उस topic में vested interest है, और यह community के लिए नुकसानदेह है। मैंने Meta के Llama के किस proprietary license के तहत होने और उस license का ठीक-ठीक मतलब क्या है, इस पर detail में एक पोस्ट डाली थी, लेकिन r/LocalLlama moderators ने बिना वजह manually delete कर दी, और rules को बेहतर समझने के लिए पूछने पर भी यह नहीं बताया कि क्यों हटाई
पिछली “Reddit purge” के दौरान जब कई community moderators को Reddit employees से replace किया गया, तो मुझे लगता है कि platform का बड़ा हिस्सा अलग-अलग companies को अपनी जगह खुद moderate करने के लिए बेच दिया गया होगा
title के नीचे “past” link दबाओ तो 2 दिन पुराना thread है, जो पूरी तरह dead है
Hacker News constructive criticism के concept को समझता है
“सामान्य categories से आगे जाकर Tamil Calendar, Odia Calendar, Qibla Direction Finder, mandir apps, astrology apps जैसी चीजें भी जांचता है। वे जानते हैं कि वे क्या कर रहे हैं” वाला हिस्सा मुख्य है
यह loan app लोगों को जातीय/क्षेत्रीय पहचान (Tamil, Odia) और धर्म (Qibla Direction Finder यानी मुस्लिम, mandir app यानी हिंदू) के आधार पर profile कर रहा है
HSBC UK Android app installed apps को देखता है, और अगर किसी app के पास कुछ खास permissions हों तो launch करने से मना कर देता है। उदाहरण के लिए alternative launcher नहीं होना चाहिए, और अब तो Google app store के बाहर से installed एक भी app हो तो भी launch करने से मना कर देता है
मैंने पहले यहाँ भी शिकायत की थी, लेकिन अंत में hardware security device मांगकर website ही इस्तेमाल करने लगा
सोचता हूँ क्या वे यह कहते भी हैं कि यह data company को भेजा नहीं जाता
“मेरे phone में Xbox या Playstation app installed है या नहीं, यह जानना Swiggy की core functionality के लिए क्यों जरूरी है? Naukri या Upstox app है या नहीं जानने से groceries मेरे घर तक deliver करने में क्या मदद होगी?” इस सवाल का जवाब fingerprinting purpose है
banking apps भी इसी तरह; अगर scammer हो तो target कौन सा bank इस्तेमाल करता है, यह पहले से जानना वाकई useful है
खासकर अगर इसे phone number से link किया जा सके, तो ऐसी जानकारी चाहने वाले groups काफी होंगे
“file managers, browsers, antivirus apps जैसे बहुत specific use cases के लिए Google QUERY_ALL_PACKAGES permission exception देता है, ताकि installed apps की पूरी list देखी जा सके” वाले हिस्से में, समझ नहीं आता कि browser को installed apps enumerate करने की जरूरत क्यों है
क्यों?!
यानी Google product management को दोष दो
उदाहरण के लिए Obsidian पूरे file system की permission मांगता है, जबकि असल में user ने जो file दिखाने को कहा है, उसी तक access काफी है
यह बहुत useful feature है, इसलिए इसके हटने पर बुरा लगेगा
“हर कोई आपके फोन के सभी ऐप जानता है” वाली बात Android फोन के बारे में है। iPhone में ऐसी privacy protection कमी नहीं है
https://blog.verichains.io/p/technical-analysis-improper-use...
Android में आजकल standard तरीका work profile इस्तेमाल करना है, जिसमें सिर्फ work profile के अंदर के ऐप्स देखे जा सकते हैं
ऐप बनाने के सबसे बड़े incentives में से एक यूजर से तरह-तरह का डेटा scrape करना है। देखिए कितने ऐप्स contacts access permission मांगते हैं, और उनमें से कितने ऐप्स को असल functionality के लिए contacts की सच में जरूरत होती है। इसलिए अब भी थोड़ा आश्चर्य होता है कि ऐसी खोजों पर इतने लोग चौंक जाते हैं
पहले custom URI scheme के जरिए ऐप से communicate करने की कोशिश की जा सकती थी, और अगर success मिलती तो पता चल जाता कि वह ऐप installed है। Twitter ने इसे fingerprinting के लिए इस्तेमाल किया था
अब ऐप को special intents accept करने होते हैं, और उस purpose के लिए इस्तेमाल किए जाने वाले ऐप्स की list explicitly बतानी होती है
हाल में उनके LLM feature में बड़ा update आया, तो मैंने ऐप install करके देखा। ऐप installed रहने के दौरान जब भी mobile website देखता था, ऐप पर जाने को कहने वाला बड़ा banner दिखता था, और ad blocker या distraction blocker से भी नहीं हटता था। ऐप फिर से delete किया तो वह गायब हो गया
ऐसा क्यों होता है? मैं जानना चाहता हूं कि mobile website को ऐप install होने का पता कैसे चलता है। जब ऐप installed नहीं होता, तो content/distraction blocker से ऐप इस्तेमाल करने के prompts सभी block किए जा सकते हैं, लेकिन installed होने पर ऐसा क्यों नहीं हो पाता?
Root की जरूरत है, लेकिन LSPosed[1] module XPrivacyLua[2] जैसी चीज़ों से इसे block या spoof किया जा सकता है। सुना है closed-source AppOps[3] भी है, लेकिन मैंने इस्तेमाल नहीं किया
[1]: https://lsposed.org
[2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
[3]: https://appops.rikka.app
दिलचस्प है कि XPrivacyLua अब supported नहीं है, और उसका pro companion app Google द्वारा Play Store से हटाया जाने वाला है, क्योंकि वह QUERY_ALL_PACKAGES permission इस्तेमाल करता है
[0]: https://github.com/M66B/NetGuard
[1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
सोच रहा हूं कि क्या Windows apps, खासकर वे जो MS Store से install नहीं किए गए हैं, सभी open windows के titles enumerate कर सकते हैं। सिर्फ title के आधार पर पूरे web traffic को monitor करना किसी app के लिए कितना मुश्किल होगा?
यह सचमुच सवाल है। ChatGPT हर बात पर हां में हां मिलाता है, इसलिए खास मदद नहीं करता; मुझे किसी ऐसे व्यक्ति की जरूरत है जो बताए कि real world में यह feasible क्यों नहीं है
इस उद्देश्य के लिए EnumWindows() और EnumChildWindows() functions हैं
इस feature के उदाहरण के तौर पर “Windows Modifier v2.00” utility और Microsoft का Spy++(SPYXX.EXE) देख सकते हैं। जब मैंने इसे पहली बार लिया था, तब इससे जुड़े कई pages थे, लेकिन अब exact नाम से search करने पर भी लगभग कुछ नहीं मिलता—ऐसा लगता है जैसे internet अच्छी तरह भूलने लगा है
जिन apps पर भरोसा नहीं है, उनका समाधान है कि उन्हें बिल्कुल न इस्तेमाल करें या VM में इस्तेमाल करें
कम से कम Windows और अधिकांश traditional *nix systems, खासकर X11 में यह बात सही है
इस मामले में Android ने एक चीज़ अच्छी की है। default रूप से वह सभी applications को अलग-अलग users के रूप में चलाता है। यानी home folder अलग होता है और वे दूसरे apps नहीं देख सकते
फिर भी ManicTime या ActivityWatch जैसे tools, browser plugin install न होने पर, window title से browser history track करते हैं
https://www.manictime.com/
https://activitywatch.net/
खासकर “UAC [अब भी] security barrier नहीं है” बात सही है। जब आप process को elevate करने के लिए confirm दबाते हैं या password डालते हैं, तो असल में आप पूरे desktop और उस पर चल रही हर चीज़ को साथ में elevate कर देते हैं