Всички знаят какви приложения сте си инсталирали във вашия телефон
Оригиналът е на Pea Bee
Допреди няколко години всяко приложение, инсталирано на Android устройство, можеше да вижда всички други приложения без каквото и да било разрешение.
През 2022 г., с излизането на Android 11, Google премахна този достъп за разработчиците на приложения. Според новата политика за видимост на пакетите приложенията трябва да виждат другите приложения само ако тези приложения са необходими за основната им функционалност. Освен това разработчиците трябва изрично да декларират тези приложения в задължителния конфигурационен файл AndroidManifest.xml за всички Android приложения.
В екстремни случаи, като например за файлови мениджъри, браузъри и антивирусни програми, Google предоставя изключение под формата на разрешението QUERY_ALL_PACKAGES, което позволява да се виждат всички инсталирани приложения.
Не използвам Android на основния си телефон, но имам резервен и ми стана много любопитно кои приложения от независими компании съдържат проверки на другите приложения, които съм инсталирал.
Изтеглих няколко десетки приложения, които просто ми хрумнаха, и започнах да разглеждам техните манифестни файлове. Със сигурност те ще уважават личните ми данни и ще изискват само приложенията, които са необходими за основната им функционалност, нали?
Струва си да се отбележи, че приложенията може да имат напълно основателни причини да проверяват другите приложения, инсталирани в телефона ви. Така например дадено приложение може да проверява за инсталирани приложения на UPI [забележка: Unified Payments Interface е индийската система и протокол за незабавни плащания], за да покаже съответните методи за плащане. Повечето от манифестите, които проучих, съдържаха проверки за тези приложения. Някои от тях търсеха и клонирани приложения или приложения с множество акаунти, вероятно с цел сигурност и откриване на измами. Всичко това е напълно приемливо.
Но някои индийски компании са отишли много, много по-далеч в тези проверки. Нека започнем със Swiggy: нейният манифест файл изброява цели 154 приложения, което ѝ позволява да търси и иска тези приложения в телефона ми. Ето го и пълният списък:

Дори не знам откъде да започна да анализирам тази лудост. Как информацията за това дали имам инсталирано приложение за Xbox или Playstation на моя телефон е свързана с основната функционалност на Swiggy? Как знанието дали имам инсталирано Naukri (приложение за търсене на работа) или Upstox (приложение за брокерски услуги) помага за доставката на храна?
В този списък има широк спектър от софтуерни категории и от него става ясно, че Swiggy почти сигурно събира данни за инсталираните приложения, за да профилира потребителите и да изгради поведенчески профил на клиентите. Струва ми се, че това нарушава политиката на Play Store, която счита списъка с инсталирани приложения за лични и чувствителни данни на потребителя.
Това ми напомня за една презентация на Blume Ventures. В нея има интересен слайд с приложения, използвани в различните „Индии“ [Презентацията разделя пазара на цялата страна на три слоя според нивото на доходите:]

Swiggy се обръща към повечето от тези и други приложения. Тя не само знае към коя „Индия“ принадлежи потребителят, но може да определи и къде се намира той.
Нека сега поговорим за друго приложение, това е обичайният заподозрян, ненадминатият шампион на тъмните шаблони за проектиране – Zepto. В неговия манифест се съдържа списък от 165 приложения, които се проверяват в устройството.

В списъка са включени почти всички популярни приложения от всички категории – от Netflix до Bumble и Binance. Неотдавна се появиха съобщения, че Zepto показва различни цени на потребителите на iOS и Android. С тези данни приложението може да показва и различни цени за различните телефони с Android, нещо, което някои потребители вече наблюдават.
Въпреки че Swiggy и Zepto са длъжни да обявят тези приложения в манифестния си файл, няма начин ние като потребители да видим този списък, като изтеглим приложението от Play Store.
Анализирах и приложенията Swiggy и Zepto за техните куриери. Списъкът с исканите приложения е различен и при двете. И в двете има проверки за това за какви други компании работи доставчикът. Ето списъка на Zepto:

