A digitális aláírás nem törött
A dokumentum vagy fájl digitális aláírásának lényege annak bizonyítása, hogy a fájl nem módosult. A folyamat a nyilvános kulcsú kriptográfia egyik formáját használja. A fájlt digitálisan aláírja a magánkulccsal titkosítva. Az a tény, hogy a titkosított fájl dekódolható a nyilvános kulcs használatával, azt igazolja, hogy nem történt megsértés. Ha a BlueBox megtalálta volna a módját egy fájl tényleges módosítására a digitális aláírás megváltoztatása nélkül, ez megdöbbentő csapás lett volna a teljes kriptoválás-ipar számára. De nem tették meg.
A BlueBox a Black Hat konferencián néhány hét múlva beszámol kutatásainak teljes részleteiről. A ViaForensics kutatója, Pau Oliva Fora azonban a koncepciókód igazolását tett közzé, amely szemlélteti az alkalmazott megközelítést.
Igazából nagyon, nagyon egyszerű. Az APK fájlok a széles körben elterjedt ZIP archiváló algoritmus verziójával vannak csomagolva. A legtöbb ZIP-megvalósítás nem engedélyezi két azonos nevű fájlt egy archívumban, de maga az algoritmus nem tiltja ezt a lehetőséget. Az alkalmazás digitális aláírásának ellenőrzésekor az Android OS megvizsgálja az első megfelelő fájlt, de a fájl tényleges végrehajtása és indításakor megragadja az utolsó fájlt. Az alkalmazás Trojanizálásához tehát csak annyit kell tennie, hogy becsavarja a rosszindulatú kódját egy olyan alkalmazás segítségével, amely már létezik az alkalmazáson belül. A Fora demonstrációja csak néhány tucat Java-kód sor.
Egy másik strukturális támadás
Az Android Security Squad néven blogozó kínai kutató érdekesnek találta a demonstrációt, és más lehetőségeket keresett a hitelesítési folyamat aláásására. A Google által lefordított bejegyzés olvasása kissé nehéz, de úgy tűnik, hogy a támadás a Computer Science 101 szintű koncepcióra támaszkodik.
A számítógépes programok rögzített méretű bitekben tárolják a számláló számokat. Például nyolc bittel 0 és 255 közötti számokat reprezentálhat. Ha negatív számokat kell képviselni, a régóta fennálló konvenció az, hogy a baloldali bit negatív számot jelöl. Ezután nyolc bittel ábrázolhatja a -128 és 127 közötti számokat is. Az 11111111 bináris szám 255-t vagy -1-t jelent, attól függően, hogy aláíratlan vagy aláírt számként szánták-e.
Az Android Security Squad az APK fájl fejléc formátumánál járt, és olyan adatmezőt talált, amely feltételezhetően pozitív eltolás, de amelyet aláírt egész számként tárolnak. Ha ezt a mezőt egy meghatározott negatív értékre kényszeríti, az APK betöltő a rosszindulatú kód végrehajtására vezet, nem pedig a már ellenőrzött digitálisan aláírt kód helyett. OK, ez egy kicsit összetettebb, de nagyjából így működik.
Ragaszkodjon a Google Playhez
Ezeknek a hackeknek egyike sem akadályozza meg az Android digitális aláírási mechanizmust. Inkább mindkettőnk kihasználja az APK struktúrájának fordulatait, hogy a digitális aláírást irrelevánssá tegyék. Ezenkívül egyikük sem teszi lehetővé a trójai programot, hogy bejuthasson a Google elemzésébe. A Google kifejezetten frissítette a Google Play szolgáltatást, hogy a „mesterkulcs” támadással kiszűrje a trójai programokt; még a lépés nélkül is a szokásos biztonság szinte biztosan blokkolja a trójai programok bármelyik típusát.
A lecke világos. Mindig szerezzen alkalmazásokat legitim forrásból, mindig ellenőrizze, hogy a fejlesztő neve érvényes-e, és konfigurálja a telefonját úgy, hogy az nem engedélyezi az alkalmazások telepítését "ismeretlen forrásokból". Vigyázzon arra, hogy az alkalmazás mely engedélyeket kéri, és készen áll a gyanús megjelenésű telepítés megszakítására. Ha a szolgáltatója Android-frissítést kínál, mindig telepítse. Ez csak a józan ész!