În această săptămână vom discuta, conform voturilor, despre cât de sigură este aplicaţia Ştirile ProTV disponibila pe Google Play.
Funcţionarea este simplă: după instalare sunt prezentate ultimele ştiri ce pot fi citite în totalitate. În plus se poate face share pe Facebook la o anumită ştire.
Ca şi permisiuni cerute, acestea sunt:
Hardware controls
change your audio settings
Allows the app to modify global audio settings such as volume and routing.take pictures and videos
Allows the app to take pictures and videos with the camera. This allows the app at any time to collect images the camera is seeing.record audio
Allows the app to access the audio record path.Network communication
full Internet access
Allows the app to create network sockets.Storage
modify/delete USB storage contents modify/delete SD card contents
Allows the app to write to the USB storage. Allows the app to write to the SD card.Network communication
view network state
Allows the app to view the state of all networks.
Permisiunile pentru audio si video sunt cerute pentru a putea raporta o ştire interesantă direct din aplicaţie.
Analizând codul, încă de la iniţializarea aplicaţiei se face o raportare către Google Analytics cu următoarele informaţii:
- versiunea aplicaţiei
- modelul dispozitivului
- numele sistemului (ex HTC Legend Build/FRF91)
- versiunea de Android
- sistemul folosit
localGoogleAnalyticsTracker.setCustomVar(1, „appVersion”, str1, 2);
localGoogleAnalyticsTracker.setCustomVar(2, „deviceModel”, str2, 2);
localGoogleAnalyticsTracker.setCustomVar(3, „systemName”, str3, 2);
localGoogleAnalyticsTracker.setCustomVar(4, „systemVersion”, str4, 2);
localGoogleAnalyticsTracker.setCustomVar(5, „system”, str5, 2);
Totodată se verifică şi dacă sunteţi logaţi pe Facebook
public static boolean isFacebookSignedIn(Activity paramActivity)
{
return getApplication(paramActivity).getFacebook().isSessionValid();
}
Pentru a funcţiona cu Facebook, aplicaţia are nevoie de o semnătură specifică: Facebook requires an additional layer of security for mobile apps in the form of an application signature. You need to put your Android application signature into your Facebook app settings. ( de aici)
Nu prea cred totuşi că e chiar ok ca această semnătură să fie pusă hardcoded:
Un alt aspect ce trbeuie menţionat la partea de cod e acela că, în cazul unei întreruperi a aplicaţiei din motive necunoscute, se generează un fişier de crash report în care sunt incluse o mulţime de elemente (tipul telefonului, loguri de comunicaţie ale telefonului cu reţeaua, un dump al memoriei, etc). În general nu vă recomand să trimiteţi aceste rapoarte întrucât dezvăluie multe date personale.
Şi am ajuns la a vedea ce date sunt transmise. Aşa cum spuneam şi la început sunt transmise mai multe detalii despre telefon către Google Analytics:
GET /__utm.gif?utmwv=4.8.1ma&utmn=1204257584&utme=8(1!appVersion*2!deviceModel*3!systemName*4!systemVersion*5!system)9(1!13%20%281.0.12%29*2!sdk*3!FRF91*4!2.2*5!sdk%20FRF91%202.2)11(1!2*2!2*3!2*4!2*5!2)&utmcs=UTF-8&utmsr=320×480&utmul=en-US&utmp=%2Fstart&utmac=UA-22957839-16&utmcc=__utma%3D1.1063077146.1338827469.1338827469.1338827469.1%3B&utmht=1338827469663&utmqt=9896 HTTP/1.1
Host: www.google-analytics.com
User-Agent: GoogleAnalytics/1.4.1 (Linux; U; Android 2.2; en-us; sdk Build/FRF91)GET /__utm.gif?utmwv=4.8.1ma&utmn=1146252714&utmcs=UTF-8&utmsr=320×480&utmul=en-US&utmp=%2Farticles%2Fheadlines&utmac=UA-22957839-16&utmcc=__utma%3D1.1063077146.1338827469.1338827469.1338827469.1%3B&utmht=1338827471086&utmqt=8696 HTTP/1.1
Host: www.google-analytics.com
User-Agent: GoogleAnalytics/1.4.1 (Linux; U; Android 2.2; en-us; sdk Build/FRF91)
Sunt luate şi stirile de pe protv, precum şi ceva reclame:
Bineînţeles că nimeni nu-i obligă să trimită toate informaţiile astea, însă acesta e preţul plătit de utilizator pentru o aplicaţie gratuită.
Cererile către Facebook sunt făcute în mod securizat, pe HTTPS, deci nu am ce reporoşa la această parte. Problema apare când analizăm ce fişiere sunt stocate.
Sunt create mai multe baze de date SQLite, localizate în /data/data/com.cme.newsreader.stirileprotv.ro/databases. Acestea sunt: webviewCache.db, webview.db, google_analytics.db
Un lucru pe care nu l-am spus în articolul anterior şi e important de reţinut e acela că aceste fişiere nu sunt accesibile decât aplicaţiei. Pentru a avea acces la ele trebuie permisiuni de root. De ce e important să analizăm şi ce anume se stochează? Simplu: în cazul în care ne pierdem telefonul, vom pierde şi datele stocate de către aplicaţiile folosite de noi, iar asta se poate traduce în locaţii GPS, conturi, username, parolă. Din moment ce telefonul nu mai e în posesia noastră, a obţine drepturi de root de către o altă persoane e doar o chestie de căutare pe Google. Tocmai din acest motiv e important ca aplicaţiile să stocheze datele într-un mod cât mai sigur.
Dar să revenim la bazele de date. În google_analytics.db găsim aceleaşi date de care menţionam anterior, însă în webview.db – jackpot!
Sunt cookie-urile folosite pentru Facebook şi pe baza cărora aplicaţia verifică dacă suntem sau nu logaţi. Este îndeajuns să le transferăm pe PC şi deja suntem conectaţi pe contul acelei persoane, fără a mai fi necesară introducerea de user şi parolă. Mai mult, e stocată chiar şi adresa de email folosită la conectarea pe Facebook.
În webviewCache.db sunt stocate toate link-urile accesate prin Facebook pentru a face share la o anumită ştire
După cum se vede, informaţiile sunt stocate ca atare, în clar, fără a folosi vreun algoritm de criptare.
Ceea ce părea a fi o banală aplicaţie de citit ştiri s-a dovedit a fi mult mai nesigură decât credeam. Data viitoare voi analiza aplicaţia Hotnews.
super interesant de stiut
Dar in cazul in care este folosita chestia cu verificarea device-ului de la facebook (cod sms), mai functioneaza simpla copiere de cookie?
Functioneaza chiar daca e verificat contul tau. Din moment ce ai id-ul sesiunii si toate celelalte informatii, deja se poate face browsing de pe contul tau.