Но Swiggy отива още по-далеч – тя проверява и приложенията за потребителски кредити, за лични финанси и дори следи приложения като Ludo King и Carrom Pool на телефоните на куриерите [забележка: това са приложения за онлайн версиите на популярните настолни игри ludo и carrom].

Дори не можем да играем Ludo на спокойствие, без работодателите ни да ни шпионират! Swiggy трябва да следи свободното време на куриерите? Възмутително е, че Swiggy смята, че е трябвало да включи тези нелепи проверки на приложенията в телефоните на куриерите.
Като говорим за индийските приложения за потребителски кредити – техните хищнически практики са подробно документирани. Преди няколко години бяха предприети строги мерки, които доведоха до премахването на хиляди такива приложения от Play Store. Разгледах част от тях, които продължават да съществуват.
В класацията на Play Store приложението Kreditbee е на първо място в списъка на приложенията за потребителски кредити с 50 милиона изтегляния. А знаете ли колко други приложения се проверяват от него? 860!!! Извинявам се, може да се наложи да присвиете очи, за да разгледате целия списък.

Разгледах този списък само накратко, има твърде много приложения. Надявам се, че някой, който чете това, ще направи подробен анализ. Вероятно заради информационния балон, в който живея, не съм чувал за повечето от тези приложения, въпреки че много от тях имат десетки милиони изтегляния.
Освен обичайните категории, забелязах, че се проверяват и приложения като Tamil Calendar, Odia Calendar, Qibla Direction Finder, религиозни и астрологични приложения. Разработчиците знаят точно какво правят.
В списъка е „Jodii for Diploma, +2.10 below“, приложение за запознанства за хора, които не са завършили гимназия. То има над 10 милиона изтегляния.
Там можете да намерите и „गाय भैंस खरीदें बेचें Animall“ (пазар за купуване/продаване на крави?) също с над 10 милиона изтегляния.
Този списък с приложения дава представа за начина, по който по-голямата част от Индия използва телефоните, за тяхното ежедневие, навици и приоритети.
Друго водещо приложение за потребителски кредити, Moneyview, с над 50 милиона изтегляния, включва проверки за цели 944 приложения – най-дългият списък от всички приложения, които съм проучвал. Няма да го включвам в тази публикация, можете да го видите в пълен вид отделно.
Това, което ме изненада, е, че KreditBee и Moneyview преминават успешно проверката на Play Store. Политиката на Play Store изрично забранява на приложенията за потребителски кредити да използват разрешението QUERY_ALL_PACKAGES. Но приложенията заобикалят това ограничение, като ръчно изброяват всяко приложение, което искат да проследяват, в манифестния файл.
Открих само един манифестен файл, съдържащ разрешението QUERY_ALL_PACKAGES – този на приложението Cred. Магазинът Play издава „временно изключение“ за добавяне на това разрешение, ако приложенията са „предназначени за улесняване на финансови транзакции, включващи финансово регулирани инструменти“.
Но нито едно от другите приложения, които анализирах в същия сегмент като Cred, като PhonePe и PayTM, нямаше това разрешение в манифестните си файлове. Всъщност Cred също предоставя потребителски кредити и следователно, според политиката на Play Store, не може да получи това изключение. Не знам как Cred е успяла да запази това изключение, което ѝ позволява да преглежда всички приложения на телефона, без да посочва конкретен списък.

