Android sikkerhet

Preview:

DESCRIPTION

En gjennomgang av Android og hvordan lage sikre applikasjoner

Citation preview

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

Takk for meg!

thomas.methlie@capgemini.com / thomas.methlie@gmail.com

tsmethlie

no.linkedin.com/in/thomasmethlie

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)

Recommended