Az Android Oreo automatikus kitöltési API-ját használó jelszókezelők potenciálisan ki vannak téve adatszivárgásnak

Az Android Oreo automatikus kitöltési API-jának lehetséges biztonsági hibája lehetővé teszi, hogy a jelszókezelők adatokat, például jelszavakat, címeket vagy hitelkártyákat szivárogtassanak ki.

Automatikus kitöltés az egyik legnagyobb és legtöbbet nyilvánosságra hozott új funkció, amelyet az Android 8.0 Oreo kiadásával vezettek be. Sok különböző jelszókezelő alkalmazás, például a LastPass, már implementálta ezt az új API-t alkalmazásaiba. És bár bebizonyosodhat egészen a javulás a korábbi, Accessibility Services használatával végzett automatikus kitöltési implementációkhoz képest egy lehetséges biztonsági hibát figyelembe kell venni. Múlt hónapban egy fehér könyvet tettek közzé a GitHubon, amely dokumentálja az Android Oreo Autofill API benne rejlő hibáját, amely potenciálisan ahhoz vezethet, hogy a jelszókezelő több személyes adatot szivárogtat ki, mint amennyire engedélyt adott neki. Gyorsan összefoglaljuk azt a fehér könyvet, amelyet Mark Murphy (ismertebb nevén CommonsWare), és 2017. augusztus 8-án tették közzé a GitHub oldalán.


Lehetséges adatszivárgási hiba az Android Oreo automatikus kitöltési API-jában

Hogyan működik a hiba?

Az automatikus kitöltés megvalósítása Android Nougatban (és régebbi verziókban) és olyan böngészőkben, mint a Google Chrome, nagyon egyszerű. A jelszókezelő alkalmazások általában az Accessibility Services segítségével keresik a képernyő tartalmát egy bejelentkezési mezőért, és a találtak alapján javasolják az adatok automatikus kitöltését. Amíg működött, addig jelentős késést okozhat.

Android Oreo esetén ez egy kicsit másképp működik, mivel a jelszóalkalmazásokat immár hivatalosan is támogatja az Autofill API. A harmadik féltől származó jelszóalkalmazások már nem igényelnek Accessibility Services szolgáltatást, mivel mostantól betölthetik az automatikus kitöltési szolgáltatás szerepét, és az Autofill Framework keretrendszeren keresztül kommunikálnak az alkalmazásokkal. Amikor a felhasználó egy widgetre fókuszál, a rendszer becsomagol néhány információt a widgetről/űrlapról, és elküldi az automatikus kitöltő alkalmazásnak. Az alkalmazás ezután visszaküldi a releváns automatikus kitöltési adatokat, például jelszavakat, e-maileket, hitelkártyákat vagy bármilyen más érzékeny adatot. Az Android rendszer közvetítőként működik az adatokat tároló alkalmazás és az azt kérő között.

Automatikus kitöltési alkalmazás Android 8.0 Oreo rendszeren

A rosszindulatú alkalmazások vagy rosszindulatú programok azonban ténylegesen kihasználhatják az automatikus kitöltési funkciót, hogy több adatot szerezzenek be maguknak. Egy rosszindulatú tevékenység lehet további automatikus kitöltési adatok kérése láthatatlan vagy rejtett widget segítségével. Amíg a felhasználó beleegyezik abba, hogy kitölti az egyik látható modult, például egy bejelentkezési űrlapot vagy valami hasonlót, a láthatatlan widget további adatokat is kap anélkül, hogy Ön látná. Ez nagyon veszélyes lehet, ha ez a kiszivárgott információ az Ön jelszava, címe vagy hitelkártyaadatai!

A fenti képernyőképek egy rosszindulatú tesztalkalmazást mutatnak be, amely kihasználja ezt a biztonsági hibát.

A Google válasza a problémára

A CommonsWare szerint ennek a biztonsági problémának még nincs nyilvános megoldása a Google által. Azt azonban tudjuk, hogy a Google tisztában van a problémával. A CommonsWare kijelenti, hogy a Google mérnökei elismerték, hogy a probléma megtalálható egy privát problémakövető jelentésben, de nehéz lenne (ha nem lehetetlen) ténylegesen javítani vagy dobjon ki egy javítást.

De ez nem jelenti azt, hogy az Automatikus kitöltés használata teljesen nem biztonságos, mivel a Google más megközelítést alkalmaz az adatbiztonság biztosítása érdekében. A cég az arra törekszik, hogy az automatikus kitöltési szolgáltatások maguk kezeljék a problémát és mint ilyen, igyekszik felhívni a fejlesztők figyelmét arra, hogy javítsák automatikus kitöltési szolgáltatóikat és biztonságosabbá tegyék őket. Pontosan mit javasolnak?

