Egyes Marshmallow-eszközök érzékenyek a koppintásra, ahol egy alkalmazás szöveget fed le az engedélyezési párbeszédpanel tetejére, hogy becsapja a felhasználót.
Míg sokan közülünk nyáladzik az újonnan kiadott Android Nougat Nexus készülékekhez, a felhasználók túlnyomó többsége még mindig Android Marshmallow-t használ. Egy exploit, amelynek létezését azóta dokumentálják legalább 2015 közepén még mindig sok modern Android-eszközt érint.
A rosszindulatú alkalmazások képesek tapjack cselekedeteit bele olyan engedélyt adsz nekik, amelyet soha nem adtál meg kifejezetten. Íme, hogyan működik az exploit.
A tapjacking visszatérése
Képzelje el, hogy megnyitja az Instagramot, és megpróbál megosztani egy képet, amelyet nemrégiben készített nyaralása közben. Amikor úgy dönt, hogy a galériában böngész egy képet, az Instagram arra kér, hogy adjon engedélyt a tárhelyéhez való hozzáféréshez. De amikor az „igen” gombra koppint, hibaüzenet jelenik meg.
Nem tudja megadni a tárolási engedélyt az Instagram számára, mert be van kapcsolva egy aktív képernyőfedvény Ebben az esetben a sok alkalmazás egyike, amely színezi a képernyőt, így éjszaka is használhatja telefonját vakítás nélkül saját magad. Ez az Android engedélyrendszer esete
rendeltetésszerűen működik: ahhoz, hogy egy alkalmazásnak bizalmas engedélyt adjon, le kell tiltania az eszközén található képernyőfedvényeket.Azok az alkalmazások, amelyek képesek átrajzolni a képernyőt, érzékeny adatokkal csalhatják meg. Például egy képernyőfedvény hamis jelszót helyezhet el egy valódi bejelentkezési képernyő tetején, hogy összegyűjtse jelszavait. Egy ilyen exploitot hívnak "csapolás" és az évek során különféle Android-verziókon bukkant fel és javították az egyik legrosszabb példa, amely egészen az Android 4.0.3-ig tart. De a közelmúltban az exploit visszatért Az Android Marshmallow futásidejű engedélymodellje.
Egy fejlesztő, a neve Iwo Banaś létrehozott egy Alkalmazás demonstrálja a kizsákmányolást. A működése meglehetősen egyszerű – amikor egy alkalmazás megjelenít egy engedélyezési párbeszédpanelt, akkor a rosszindulatú alkalmazás A telepített rendszer egy rendszerfedvényt jelenít meg, amely az engedélyezési párbeszédpanel szövegblokkját eltakarja bármilyen szöveggel akar. Az a nem szándékos felhasználó, aki rákattint az "engedélyezés" gombra az engedély párbeszédpanelen, ráveszik, hogy megadja azt az engedélyt, amelyet kértek tőle, de amelyre a kérést elrejtették a felhasználó szeme elől. Egy ilyen kizsákmányolás teljesen megsemmisíti az Android Marshmallow engedélyezési rendszerének célját, mivel a az új modellnek biztosítania kellett volna, hogy a felhasználók csak azokat az engedélyeket kapják meg, amelyekhez kifejezetten hozzájárultak.
Most már tudom, mire gondolsz. Ha az Android rendszerfedvényt észlelne, és megakadályozna, hogy Instagram-tárhelyengedélyeket adjak, nem akadályozná meg ezt a kizsákmányolást? A válasz nem, a tesztelésem során úgy tűnik, hogy bizonyos eszközökön az engedélyezési párbeszédpanel tetején szöveges fedvény megjelenítése nem aktiválja a biztonsági mechanizmust. A proof-of-concept tapjacking alkalmazás fejlesztője azt állítja, hogy az exploit hatékony, mert arra támaszkodik, hogy a felhasználó telepít egy másodlagos rosszindulatú alkalmazást, amely a 22-es és az alatti API-szintet célozza meg (Mályvacukor előtti). Ez annak a ténynek köszönhető, hogy az Android Marshmallow előtt minden alkalmazás engedélyt kap a telepítés során.
Oké, ha a Marshmallow-t használja, csak annyit kell tennie, hogy kerülje az olyan alkalmazások telepítését, amelyekben nem bízik, és amelyek engedélyt kérnek egy fedvény rajzolásához, igaz? Ha az Android engedélymodellje az eredetileg meghatározott módon működne, akkor igaza lenne. De mióta felfedezték ezt a kizsákmányolást, még a 23-as API-szintet célzó alkalmazások is (Marshmallow), amelyek az átfedés engedélyét kérik, potenciális kockázatot jelentenek.
Hiány az engedélymodellben?
Ha Ön egyike annak a sok millió embernek, akik a Facebook Messengert használják barátaival való csevegésre, akkor rábukkant az Android egyik legjobb funkciójára – az alkalmazások arra, hogy egymásra húzzanak képernyők. Milyen klassz, hogy kedvenc Facebook-csoportos csevegéseddel buborékot indíthatsz, és követheted a felhasználót bármely megnyitott alkalmazás tetején? Bár a Facebook Messenger behozta a "lebegő alkalmazások" ötletét a fősodorba, a koncepció már egy ideje létezik az Androidban. Az alkalmazások már egy ideje képesek fedvényeket létrehozni az alkalmazások tetején, köszönhetően a TYPE_SYSTEM_OVERLAY az Android WindowManagerben.
Az Android Marshmallow előtt az alkalmazásoknak engedélyt kell kérniük SYSTEM_ALERT_WINDOW telepítés közben, mielőtt fedvényeket jeleníthetett volna meg a képernyő tetején. Ez azonban megváltozott a 6.0-s részletes futásidejű engedélymodelljének bevezetésével. A felhasználóknak mostantól engedélyeket kell adniuk az alkalmazásoknak, amikor ténylegesen futtatják az alkalmazást, ami remélhetőleg fellendíti az átlagot a felhasználót, hogy megvédje saját személyes adatait az olyan alkalmazásoktól, amelyek gyanúsan látszólag funkcionálisan nem kapcsolódnak egymáshoz engedélyeket.
A SYSTEM_ALERT_WINDOW azonban nem olyan, mint a többi engedély. A fejlesztők nem jeleníthetnek meg párbeszédpanelt, amely programozottan kérheti az engedélyt a végfelhasználótól, mint a legtöbb egyéb engedély a Marshmallow-t célzó alkalmazásoknál. Ehelyett manuálisan kell navigálnia a beállítások képernyőre, és magának kell engedélyeznie az engedélyt. Természetesen néhány alkalmazás, például a Facebook Messenger, segít a folyamatban.
A Google ezt megköveteli a fejlesztőktől, mert ők az engedélyt ""különösen érzékeny."
Különleges engedélyek
Van néhány olyan engedély, amely nem úgy viselkedik, mint a normál és veszélyes engedélyek. A SYSTEM_ALERT_WINDOW és a WRITE_SETTINGS különösen érzékeny, ezért a legtöbb alkalmazásnak nem szabad használnia őket. Ha egy alkalmazásnak szüksége van ezen engedélyek valamelyikére, deklarálnia kell az engedélyt a jegyzékben, és el kell küldenie a felhasználó engedélyét kérő szándékot. A rendszer úgy reagál a szándékra, hogy részletes kezelési képernyőt jelenít meg a felhasználónak.
Tekintettel arra, amit fent tudunk a koppintásról, ennek van értelme. De itt a lényeg. A Google nem is tartja be a saját szabályait. A Facebook Messenger képernyőképei végigvezetnek a SYSTEM_ALERT_WINDOW engedély megadásának folyamatán, amelyet fent bemutattam? Ez csak akkor történik meg, ha az APK-t a Google Play Áruházon kívülről telepíti. Ha telepít egy alkalmazást a Google Play Áruházból, a A SYSTEM_ALERT_WINDOW engedély automatikusan megadva.
A Google feláldozta a biztonságot a kényelemért
Az Android Marshmallow előtt hosszú ideig a SYSTEM_ALERT_WINDOW a "veszélyes"engedély. Az Android Marshmallow 6.0 esetében az engedély a következőre módosult aláírás|rendszer|appop Ez az, amit kezdetben a fejlesztőknek kellett a beállítások képernyőre vezetniük, hogy megadják az engedélyt. De az Android 6.0.1-es verziójával SYSTEM_ALERT_WINDOW módosult hogy a Google Play Áruház automatikusan megadhatja az engedélyta felhasználó értesítése nélkül. Nem világos számunkra, hogy a Google miért hajtotta végre ezt a változtatást. A Google maga nem nyilatkozott arról, hogy miért hajtotta végre ezt a változtatást, ami különösen furcsa, ha figyelembe vesszük a SYSTEM_ALERT_WINDOW nyelvezetét, amely még mindig megtalálható a weboldalaikon.
Lehetséges, hogy elég fejlesztő haragudott a SYSTEM_ALERT_WINDOW kezdeti módosításai, amelyek megkövetelték a felhasználóktól, hogy manuálisan adják meg a Google által csendben megadott engedélyt, és csak megadták azt bármely alkalmazásnak, amely ezt kérte. De ennek során a Google megtette feláldozta a biztonságot a kényelemért. Megvan az oka annak, hogy a Google maga tartotta legtovább veszélyesnek az engedélyt, mert az. A Marshmallow engedély koppintás kihasználásának megléte pedig elegendő bizonyítéka annak, hogy milyen veszélyek fenyegetnek, ha automatikusan megadja ezt az engedélyt bármely alkalmazásnak.
Erre a csapásra való visszaélésre csak nemrég hívták fel a figyelmünket, bár már hónapok óta létezik. Az XDA Portal csapata által végzett belső eszközök tesztelése során ezt megerősítettük a kihasználás számos modern eszközön működik, amelyen Android Marshmallow fut. Itt található egy gyors összefoglaló azokról az eszközökről, amelyeket minden egyes eszközhöz a legújabb elérhető szoftververziókon teszteltünk, és hogy működik-e a koppintás kihasználása. A "Sebezhető" megjelölésű eszközök érzékenyek a koppintás kihasználására, míg a "Nem" jelzésű eszközök Sebezhető" képes észlelni a fedvényt megjelenítő alkalmazást, és kérni, hogy előtte tiltsa le folytatva.
- Nextbit Robin – Android 6.0.1 júniusi biztonsági javításokkal – Sebezhető
- Moto X Pure – Android 6.0 májusi biztonsági javításokkal – Sebezhető
- Honor 8 – Android 6.0.1 júliusi biztonsági javításokkal – Sebezhető
- Motorola G4 – Android 6.0.1 májusi biztonsági javításokkal – Sebezhető
- OnePlus 2 – Android 6.0.1 júniusi biztonsági javításokkal – Nem Sebezhető
- Samsung Galaxy Note 7 – Android 6.0.1 júliusi biztonsági javításokkal – Nem Sebezhető
- Google Nexus 6 – Android 6.0.1 augusztusi biztonsági javításokkal – Nem Sebezhető
- Google Nexus 6P – Android 7.0 augusztusi biztonsági javításokkal – Nem Sebezhető
Eddig ezek azok az eszközök, amelyekkel tesztelni tudtam a csapatot. Nem találtam összefüggést a biztonsági javítás verziója és az exploit között. Ahogy a mieinkből is megtudhatod legújabb vita az Android biztonsági frissítéseiről, sokan egyébként sem a legújabb biztonsági javításokat futtatják, így valószínűleg ki vannak téve ezzel a kizsákmányolással és más, a Android biztonsági közlemény.
Haladni előre
Arra biztatjuk, hogy saját maga tesztelje ezt a kizsákmányolást az eszközén, hogy megtudja, sebezhető-e. Összeállítottuk az APK-kat a fent linkelt forráskód (ezt saját maga is megteheti), és feltöltötte őket az AndroidFileHostba. Az exploit teszteléséhez telepítenie kell mindkettőt fő tapjacking alkalmazás valamint annak segítő szolgáltatás. Ezután egyszerűen futtassa a fő alkalmazást, és kattintson a "teszt" gombra. Ha egy szövegmező lebeg az engedélyezési párbeszédpanel tetején, és amikor az „engedélyezés” gombra kattint, megjelenik az eszköz névjegyeinek listája, akkor eszköze ki van téve a koppintás elleni védelemnek. Ne aggódjon amiatt, hogy a lebegő szövegmező nem fedi le teljesen az engedélyezési párbeszédpanelt, ez a koncepcióellenőrző alkalmazás nem célja, hogy tökéletesen bemutassa, hogyan lehet szépen eltéríteni egy jogosultsági párbeszédpanelt, hanem inkább annak bizonyítására, hogy valóban így van lehetséges.
Reméljük, hogy bevezetnek egy javítást, amely kijavítja ezt a kizsákmányolást az összes Marshmallow-eszközön, és az OEM-ek frissítik az összes eszközüket a legújabb biztonsági javításra. Mert a valóság az, hogy sok hónapba telik, amíg a legtöbb zálogba vett eszköz megkapja a Nugát, így a legtöbb számára ez az egyetlen módja. A felhasználók a legfrissebb biztonsági javítások telepítésével vagy a monitoralkalmazások engedélyeinek megszerzésével kerülhetik el a károkat maguk. De mivel a Google úgy döntött, hogy automatikusan megadja a potenciálisan veszélyes SYSTEM_ALERT_WINDOW engedélyt, sokan A felhasználók tudtukon kívül olyan alkalmazásokat futtatnak, amelyek potenciálisan eltéríthetik telefonjaikat, hogy egyre veszélyesebbé tegyenek engedélyeket.