android sikkerhet
DESCRIPTION
En gjennomgang av Android og hvordan lage sikre applikasjonerTRANSCRIPT
Android app-utvikling
& dagens trusselbilde
Bio
■ Thomas Methlie
■Konsulent @Capgemini, Bergen
■Medlem av VSC
■CISSP (Associate) sertifisering
Agenda
http://android-developers.blogspot.com
http://android-developers.blogspot.com
Baksiden av medaljen
Insufficient entropy
Unauthorized intent receipt
Use of hardcoded chryptographic keys
Intent spoofing
Information exposure through sent data
Overprivileged applications
0 10 20 30 40 50 60 70
% of applications
Arkitektur
Arkitektur
■ Linux 2.6.x (Android 3.x), Linux 3.0.x (Android 4.0)
■Dalvik VM – optimalisert for begrensete ressurser
■ Sikkerhetsmodell: UID's, filrettigheter og tillatelser
Nøkkelkonsepter
Activity
■ Presenterer skjerminnhold
■ Kan vise Views, menyer, varsler og notifikasjoner
■ Må ha minst én Activity
View
■ Et enkelt grensesnitt element
■ Håndterer brukerhendelser og tegner komponenten på skjermen
■ Kan lage egne eller bruke eksisterende
Intent
■ Linker to aktiviteter eller to applikasjoner
■ Muliggjør sending av meldinger og data mellom to entiteter
■ Gir tilgang til OS tjenester som kamera, browser mm
Service
■ En applikasjon som kan kjøre i bakgrunnen
■ Deklareres i manifest filen
Nøkkelkonsepter 2Broadcast receivers
■ Lytter og reagerer på broadcast meldinger
Content Providers
■ Tilgjengeliggjør data fra en applikasjon til andre
■ Henter data fra filsystem, SQLite, mm.
Android Manifest fil
<manifest ...>
<application>
<activity android:name=“.MyActivity”>...</activity>
<receiver android:name=“.MyReceiver”>...</receiver>
</application>
<uses-sdk android:minSdkVersion=“16” />
<uses-feature android:name=“android.hardware.CAMERA”/>
<uses-permission android:name=“android.permission.INTERNET” />
<uses-permission android:name=“android.permission.CAMERA” />
<permission android:name=“com.emc.NewPermission” />
</manifest>
Intent spoofing
■Komponent med svake rettigheter
■Ondsinnet app sender en Intent som resulterer i datainjeksjon eller endret tilstand
<receiver android:name=”one.special.recevier”><intent-filter>
<action android:name=”one.intent.action” /></intent-filter
</receiver>
Eksempel
Evil app Cool app
Action: displayShop
Handles action:displayShopnoShopsList
Results UI
Intent spoofing
<receiver android:name=”one.special.recevier” android:exported=false>
<intent-filter><action android:name=”one.intent.action” />
</intent-filter></receiver>
<receiver android:name=”one.special.recevier”android:exported=trueandroid:permission=”one.permission”>
<intent-filter><action android:name=”one.intent.action” />
</intent-filter></receiver>
SQL og Query String Injection■ Delete, execSQL, rawQuery, update....
■Query String Injection: Sub-klasse av SQL Injection
■ Tillater en ondsinnet app å se uautorisert data■ Kan ikke endre data
■Hvordan?■ Data fra en uklarert kilde■ Dynamisk konstruerte SQLite spørringer
Query String Injection
Bruk parameteriserte spørringer!!
query = userDB.query(MY_TABLE,MY_COLUMN,“userid = ?”,{userid},null,null,null,null)
Unauthorized Intent Receipt
■Gitt en offentlig Intent som ikke krever spesielle tillatelser hos komponenten som mottar meldingen
■ Fanges opp av en ondsinnet app
■Kan lekke sensitive data og/eller endre programflyt
Intent intent = new Intent();
intent.setAction(“a.special.action”);
startActivity(intent);
Unauthorized Intent Receipt
Intent fixedIntent = new Intent();fixedIntent.setClassName(“pkg.name”,“pkg.name.DestinationName”);
Intent fixedIntent2 = new Intent();fixedIntent2.setAction(“a.special.action”);sendBroadcast(“fixedIntent2, “a.special.permission”);
or
Persistent Messages:Sticky broadcasts
■Kan ikke sette krav til tillatelser på mottaker
■ Tilgjengelig for alle(!)
■Kompromittere sensitiv program data
■ Lever videre etter at den har blitt sent■ Kan fjernes av alle som har
BROADCAST_STICKY tillatelse
Persistent Messages:Sticky broadcasts
■Bruk vanlige kringkasting som er beskyttet av mottakers tillatelser
■Undersøk data som blir sent i kringkastings meldinger
Insecure Storage
■ Innhold på SD-kort er tilgjengelig for alle
■Blir ikke fjernet når app'en blir fjernet
■Kan gi tilgang til passord, lokasjoner, SMS, epost, etc
Insecure Storage
■Bruk applikasjonens SQLite database
■Bruk enhetens interne datalager
■Bruk Context.MODE_PRIVATE
Insecure Communication
■ Ikke send sensitiv data over HTTP
■Om mulig, bruk HTTPS, hvis du bruker WebViews
■Bør undersøkes og behandles som hvilken som helst web applikasjon
Insecure Communication
■Google Calendar og Contacts (fikset i v2.3.4)
■ Twitter app■ Facebook app■ Fake GSM tower, IMSI Catcher
Overprivileged Applications
■ “Minst privilegium” prinsippet
■ Sårbarheter kan gi en angriper tilgang■ Application Collusion Attack
■Brukere godtar unødvendige tillatelser
Trusselbilde
Bilde:http://www.mobi2tab.com
Mobile is the new platform. Mobile is a very intimateplatform. It's where the attackers are going to go." [Schneier]
Trusselbilde
■ Q1: 3, 063
■Q2: 5, 033
■ Q3: 51, 447■Kun 0,5 fra Play Store. 55,2 prosent
faktisk ondsinnet!
Bilde: F-Secure, Mobile Threat Report
Trusselbilde
Trusselbilde
■Samle personlig informasjon■ Kontakter, SMS, e-post, bilder, filer, GPS lokasjon
■Pakkesniffing
■Overvåking
■Reklame
■ Installere/kjøpe andre applikasjoner
■Premium SMS tjenester
Hva skjer fremover?
■Android v4.2
■ (Opt-in) Skanning av applikasjoner i sanntid
■Valideres mot eksisterende Google Play app's og APK-filer tilgjengelig på nettet
■Ny installasjons-skjerm med tydeligere informasjon
SE Linux
Bilde: Centos.org
■ Mandatory Access Control vs Discretionary Access Control
■ Ingen root bruker
■ Sikkerhets policy definert av en administrator
VPN
Bilde: How Stuff Works
■ Always-On VPN
■ Hindrer data fra plutselig å bli sent i klartekst
Premium SMS
Bilde: http://k0il-inside.blogspot.no
■ Premium SMS tjenester belaster brukerens mobilabonnement
■ Varsling ved bruk av premium tjenester
Pro tips!
■Google Play
■Rating og tilbakemeldinger
■Kontroller tillatelser
■Rooting
Kilder■ Seven ways to hang yourself with Google Android. Y. O'Neil and E. Chin
■ Veracode State of Software Security v04
■ http://android-developers.blogspot.com
■ http://nakedsecurity.sophos.com/2011/05/17/security-hole-android-smartphones
■ Developing secure mobile applications for android. Jesse Burns, iSEC Partners
■ F-Secure: Mobile Threat Report Q3 2012
■ Application Collusion Attack on the Permission-Based Security Model and its Implications for Modern Smartphone Systems (ftp://ftp.inf.ethz.ch/doc/tech-reports/7xx/724.pdf)