Прочетох манифестните файлове на около петдесет популярни приложения от индийски компании. С изключение на Swiggy, Zepto, Cred и няколко приложения за потребителски кредити, повечето съдържаха доста разумни и уважаващи потребителите списъци с искания за приложения.
Очаквах най-лошото. Може би съм прекалено циничен по отношение на тези приложения – нима не могат да бъдат съвсем почтени?
Бях на път да приключа изследването си, но забелязах няколко интересни реда, докато разглеждах манифестния файл на едно от тези приложения:
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
Не съм експерт по Android програмиране, но доколкото разбирам, филтърът ACTION_MAIN в конфигурацията, показана по-горе, ви позволява да видите всички инсталирани приложения, които, казано опростено, имат достъп до екрана.
Тъй като повечето инсталирани приложения имат потребителски интерфейс, този филтър дава на разработчиците достъп до преглед на всички приложения на телефона, без да се налага да разрешават QUERY_ALL_PACKAGES!
Нахвърлих едно малко Android приложение, използвайки LLM, и добавих същия филтър ACTION_MAIN към манифестния файл. И когато се опитах да направя запитване за инсталираните пакети, както се очакваше, този малък хак ми позволи да върна списъка с всички приложения в телефона!
Това изглежда като огромна дупка в защитата на личните данни на Android. Но предполагам, че Play Store вероятно ще блокира приложенията, които използват този хак, защото това е явно нарушение на политиките за защита на данните на потребителите?
От 47 произволно избрани индийски приложения филтърът ACTION_MAIN е използван в 31.
Ето и приложенията, които използват този хак:
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
Дори глупавата Ludo King има този филтър в своя файл с манифести. Така че повечето независими компании могат да видят всички приложения в телефона ви, но просто го правят малко по-дискретно от приложения като Swiggy и Zepto. Така че те по никакъв начин не са с добра репутация.
Всъщност Swiggy също има тази конфигурация на филтъра, но по някаква причина има и изричен списък на исканите приложения, въпреки че лесно би могла да го направи тайно. Все пак не се оплаквам. Този пропуск ми позволи да проуча практиките на Swiggy за събиране на данни. Ако Google прилагаше тази политика правилно, щяхме да знаем какви приложения търсят и другите компании.
Всички манифестни файлове, които проучих, са публикувани в моя Github. По-голямата част от тях бяха изтеглени.
Тази хакерска атака се прилага не само от приложения на индийски компании. Проверих манифестите на някои други популярни приложения. Facebook, Instagram, Snapchat, Subway Surfers и Truecaller имат тази конфигурация. Amazon, Spotify, X, Discord и WhatsApp не разполагат с нея. Други приложения не съм изследвал.
Това ме накара да се запитам: какъв е смисълът на политиката на Google за видимост на пакетите? Предполага се, че тя защитава потребителите, но повечето приложения изглежда все пак са намерили начини да я заобиколят.
А данните за инсталираните приложения са много чувствителни и лични. През 2022 г. Vice съобщи, че пазарът на данни Narrative продава данни за потребителите, които изтеглят приложения за проследяване на менструацията си, точно след като се появиха новини за възможното отменяне на решението по делото Роу срещу Уейд (с което в САЩ се въведе федерално защитено право на аборт). Това е много плашеща ситуация.
Инсталираните приложения са един от примерите за предоставяне на данни. Голямото разнообразие от разрешения, включени от всички приложения в техните манифестни файлове, често е много по-голямо от необходимото; надявам се някой да анализира и тях.
Ще завърша тази публикация с един малък пример от Zepto. Едно приложение иска разрешение за READ_SMS. Можете да го откажете, но то е задължително, ако се абонирате за Zepto Postpaid.
Ако дадете разрешението, приложението проверява следния списък с идентификатори на изпращачи в пощенската кутия:

Повечето от тях са ID на банки. Приложението вероятно ги чете, за да разбере дали да позволи на потребителя да избере възможност за разсрочено плащане. То може да ги прочете дори ако не сте го разрешили. Също така, обърнете внимание, че SMS от Blinkit, Swiggy, Bigbasket и Flipkart [забележка: други услуги за доставка на храна] са включени в списъка.
Вероятно конкурентите правят същото, просто не оставят такива очевидни доказателства в самото приложение.
Когато дадено приложение получи разрешения като READ_SMS, ние, потребителите, няма как да видим какво чете то.
Следващия път, когато инсталирате приложение в Android устройство, не забравяйте, че тази информация се споделя със света. Брокерите на данни ще я използват, за да ви профилират, ще я свържат с данните от други рекламни мрежи и в крайна сметка тази информация ще бъде използвана, за да се определи колко да ви таксуват, когато поръчвате например шаурма онлайн.