Mindenekelőtt az automatikus kitöltési szolgáltatók particionálniuk kell adataikat. Ahelyett, hogy az összes automatikus kitöltési adatot egyetlen készletben tartanák, a fejlesztőknek fel kell osztaniuk a partíciókban tárolt felhasználói adatokat. Például egy cím/telefon partíció, egy hitelkártya partíció, egy jelszó/felhasználónév partíció stb. Az automatikus kitöltési szolgáltatás egyszerre csak egy partíció adatait adja vissza a fókuszált widget alapján. Ez az egyik nyilvánosan elérhető oldalak az Automatikus kitöltési alkalmazásoknál, amelyek megvédik magukat az adatok láthatatlan kütyübe való szivárgásától.

A Google mérnökei szerint a jelszókezelők fejlesztőinek más dolgokat is meg kell tenniük. Például az automatikus kitöltés szolgáltatója csak annak a konkrét alkalmazásnak adja vissza az adatokat, amelyik az adatokat először szolgáltatta. Ezt úgy kell megtenni, hogy ellenőrizze a csomag nevét és az alkalmazás nyilvános aláírását, hogy még egy módosított APK se férhessen hozzá. A másik dolog az lenne, hogy az automatikus kitöltésű alkalmazások hitelesítést igényelnek az adatok tényleges megadása előtt az a hitelesítési tevékenység, amely tájékoztatja a felhasználót arról, hogy az azt kérő alkalmazás milyen adatokat kap. Ez a tanács valójában sok hibát tartalmaz, amelyek közül a legfontosabb az, hogy ezeket a tanácsokat a Google valójában nem kényszeríti ki.

Ne feledje, hogy a fenti javaslatok közül sok a CommonsWare privát problémakövető jelentéséből származik, és nem a Google hivatalos dokumentációs oldaláról. Ha további, technikailag részletesebb leírást szeretne kapni arról, hogy az Autofill API-t használó alkalmazások hogyan védekezhetnek az ilyen típusú támadásokkal szemben, javasoljuk, hogy olvassa el a teljes fehér könyv a CommonsWare-től.

Mely alkalmazások védettek ettől a hibától?

Megkerestük az 1Password, Enpass és LastPass fejlesztőit ezzel a sérülékenységgel kapcsolatban, és a 3 alkalmazás mögött álló biztonsági csapatok állította hogy azok biztonságos, bár még nem ellenőriztük ezeket az állításokat.

Ahogy a fenti nyilatkozatokból is láthatjuk, az 1Password az adatok kitöltése előtt hitelesítést igényel a felhasználótól, előzetesen értesítve arról is, hogy milyen adatok kerülnek kitöltésre. Ez a csendes kitöltés problémájában is segít, mivel minden egyes automatikus kitöltési adatokat kérő tevékenységhez megjelenik egy hitelesítési előugró ablak.

Az Enpass soha nem fedi fel a teljes kulcstartót a kérelmező alkalmazás számára, legyen az rosszindulatú vagy eredeti. Csak a kérelmező alkalmazás csomagnevével megegyező mentett elemek jelennek meg a felhasználó számára. Azt is megerősítették, hogy a Google tanácsát követve további intézkedéseket vezetnek be.

Ezenkívül a LastPass megerősítette nekünk, hogy bár nem tudtak a problémáról az Android Oreo megjelenése előtt, alkalmazásuk adatparticionálás a felhasználók védelme érdekében, valamint egyéb ellenőrzések annak biztosítására, hogy a LastPass csak a bejegyzéshez társított alkalmazást töltse ki.

Bár ennek a 3 alkalmazásnak semmiféle problémája nem lehet, ha teljesen tisztán akar maradni, le kell tiltania teljesen automatikusan kitölti a telefont, amíg meg nem erősíti a jelszókezelő fejlesztőjével, hogy az alkalmazás biztonságban van ettől a sortól támadás. Szerencsére ezt egyszerűen megteheti, ha a Beállítások > Rendszer > Nyelvek és bevitel > Speciális menüpontban keresi meg az "Autofill service" beállítást, koppint rá, és válassza a "Nincs" lehetőséget.

Ahogy fentebb említettük, nem ismert, hogy a Google valóban ki tud-e javítani erre, ezért a megbízható alkalmazások használata vagy a funkció egyszerű letiltása az egyetlen módja a biztonság megőrzésének. Ha többet szeretne olvasni erről a kérdésről és a hozzá kapcsolódó összes részletről, olvassa el az eredetit azt dokumentáló fehér papír a GitHubon.


Ezt a cikket 2017. szeptember 13-án frissítettük, hogy pontosabban tükrözze a LastPass, Enpass és 1Password válaszait.