Някои устройства Marshmallow са податливи на кражба, при която приложение наслагва текст върху диалогов прозорец за разрешение, за да подмами потребителя.
Докато много от нас отделят слюнка за новоиздадения Android Nougat за устройства Nexus, по-голямата част от потребителите все още използват Android Marshmallow. Експлойт, чието съществуване е документирано оттогава поне средата на 2015 г все още засяга много съвременни устройства с Android.
Злонамерените приложения могат да чешма вашите действия в давайки им разрешение, което никога не сте давали изрично. Ето как работи експлойтът.
Завръщането на кражбите
Представете си, че отваряте Instagram и се опитвате да споделите снимка, която наскоро сте направили, докато сте били на почивка. Когато изберете да прегледате галерията си за снимка, Instagram ви моли да му предоставите разрешение за достъп до вашето хранилище. Но когато докоснете „да“, се срещате със съобщение за грешка.
Не можете да дадете разрешение за съхранение за Instagram, защото имате активирано наслагване на активен екран - в този случай е едно от многото приложения, които оцветяват екрана ви, така че да можете да използвате телефона си през нощта, без да заслепявате себе си. Това е случай на системата за разрешения на Android
работи по предназначение: за да предоставите на приложение чувствително разрешение, трябва да деактивирате всички наслагвания на екрана, които имате на вашето устройство.Приложения, които имат способността да рисуват върху вашия екран, биха могли потенциално да ви подмамят да му предоставите чувствителни данни. Например наслагването на екрана може да постави въведена фалшива парола върху истински екран за влизане, за да събере вашите пароли. Експлойт като този се нарича "кражба" и се появи и беше коригиран на различни версии на Android през годините, с един от най-лошите примери, продължил до Android 4.0.3. Но наскоро експлойтът се завърна с Моделът на разрешения по време на изпълнение на Android Marshmallow.
Разработчик на име Иво Банас създаде приложение демонстриране на експлойта. Начинът, по който работи е сравнително прост - когато дадено приложение показва диалогов прозорец за разрешение, злонамереното приложение който сте инсталирали, ще покаже системно наслагване, за да прикрие текстовия блок на диалоговия прозорец за разрешение с какъвто и да е текст иска. Неволен потребител, който щракне върху „разреши“ в диалоговия прозорец за разрешение, ще бъде подмамен да даде разрешение, което му е поискано, но за което искането е скрито от погледа на потребителя. Подобен експлойт напълно проваля целта на системата за разрешения на Android Marshmallow от въвеждането на новият модел трябваше да гарантира, че потребителите ще получават само разрешения, за които изрично са се съгласили.
Сега знам за какво си мислиш. Ако Android открие системно наслагване и ми попречи да дам разрешения за съхранение на Instagram, няма ли да попречи на този експлойт да се случи? Отговорът е не, при моето тестване изглежда, че на определени устройства показването на текстово наслагване върху диалогов прозорец за разрешение не задейства защитния механизъм. Разработчикът на приложението за кражби с доказателство за концепция заявява, че експлойтът е ефективен, защото разчита на това, че потребителят инсталира вторично злонамерено приложение, което е насочено към API ниво 22 и по-ниско (преди Marshmallow). Това се дължи на факта, че преди Android Marshmallow всички приложения получават разрешения по време на инсталацията.
Добре, така че ако използвате Marshmallow, всичко, което трябва да направите, е да избягвате инсталирането на приложения, на които нямате доверие, които изискват разрешение за рисуване на наслагване, нали? Ако моделът на разрешения на Android работеше, както е изложено първоначално, щяхте да сте прави. Но след откриването на този експлойт, дори приложения, насочени към API ниво 23 (Marshmallow), които изискват разрешение за наслагване, представляват потенциален риск.
Пропуск в модела на разрешение?
Ако сте един от многото милиони хора, които използват Facebook Messenger за чат с приятелите си, тогава сте се натъкнали на една от най-добрите функции на Android - възможността приложенията да рисуват върху други екрани. Колко готино е, че можете да имате балон с любимия си групов чат във Facebook, който да следва потребителя върху всяко приложение, което отвори? Въпреки че Messenger на Facebook въведе идеята за "плаващи приложения" в мейнстрийма, концепцията съществува от известно време в Android. Приложенията са в състояние да създават наслагвания върху вашите приложения от известно време, благодарение на съществуването на TYPE_SYSTEM_OVERLAY в WindowManager на Android.
Преди Android Marshmallow, приложенията ще трябва да поискат разрешение, наречено SYSTEM_ALERT_WINDOW по време на инсталацията, преди да може да показва наслагвания в горната част на екрана ви. Но това се промени с въвеждането на детайлния модел на разрешение за изпълнение на 6.0. Потребителите сега ще трябва да предоставят разрешения на приложения, когато действително стартират приложението, което се надяваме да стимулира средното ниво потребителите да защитават собствените си лични данни от приложения, които подозрително изискват привидно функционално несвързани разрешения.
SYSTEM_ALERT_WINDOW обаче не е като другите разрешения. Разработчиците не могат да показват диалогов прозорец, за да поискат програмно разрешението да бъде предоставено от крайния потребител, както повечето други разрешения за всяко приложение, насочено към Marshmallow. Вместо това трябва ръчно да отидете до екрана с настройки и сами да активирате разрешението. Разбира се, някои приложения като Facebook Messenger ще ви помогнат в процеса.
Google изисква това от разработчиците, защото те са счели разрешението за "особено чувствителен."
Специални разрешения
Има няколко разрешения, които не се държат като нормални и опасни разрешения. SYSTEM_ALERT_WINDOW и WRITE_SETTINGS са особено чувствителни, така че повечето приложения не трябва да ги използват. Ако дадено приложение се нуждае от едно от тези разрешения, то трябва да декларира разрешението в манифеста и да изпрати намерение с искане за разрешение на потребителя. Системата отговаря на намерението, като показва подробен екран за управление на потребителя.
Като се има предвид това, което знаем по-горе за кражбите, това има смисъл. Но тук е работата. Google дори не следва собствените си правила. Екранните снимки на Facebook Messenger, които ви водят през процеса на предоставяне на разрешението SYSTEM_ALERT_WINDOW, което ви показах по-горе? Това се случва само ако инсталирате APK извън Google Play Store. Ако инсталирате приложение от Google Play Store, Разрешението SYSTEM_ALERT_WINDOW се предоставя автоматично.
Google пожертва безопасността за удобство
Дълго време преди Android Marshmallow, SYSTEM_ALERT_WINDOW се смяташе за "опасно" разрешение. С Android Marshmallow 6.0 разрешението беше променено на подпис|система|прил което първоначално изисква от разработчиците да отведат потребителя до екрана с настройки, за да дадат разрешение. Но с Android версия 6.0.1, SYSTEM_ALERT_WINDOW беше променен така че Google Play Store може да предостави автоматично разрешениетобез да уведомява потребителя. Защо Google направи тази промяна не ни е ясно. Самите Google не са излезли и не са посочили защо са направили тази промяна, което е особено странно като се има предвид езикът за SYSTEM_ALERT_WINDOW, който все още съществува на техните уеб страници.
Възможно е това достатъчно разработчици бяха ядосани от първоначалните промени в SYSTEM_ALERT_WINDOW, които изискваха потребителите ръчно да предоставят разрешението, което Google мълчаливо изостави и просто го предостави на всяко приложение, което го поиска. Но по този начин Google има пожертвана безопасност за удобство. Има причина самите Google да смятат разрешението за опасно за най-дълго време, защото е така. А съществуването на експлойта за кражба на разрешение Marshmallow е достатъчно доказателство за присъщите опасности при автоматичното предоставяне на това разрешение на всяко приложение.
Този експлойт за кражба на кражби беше привлечен на вниманието ни едва наскоро, въпреки че съществува вече много месеци. В нашето вътрешно тестване на устройства сред екипа на XDA Portal ние потвърдихме това експлойтът работи на много съвременни устройства с Android Marshmallow. Ето кратък преглед на устройствата, които тествахме на най-новите налични версии на софтуера за всяко съответно устройство и дали експлойтът за кражби работи или не. Устройствата, означени с „Уязвими“, са податливи на експлойт за кражби, докато устройствата, означени с „Не Уязвими" са в състояние да открият приложение, показващо наслагването, и да поискат да го деактивирате преди това продължаване.
- Nextbit Robin - Android 6.0.1 с корекции за сигурност през юни - Уязвим
- Moto X Pure - Android 6.0 с майски корекции за сигурност - Уязвим
- Honor 8 - Android 6.0.1 с корекции за сигурност от юли - Уязвим
- Motorola G4 - Android 6.0.1 с майски корекции за сигурност - Уязвим
- OnePlus 2 - Android 6.0.1 с корекции за сигурност през юни - Не е уязвим
- Samsung Galaxy Note 7 - Android 6.0.1 с корекции за сигурност от юли - Не е уязвим
- Google Nexus 6 - Android 6.0.1 с августовски корекции за сигурност - Не е уязвим
- Google Nexus 6P - Android 7.0 с августовски корекции за сигурност - Не е уязвим
Досега това са всички устройства, които успях да накарам екипа да тества. Не можах да намеря никаква връзка между версията на корекцията за сигурност и експлойта. Както можете да разберете от нашите най-новата дискусия относно актуализациите за сигурност на Android, така или иначе много хора не работят с най-новите корекции за сигурност и следователно е възможно да са уязвими към този експлойт и други, описани в Бюлетин за сигурността на Android.
Движа се напред
Призоваваме ви сами да тествате този експлойт на вашето устройство, за да видите дали сте уязвими. Компилирахме APK от изходният код, свързан по-горе (можете да го направите и сами) и сте ги качили в AndroidFileHost. За да тествате експлойта, трябва да инсталирате и двете основно приложение за кражби както и неговото помощна услуга. След това просто стартирайте основното приложение и щракнете върху бутона "тест". Ако текстово поле плува в горната част на диалоговия прозорец за разрешение и когато щракнете върху „разреши“, се показва списък с контакти на вашето устройство, тогава вашето устройство е уязвимо за кражба. Не се притеснявайте, че плаващото текстово поле не покрива изцяло диалоговия прозорец за разрешение, това приложение за доказателство на концепцията не е има за цел да демонстрира идеално как спретнато да се отвлече диалогов прозорец за разрешения, а по-скоро да докаже, че това наистина е така възможен.
Надяваме се, че е въведена корекция, която коригира този експлойт на всички устройства Marshmallow и че OEM производителите актуализират всичките си устройства до най-новата корекция за сигурност. Защото реалността е, че ще отнеме много месеци на повечето обещани устройства да получат Nougat, така че единственият начин за повечето потребителите да стоят далеч от опасности е или да инсталират най-новите корекции за сигурност, или да вземат разрешения на приложението за наблюдение себе си. Но с решението на Google автоматично да предостави потенциално опасното разрешение SYSTEM_ALERT_WINDOW, много потребителите несъзнателно стартират приложения, които потенциално биха могли да отвлекат телефоните им, за да предоставят повече и по-опасни разрешения.