Mobiilisovelluskehittäjä, ovatko Android-salaisuutesi turvassa?


2019-08-20, 14:09 Kirjoittanut Nina Kuisma

Uusia Android-sovelluksia laativan kehittäjän on helppo kuvitella, että kun sovelluksen kerran työntää Play Storeen ja sitä kautta käyttäjän laitteelle niin softan lähdekoodi ja muut salaisuudet ovat hyvässä tallessa APK:n (Android Application Package) sisällä, joko tavukoodina tai muuten vaikeasti luettavissa. Tämä on kuitenkin harhaluulo, kuten on todennettavissa esimerkiksi jadx:llä, jolla APK:t voi pyöräyttää takaisin paremmin ihmisille sopivaksi lähdekoodiksi. Lähdekoodin kuitenkin voi obfuskoida, jolloin sen perkaus loppukäyttäjän puolelta on vaivalloisempaa ja usein melko riittävä pitämään loitolla ihmiset, jotka eivät ole kiinnostuneita erityisesti tietystä sovelluksesta.

Kovakoodattuihin "salaisuuksiin" edellä mainittu ei kuitenkaan auta. Pilvi- ja sovellusturvallisuuden asiantuntija Anders Riancho tutki AWS Cognito konfiguraatioiden turvallisuutta lataamalla ja analysoimalla 13 000 APK-ohjelmapakettia. Näistä 164 sisälsi AWS-avainpareja joista ~9% oli root-avaimia ja ~13% muuten vain merkittävillä EC2/RDS/IAM-pääsyillä varustettuja, antaen loppukäyttäjälle turhan paljon valtaa AWS (Amazon Web Services) -tilillä.

Tein noin vuosi sitten vastaavaa keräilyä ja tutkimusta pienemmin otoksin. En esimerkiksi ladannut nimenomaan AWS:n kirjastoja sisältäviä APK:ita vaan latasin automatisoidusti suoraan suosituimpia sovelluksia eräältä APK-peililtä, jonka paketteja en kuitenkaan välttämättä asentaisi puhelimeen asti. Muutaman illan jälkeen oli 2553 APK:ta ladattuna ja indeksoituna, joista ainakin 19 sisälsi AWS- tai Alibaba-avaimen tai useamman (yhteensä 25 AKIA* tai LTOA* merkkijonoa classes*.dex tiedostoissa). Näiden voimassaoloa tai oikeuksia en kuitenkaan lähtenyt kokeilemaan.

Suojaamattomista löydöistä voi ilmoittaa CERT-FI:lle

Myös muita pilviresursseja voi jäädä suojaamatta asiallisesti. Google tarjoaa Firebase-alustaa, jota voi käyttää esim. push-notifikaatioihin ja A/B-testaukseen. Tuo sisältää myös Firebase-tietokannan, joka on mahdollista jättää avoimeksi, eli anonyymien käyttäjien luettavaksi ja mahdollisesti kirjoitettavaksi.

Latasin joulukuussa 2018 puolisatunnaisesti 250 suomalaista APK:ta Play Storea käsin selaamalla. Näistä 6 sisälsi viittauksen avoimeen Firebase-kantaan. AWS-avaimia näissä ei ollut. Löydöt raportoin CERT-FI:lle, joka välitti raportit eteenpäin kehittäjille, vaikka osa näistä Firebase-kannoista on saatettu jättää auki tarkoituksella. Mutta on ollut tapauksia, joissa näistä avoimista kannoista on löytynyt esim. käyttäjätietokantoja ja keskustelulokeja. Näppärästi kenen vain automaattisesti ladattavaksi.

Ongelma ei tietenkään ole Android-spesifi, vaan koskee alustasta riippumatta mitä tahansa ohjelmistototeutusta, jossa loppukäyttäjän ohjelmaan on sisällytetty pääsyavaimia. Eräänä tapausesimerkkinä tästä on Super Meat Boy -peli, jossa peli itsessään sisälsi MySQL-kredentiaalit mm. pistelistoja varten. Pelin julkaisusta kului vuosi, kunnes joku löysi nuo kredentiaalit ja sen jälkeen kyseisen tietokannan sisältö ei ollut erityisen ehjä.


comments powered by Disqus