• No results found

Säkerhetsanalys av Android som plattform förföretagsapplikationer

N/A
N/A
Protected

Academic year: 2021

Share "Säkerhetsanalys av Android som plattform förföretagsapplikationer"

Copied!
70
0
0

Loading.... (view fulltext now)

Full text

(1)

Institutionen för datavetenskap

Department of Computer and Information Science

Examensarbete

Säkerhetsanalys av Android som plattform för

företagsapplikationer

av

Per Jinnegren och Erik Thorselius

LIU-IDA/LITH-EX-A-11/033-SE

2011-10-24

Linköpings universitet SE-581 83 Linköping, Sweden

Linköpings universitet 581 83 Linköping

(2)

Examensarbete

akerhetsanalys av Android som plattform f¨

or

oretagsapplikationer

av

Per Jinnegren Erik Thorselius

LIU-IDA/LITH-EX-A–11/033–SE

Handledare : Andreas Olofsson

Avdelningen f¨or mobila plattformar vid HOW Solutions

Examinator : Nahid Shahmehri

Institutionen f¨or datavetenskap vid Link¨opings universitet

(3)
(4)

Sammandrag

I rapporten unders¨oks s¨akerhetsaspekter f¨or f¨oretagsapplikationer utveckla-de till androidplattformen. Rapporten tar ¨aven upp Androids grunder och dess s¨akerhetsmodell. Syftet med rapporten var att unders¨oka Androids l¨amplighet f¨or projekt som HOW Solutions har planerade. Under arbetet har en applikation f¨or tr˚adl¨os ¨oppning av l˚as utvecklats. Resultatet var att m˚anga av de hot som uppt¨acktes var, f¨or f¨oretag, i vissa fall ¨ar sv˚ a-ra att mitigea-ra och att viss relevant funktionalitet saknas p˚a plattformen. Trots det ¨ar slutsatsen att Android ¨ar en mogen plattform med ett gediget s¨akerhetsarbete och d¨arf¨or l¨ampar sig bra f¨or f¨oretagsapplikationer.

Nyckelord : Android, S¨akerhet, Abuse cases, STRIDE, Sandbox, Root

(5)
(6)

Tack

Vi vill tacka b˚ade IDA och HOW Solutions som har m¨ojliggjort examens-arbetet. Andreas Olofsson som har visat ett stort intresse som handledare och Nahid Shahmehri som har varit en bra examinator. Vi vill ocks˚a tacka Frida Str˚alin som har tagit sig tid och kommenterat v˚ar rapport. Sist vill vi tacka oss sj¨alva, det har varit ett riktigt bra samarbete!

(7)
(8)

Inneh˚

all

Figurer viii Tabeller 1 1 Inledning 2 1.1 Syfte . . . 3 1.2 Bakgrund . . . 3 1.3 Problemformulering . . . 3 1.3.1 Beskrivning . . . 3 1.4 Avgr¨ansningar . . . 4 2 Metodik 5 2.1 Metoder i litteraturen . . . 5 2.2 Metod . . . 7 2.2.1 Litteraturstudie . . . 7

2.2.2 Implementation av ett androidprogram . . . 7

2.2.3 Abuse cases . . . 8 2.2.4 S¨akerhetskrav . . . 8 2.2.5 Arkitekturell riskanalys . . . 10 2.3 Metodkritik . . . 10 3 En beskrivning av Android 11 3.1 Grunder . . . 11 3.1.1 Applikationer . . . 12 v

(9)

vi INNEH˚ALL Komponentbeskrivning . . . 12 Intents . . . 13 3.1.2 Dalvik VM . . . 14 3.1.3 Sandboxning . . . 16 3.1.4 Spr˚akst¨od i Android . . . 16 3.1.5 Paketeringsprocessen . . . 16 3.2 Androids s¨akerhetsmodell . . . 17 3.2.1 R¨attighetsmodellen . . . 17 3.2.2 Kodsignering . . . 17

3.2.3 Linuxk¨arnans inblandning . . . 18

UID/GID . . . 18

Ge applikationer samma UID . . . 18

R¨attigheter f¨or filer och enheter . . . 19

Sandboxning genom egna anv¨andare . . . 19

4 Applikationen 21 4.1 Syfte . . . 21

4.2 Det befintliga systemet . . . 21

4.2.1 Backend . . . 22

4.2.2 Databasen . . . 23

4.2.3 Telefonen . . . 23

4.2.4 L˚aset . . . 23

4.2.5 Loggning . . . 24

4.2.6 Uppl˚asningsf¨orfarande . . . 25

4.3 Den utvecklade applikationen . . . 25

4.3.1 Inloggning . . . 26

4.3.2 Inst¨allningar . . . 27

4.3.3 L˚aslista . . . 28

4.3.4 Uppl˚asning . . . 28

5 Resultat och analys 29 5.1 Identifierade s¨akerhetsproblem . . . 29

5.1.1 Rootning . . . 29

5.1.2 Loggning . . . 30

5.1.3 R¨attigheter f¨or filer och databaser . . . 30

(10)

INNEH˚ALL vii 5.1.5 SQL-injektion . . . 32 5.1.6 Gamla versioner . . . 33 5.2 Hj¨alpmedel . . . 33 5.2.1 Obfuskering . . . 33 ProGuard . . . 34

Hur stor skillnad g¨or obfuskering . . . 34

5.2.2 St¨od f¨or kryptering . . . 35

5.3 Distribution . . . 36

5.3.1 Nackdelar med Android market . . . 36

5.3.2 Krav . . . 36

5.3.3 Automatiskt uppdatering . . . 37

5.3.4 Telefonspecifika installationsfiler . . . 37

5.3.5 Initialinstallation fr˚an en centralpunkt . . . 38

5.3.6 S¨akerhetsaspekter p˚a designf¨orslag . . . 38

6 Diskussion 39 6.1 Diskussion av resultatet . . . 39 6.2 Vidare studier . . . 41 Litteraturf¨orteckning 42

Appendix

47

A Misuse cases 47

(11)

Figurer

3.1 Intentval . . . 15 3.2 Packeteringsprocessen . . . 20 4.1 System¨oversikt . . . 22 4.2 Utvecklingsd¨orren . . . 24 4.3 Inloggningsrutan . . . 26 4.4 Resursmappar . . . 27 4.5 Spr˚akstr¨angar . . . 27 viii

(12)

Tabeller

2.1 Abuse case mall . . . 9

(13)

Kapitel 1

Inledning

F¨oretag har i flera ˚ar haft applikationer med f¨oretagsk¨anslig information ute p˚a f¨altet, att utveckla program till mobiltelefoner ¨ar inte heller n˚agot nytt. Under de senaste ˚aren har dock mobiltelefonmarknaden genomg˚att stora f¨or¨andringar. Datormobiler har tagit st¨orre plats och utvecklingen g˚ar snabbt fram˚at. F¨oretagen har f˚att upp ¨ogonen f¨or att integrera mobiltele-fonerna i sin organisation och intresset f¨or f¨oretagsapplikationer1 ¨ar stort. Kraven p˚a b˚ade telefonerna och applikationerna ¨ar dock stora.

I media debatteras ofta om hur os¨akra de nya mobila plattformarna ¨

ar [1] [2]. Dock p˚avisar argumenten s¨allan n˚agra tekniska brister. Debatten handlar oftast om anv¨andarens omd¨ome och mer exakt hur sv˚art det ¨ar med anv¨andare som g¨or informerade men d˚aliga beslut, till exempel installera applikationer som utf¨or fler funktioner ¨an vad den utger sig f¨or att g¨ora. Detta kan exempelvis vara att skicka vidare dina kontakter till en tredje part.

Idag anv¨ander flera f¨oretag applikationer utvecklade f¨or datormobiler i sina IT-l¨osningar. Hur ser s¨akerheten ut f¨or dessa f¨oretagsapplikationer om anv¨andaren ¨aven laddat ned op˚alitliga applikationer? Vad ¨ar viktigt att t¨anka p˚a som utvecklare?

1En applikation som anv¨ands av f¨oretag eller organisationer och inte intressanta f¨or

hemanv¨andare. Applikationen tillhandah˚aller en arbetsrelaterad tj¨anst.

(14)

Inledning 3

1.1

Syfte

Syftet med denna rapport ¨ar att ge en ¨overblick ¨over Androids s¨ akerhets-l¨osning och hur denna hanterar s¨akerheten mellan applikationer. Vidare beskriver rapporten ¨aven hj¨alpmedel som kan anv¨andas av utvecklare f¨or att ¨oka s¨akerheten i de applikationer som utvecklas.

1.2

Bakgrund

HOW Solutions ¨ar ett konsultbolag som erbjuder l¨osningar inom IT- och verksamhetsl¨osningar. HOW Solutions har tidigare utvecklat en applikation till plattformen Windows Mobile 6 samt till de mobiler som kan k¨ora Java ME2. Applikationen ¨ar en l¨osning att l˚asa upp ytterd¨orrar med digitala nycklar i telefonen och anv¨ands inom hemtj¨ansten p˚a flera orter i Sverige. D˚a Windows Mobile 6 ¨ar p˚a v¨ag att ers¨attas av Windows Phone 7 och Java ME har visat sig kr¨ava telefonspecifika l¨osningar, har HOW Solutions valt unders¨oka andra plattformar och d˚a med fokus mot Android, se kapitel 3.

1.3

Problemformulering

Arbetet utf¨ordes med avseende p˚a tre problemformuleringar. ˆ Hur hanterar Android s¨akerheten mellan applikationer?

ˆ Vilka s¨akerhetsproblem kan vi identifiera i Androidplattformen? ˆ Vilka hj¨alpmedel finns f¨or utvecklare och distribut¨orer av

f¨oretagsap-plikationer?

1.3.1

Beskrivning

HOW Solutions ville unders¨oka plattformen med avseende p˚a f¨oljande fo-kusomr˚aden.

2Java Micro Edition ¨ar en nedbantad version av Java Standard Edition designad f¨or

(15)

4 1.4. Avgr¨ansningar

ˆ Kommunikation med webbservices

ˆ Distribution av applikationer utanf¨or market ˆ Spr˚akkonvention

ˆ Databasst¨od ˆ Datalagring

ˆ Kommunikation via Bluetooth ˆ Grafiska komponenter

ˆ Kodobfuskering ˆ Signering av kod

ˆ Automatisk uppdatering

HOW Solutions var intresserade av att utvecklingsarbetet skedde i stan-dardmilj¨on. F¨or Android inneb¨ar det en utvecklarmilj¨o i Eclipse och Java som utvecklingsspr˚ak. Utvecklingen gjordes b˚ade i den medf¨oljande emula-torn och p˚a Androidmobiler. I uppdraget l˚ag s¨akerhetsfokus p˚a att analy-sera de problem som r¨orde de interna strukturerna i Android och kommu-nikationen med andra system.

1.4

Avgr¨

ansningar

Examensarbetet fokuserar p˚a de s¨akerhetsproblem som direkt eller indirekt kan p˚averka den utvecklade applikationens funktioner eller data. Applika-tioner som missbrukar de r¨attigheter som anv¨andaren godk¨anner har inte unders¨okts. En j¨amf¨orelse mot de befintliga klienter som HOW Solutions tidigare utvecklat har inte utf¨orts d˚a de plattformarna inte l¨angre ¨ar intres-santa att anv¨anda i systemet. ¨Overs¨attningar av engelska termer kommer fr˚an Svenska datatermgruppens3 rekommendationer. I de fall d¨ar ingen ¨

overs¨attning finns har den engelska termen anv¨ants.

(16)

Kapitel 2

Metodik

I det h¨ar kapitlet presenteras en kort ¨oversikt av litteraturen som behandlar metoder f¨or att f¨orb¨attra s¨akerheten i programvara tillsammans med en beskrivning av de metoder som anv¨ants.

2.1

Metoder i litteraturen

McGraw (2006) [3] beskriver Seven touchpoints for software security”, vilka ¨

amnar mot att ¨oka s¨akerheten i mjukvarusystem. 1. Abuse cases 2. S¨akerhetskrav 3. Riskanalys 4. Riskbaserade s¨akerhetstester 5. Kodgranskning 6. Penetrationstestning 7. S¨akerhets˚atg¨arder

(17)

6 2.1. Metoder i litteraturen

Abuse cases, ibland ¨aven kallade misuse cases, kan beskrivas som en variant av use cases med fokus p˚a s¨akerhet. McDermott & Fox (1999) [4] definierar ett use case som en specifikation av en fullst¨andig interaktion mellan ett system och en eller flera akt¨orer och beskriver allts˚a en funktion i systemet. Enligt Sindre & Opdahl (2001) beskriver abuse cases funktio-nalitet som man vill att ett system inte ska till˚ata [5]. Sindre och Ophdahl (2004) [6] skriver att vanliga use cases ¨ar anv¨andbara n¨ar man arbetar med funktionella krav med f¨oljden att man l¨att missar extrafunktionella krav som till exempel s¨akerhetskrav och menar vidare att dessa s¨akerhetskrav kan hittas med abuse cases. CockBurn (2001) [7] skriver att use cases oftast beskrivs med vanlig text men kan ocks˚a utg¨oras av exempelvis fl¨odes- och sekvensdiagram. Sindre & Opdahl [6] skriver att detta ocks˚a kan utnyttjas f¨or abuse cases.

Mead & Stehney (2005) [8] skriver att krav ¨ar kritiska f¨or hur v¨al ett projekt lyckas och att kostnaden f¨or att r¨atta till fel som beror p˚a bristan-de krav ofta ¨ar en stor del av den totala projektkostnaden. Mead (2006a) [9] skriver att i m˚anga fall n¨ar s¨akerhetskrav ¨ar definierade ¨ar dessa of-ta of-tagna fr˚an en lista med s¨akerhetsfunktioner. Vidare skriver f¨orfattaren ocks˚a att fastst¨allandet av s¨akerhetskrav inte ¨ar en eng˚angsaktivitet utan b¨or t¨ankas p˚a under hela utvecklingsprocessen. Ett antal metoder f¨or ut-formandet av s¨akerhetskrav har definierats. Viega (2005)[10] beskriver en metod kallad CLASP som anv¨ander sig av roller och resurser f¨or att bygga s¨akerhetskrav. Mead (2006b) [11] skriver om en process kallad SQUARE som utvecklats p˚a Carnegie Mellon University som utvecklar, kategoriserar och prioriterar s¨akerhetskrav. Haley m.fl. (2008) [12] beskriver ett ramverk f¨or s¨akerhetskrav som har f¨oljande aktiviteter:

1. Identifiera funktionella krav 2. Identifiera s¨akerhetsm˚al 3. Identifiera s¨akerhetskrav 4. Verifiera systemet

Dessa aktiviteter utf¨ors under ett antal iterationer.

McGraw (2006) [3] menar att designbrister ¨ar ansvariga f¨or 50% av s¨ a-kerhetsproblemen. Han f¨oresl˚ar en metod f¨or att utf¨ora arkitekturell

(18)

riska-Metodik 7

nalys som best˚ar av tre stycken huvudaktiviteter; attack resistance analysis som ¨ar ¨amnat att hitta k¨anda svagheter med hj¨alp av exempelvis checklis-tor och metoder som Microsoft STRIDE [13] , ambiguity analysis som ¨ar ¨

amnat att hitta nya svagheter i systemet som ej hittas med attack resistan-ce analysis samt weakness analysis som ¨ar ¨amnat att unders¨oka svagheter i underliggande system och plattformar.

2.2

Metod

I det h¨ar avsnittet beskrivs de metoder som har anv¨ants under examens-arbetet.

2.2.1

Litteraturstudie

I b¨orjan av examensarbetet utf¨ordes en litteraturstudie f¨or att ¨oka kun-skapen om androidplattformen och dess s¨akerhetsfunktioner. D˚a Android ¨

ar en relativt ung plattform var utbudet av vetenskapliga artiklar, r¨orande Androids s¨akerhet, d˚aligt. D¨arf¨or studerades ¨aven artiklar r¨orande Linux-k¨arnan, s¨akerhetsmetoder, implementationer m.m.. Artikels¨okningen ut-f¨ordes i huvudsak i, av LiU tillhandah˚allna ,s¨okmotorer som exempelvis Scopus. Databaser ¨over s˚arbarheter som till exempel National vulnerability database1 anv¨andes f¨or att hitta aktuella s¨akerhetsbrister i Android.

Ett stort st¨od under utvecklingen var ocks˚a Androids utvecklarhemsida2 d¨ar en f¨orteckning ¨over Androids utvecklingsapi tillhandah˚alls. Hemsidan inneh˚aller ¨aven resurser som till exempel inspelningar fr˚an Googles utveck-larkonferens Google I/O och artiklar r¨orande funktioner i Android.

2.2.2

Implementation av ett androidprogram

Under examensarbetet implementerades en androidversion av ett klient-program som idag finns till Java ME-telefoner och Windows Mobile 6. Pro-grammet integrerades med ett befintligt bakomliggande system d¨ar

hante-1En erk¨and databas ¨over k¨anda s˚arbarheter som administreras av amerikanska staten

http://nvd.nist.gov/

(19)

8 2.2. Metod

ringen av till exempel anv¨andare sk¨ottes. Utvecklingen skedde i korta itera-tioner med specifika fokusomr˚aden som till exempel Bluetooth, databaser och GUI. Applikationen ¨ar en l¨osning f¨or att l˚asa upp d¨orrar via mobiltele-foner och beskrivs n¨armare i sektion 4.3. M˚alet med implementationen var inte att ta fram en slutprodukt.

2.2.3

Abuse cases

Under examensarbetet anv¨andes abuse cases f¨or att diskutera och iden-tifiera potentiella s¨akerhetsproblem. En variant av den mall som Sindre & Opdahl [6] f¨oresl˚ar togs fram. Mallarna anv¨andes som utg˚angspunkt i diskussionen och f¨or att dokumentera arbetet, se tabell 2.1. I abuse casen mallen anv¨andes inte alltid alla f¨alt d˚a dessa ibland inte var relevanta. Oli-ka tillg˚angar identifierades i applikationen och systemet i sin helhet. Dessa tillg˚angar, som en angripare eventuellt skulle vilja komma ˚at, anv¨andes sedan f¨or att skapa abuse cases.

2.2.4

akerhetskrav

F¨or att utforma de s¨akerhetskrav som skulle st¨allas p˚a det system som HOW Solutions ville utveckla anv¨andes, med vissa modifikationer, den me-tod som Haley m.fl (2008) [12] definierar. Arbetet inleddes med att definie-ra funktionella kdefinie-rav p˚a applikationen d˚a dessa inte fanns att tillg˚a. Utifr˚an dessa funktionella krav identifierades tillg˚angar i systemet som sedan an-v¨andes f¨or att skapa hotbildstupler. Hotbildstuplerna ¨ar uppbyggda enligt attack, tillg˚ang, skada och kategoriserade enligt CIA 3 [14]. S¨akerhetsm˚al, ¨

aven dessa kategoriserade enligt CIA, f¨or systemet utvecklades sedan med dessa som grund.

Den sista aktiviteten var att utforma s¨akerhetskrav. Dessa s¨ akerhets-krav ¨ar en konkretisering av s¨akerhetsm˚alen och kopplade till de funktio-nella kraven.

(20)

Metodik 9

Attributnamn F¨orklaring

Namn Namn p˚a abuse caset

Sammanfattning En kort sammanfattning av abuse caset

F¨orfattare Namn p˚a den som skrivit abuse caset

Datum Datumet d˚a abuse caset skrevs

Standardv¨ag Den v¨ag som ¨ar standard f¨or attacken

Alternativa v¨agar Alternativa v¨agar som angriparen kan

g˚a f¨or att n˚a sitt m˚al

Mitigering S¨att p˚a vilket en attack kan f¨orhindra,

alternativt mildras

Anknutna abuse cases Abuse cases som ¨ar anknutna till ak-tuellt abuse case. Till exempel om en attack beskriven av ett annat abuse ca-se ¨ar en del av n˚agon v¨ag f¨or att utf¨ora attacken i detta abuse case

Utl¨osande faktor Vad som utl¨oser ett abuse case

Villkor Vilka villkor m˚aste uppfyllas f¨or att

abuse caset skall vara m¨ojligt att utf¨ora

Antagande Antaganden om till exempel systemet

eller angriparen

Mitigeringsf¨ors¨akran Beskriver vad resultatet ¨ar av ett miti-gerat abuse case

V¨arsta m¨ojliga hot Beskriver vad v¨arsta m¨ojliga utfall av abuse caset ¨ar

Relaterade aff¨arsregler Vilka aff¨arsregler som bryts ifall abuse caset ¨ar lyckat

Potentiell missanv¨andarprofil Beskriver en angriparen eller den an-v¨andare som anv¨ander systemet felak-tigt

Ber¨orda parter och hot De som p˚averkas av abuse caset och de hot som abuse caset ber¨or

Terminologi och f¨orklaringar Viktig terminologi och f¨orklaringar Tabell 2.1: V˚ar mall f¨or abuse cases

(21)

10 2.3. Metodkritik

2.2.5

Arkitekturell riskanalys

Arbetet inleddes med att skapa en h¨ogniv˚amodell ¨over de olika komponen-terna i applikationen och systemet. Detta f¨or att enkelt kunna f˚a en ¨oversikt och enklare kunna identifiera potentiella problemomr˚aden i arkitektur och design. N¨asta steg var att g¨ora en Attack resistance analysis och h¨ar an-v¨andes Microsoft STRIDE. H¨ogniv˚amodellen tillsammans med abuse casen anv¨andes f¨or att dela upp applikationen i relevanta subgrupper. STRIDE ¨

ar en akronym f¨or ett antal attacktyper: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service och Elevation of Privilege. Ef-ter detta unders¨oktes vilka av dessa attacktyper som var m¨ojliga mot de olika suggrupperna. N¨asta steg var att hitta mer konkreta risker mot de olika grupperna och d˚a anv¨andes ett antal diskussionsfr˚agor som beskrivs i Howard & Lipner 2006 [15].

En analys som gick ut p˚a att leta efter redan k¨anda attacker mot de plattformar som anv¨ands av systemet utf¨ordes. Denna begr¨ansades dock till Android och de komponenter som anv¨andes.

En Ambiguity analysis, som ocks˚a ing˚ar i en arkitekturell riskanalys enligt McGraw (2006) [3] , utf¨ordes ej d˚a denna analys kr¨aver en stor erfa-renhet utav datas¨akerhet.

2.3

Metodkritik

En begr¨ansning ¨ar att de touchpoints McGraw (2006) [3] beskriver ¨ar t¨ankta att anv¨andas i st¨orre projekt. De slutprodukter som metoderna resulterade i var inte lika viktiga som diskussionerna som h¨olls under utformandet av dessa. Diskussionerna hade blivit b¨attre i en lite st¨orre grupp. Varvandet mellan implementering och de s¨akerhetsmetoder som anv¨andes ¨ar ett bra s¨att f¨or att b¨attre se helheten av arbetet. Den metod som anv¨andes f¨or att ta fram s¨akerhetskraven skalade inte till den applikationen som utvecklades. D¨arf¨or utf¨ordes p˚a grund av tidsbrist endast en iteration. En annan metod f¨or att ta fram s¨akerhetskraven borde anv¨andas.

Microsoft STRIDE ¨ar en enkel metod att anv¨anda och resultatet av denna var mycket bra. Metoden hittade flera s¨akerhetsbrister som inte hade uppt¨ackts i de tidigare aktiviteterna.

(22)

Kapitel 3

En beskrivning av

Android

I detta kapitel beskrivs plattformen Androids grunder samt s¨ akerhetsmo-dellen.

3.1

Grunder

Android ¨ar en samling mjukvara som utg¨ors av ett operativsystem, mel-lanprogramvara och vissa standardapplikationer [16]. Operativsystemet an-v¨ands f¨orst och fr¨amst i mobiltelefoner men finns ¨aven till surfplattor. Open Handset Alliance, d¨ar bland annat Google ing˚ar, st˚ar bakom Android. Android sl¨apptes under licensen Apache 2.0 i september 2008, men nya versioner utvecklas kontinuerligt[17]. Flera mobiltillverkare utvecklar idag androidmobiler bland annat HTC, Sony Ericsson och Samsung och dessa har i sin tur ett flertal olika modeller p˚a marknaden.

Android anv¨ander sig av linuxk¨arnan och ¨arver d¨arf¨or mycket av den grundfunktionaliteten som finns hos den vilket exempelvis ¨ar hantering av tr˚adning, kommunikation med enheter och systemanrop [16].

(23)

12 3.1. Grunder

3.1.1

Applikationer

Externa applikationer ¨ar en viktig del i Android och det som mest utm¨arker den nya generationens mobiltelefoner. Att installera applikationer p˚a tele-foner ¨ar inget nytt utan det nya ¨ar integrationen mellan applikationerna och operativsystemet. Det finns applikationer som hanterar telefonresur-ser som till exempel SMS eller telefonsamtal. Andra applikationer tillf¨or underh˚allning som till exempel spel eller videospelare.

Applikationer distribueras p˚a Android Market, som ¨ar en form av pa-kethanterare1. I Android finns ¨aven m¨ojligheten att installera program fr˚an externa k¨allor, dock m˚aste anv¨andaren explicit till˚ata detta genom att ¨ and-ra i inst¨allningarna. Google har en mer ¨oppen syn p˚a vad som f˚ar publice-ras p˚a market ¨an vad till exempel Apple [18] har. I denna rapport kommer distributionen inte j¨amf¨oras med konkurrenternas l¨osningar, men generellt l¨agger Android ¨over mer ansvar p˚a anv¨andaren. Dwivedi m.fl. (2010) [19] p˚apekar att anv¨andaren d¨arf¨or b¨or vara noga med att kontrollera vad appen egentligen g¨or innan den laddas ned.

Komponentbeskrivning

En androidapplikation best˚ar i grunden av fyra applikationskomponenter. Dessa ¨ar aktiviteter, services, content providers och broadcast recievers. Nedan beskrivs dessa n¨armare.

En aktivitet i Android ¨ar en del i applikationen som presenterar en sk¨arm f¨or anv¨andaren att interagera med [20]. En applikation best˚ar oftast av ett antal aktiviteter som ¨ar sammankopplade och n¨ar en aktivitet startas visas den framf¨or den f¨orra aktiviteten. Den tidigare aktiviteten l¨oper d˚a risk f¨or att bli borttagen ur minnet av Androids skr¨apsamlare. Det ¨ar d¨arf¨or viktigt att t¨anka p˚a att spara undan data som man vill ska finnas kvar i applikationen n¨ar aktiviteten pausas. Aktiviteterna som k¨orts l¨aggs i en stack och n¨ar anv¨andaren trycker p˚a bak˚atknappen avslutas den aktivitet som har fokus och den aktivitet som nu ligger h¨ogst upp p˚a stacken f˚ar fokus.

Om man vill utf¨ora uppgifter i bakgrunden som exempelvis att spela upp en musikfil b¨or man g¨ora detta i en s˚a kallad service som ¨ar en

(24)

En beskrivning av Android 13

kationskomponent som inte har n˚agot GUI. En service som startas av en applikation forts¨atter k¨ora ¨aven om en annan applikation startas. D¨arf¨or ¨

ar det viktigt att man st¨anger ned services n¨ar de inte l¨angre beh¨over k¨ o-ras alternativt att man p˚a n˚agot s¨att informerar anv¨andaren att servicen fortfarande k¨ors, till exempel genom att visa en notifikation i statusraden h¨ogst upp p˚a telefonen.

En content provider hanterar delning av datak¨allor [21]. Content pro-viders ¨ar t¨ankt att anv¨andas fr¨amst om data ska delas mellan applikatio-ner men ¨ar en anv¨andbar abstraktion ¨aven inom en applikation. Android har flera inbyggda content providers som hanterar exempelvis kontakter, video och ljud. Kommunikationen med en content provider sker genom s˚a kallade content resolvers tillsammans med en URI(Uniform Resource Identifier)[22].

En broadcast receiver ¨ar ett objekt som lyssnar p˚a en s˚a kallad broadcast som skickas ut till hela systemet. De flesta broadcasts har sitt ursprung p˚a systemniv˚a och kan till exempel meddela att batteriniv˚an ¨ar l˚ag eller att sk¨armen har blivit p˚aslagen. En broadcasts kan ocks˚a skickas ut av appli-kationer [23][21]. Broadcast receivern utf¨or sedan en operation beroende p˚a vad broadcastmeddelandet inneh˚aller.

Intents

Alla ovanst˚aende komponenter f¨orutom content providers aktiveras med hj¨alp av asynkrona meddelanden som i Android heter Intents. Genom In-tents binder man ihop olika delar av applikationen. Ett Intent inneh˚aller en abstrakt beskrivning av vad som skall utf¨oras. Om intentet skickas till en broadcast receiver beskrivs ist¨allet vad som h¨ant.

Det finns tv˚a huvudkategorier av intents, explicita och implicita: ˆ I ett explicit intent ¨ar det specificerat vilken klass som ska f˚a

informa-tionen. Man m˚aste allts˚a veta det exakta namnet p˚a klassen f¨or att kunna skicka intentet vilket inneb¨ar att det n¨astan enbart anv¨ands f¨or kommunikation mellan komponenter inom samma applikation. ˆ I ett implicit intent ¨ar det inte specificerat exakt vilken komponent

som ¨ar m˚alet utan intentet m˚aste inneh˚alla tillr¨ackligt med informa-tion f¨or att systemet skall kunna v¨alja en passande mottagare.

(25)

14 3.1. Grunder

Ett intent inneh˚aller som sagt information om vad som ska utf¨oras. Nedan beskrivs kortfattat vad denna information kan vara.

Component name Komponentnamnet ¨ar m˚alklassen f¨or intentet. Ett in-tent d¨ar komponentnamnet ¨ar definierat ¨ar alltid ett explicit intent. Action Detta ¨ar en str¨ang som beskriver vad som skall utf¨oras alternativt

vad som har utf¨orts. Str¨angen f¨or att ringa ett samtal ¨ar exempelvis ”ACTION CALL” och str¨angen f¨or att meddela att batteriniv˚an ¨ar l˚ag ¨ar ”ACTION BATTERY LOW”.

Data Den URI[22] till den data som den Action som specificerats skall. Det g˚ar ¨aven att specificera vilken typ av data det ¨ar. Detta f¨or att inte en applikation skall f¨ors¨oka ¨oppna en fil den inte kan ¨oppna. Category En str¨ang som beskriver vilken sorts komponent som ska

hante-ra intentet. Den kan inneh˚alla flera olika kategorier och en komponent m˚aste tillh¨ora samtliga dess f¨or att kunna ta emot intentet. Exem-pel p˚a kategorier ¨ar ”CATEGORY BROWSERABLE”, som inneb¨ar att komponenten kan ¨oppnas inifr˚an en webbrowser, och ”CATEGO-RY LAUNCHER” som inneb¨ar att komponenten ¨ar huvudaktivitet i en applikation.

Extras och flags Ytterligare information, som skall ¨overf¨oras till n¨asta komponent, kan l¨aggas till i ett intent. Extras ¨ar en tupel som inne-h˚aller en nyckel och ett v¨arde. Flaggor beskriver oftast hur en kom-ponent skall k¨oras.

F¨or att operativsystemet ska hitta vilken komponent som ¨ar mottagare av ett implicit intent anv¨ands intentfilter. N¨ar ett implicit intent kastas s˚a j¨amf¨ors tre parametrar i intentet gentemot intentfiltret. Parametrarna mat-chas mot intentfiltrets action, category och data (b˚ade URI och datatyp). Om det finns flera applikationer som uppfyller intentet s˚a f˚ar anv¨andaren besluta vilken applikation som ska hantera anropet[24][25]. Se figur 3.1.

3.1.2

Dalvik VM

Huvudspr˚aket f¨or Android ¨ar Java som k¨ors i en virtuell maskin. Syftet med en virtuell maskin ¨ar att skapa en abstraktion s˚a program skrivet f¨or

(26)

En beskrivning av Android 15

Figur 3.1: Ett exempel p˚a n¨ar anv¨andaren f˚ar v¨alja vilket program som skall ta emot det intent som skickats

den virtuella maskinen inte beh¨over ta h¨ansyn till den aktuella h˚ardvaran. Android anv¨ander inte Javas VM utan har ersatts av en ny virtuell maskin kallad Dalvik. Den st¨orsta tekniska skillnaden ¨ar att Dalvik ¨ar en regis-terbaserad virtuell maskin medan JVM som ¨ar en stackbaserad virtuell maskin. Fler tekniska skillnader finns som g¨or att Java VM och Dalvik inte ¨

ar kompatibla med varandra. Program skrivna i Java m˚aste vara special-skrivna f¨or att fungera p˚a Android. N¨ar en applikation exekveras i Android, skapas en egen instans av Dalvik. Dalvik ¨ar ingen extra s¨akerhetsfunktioner d˚a det ¨ar till˚atet f¨or applikationer att k¨ora kod utanf¨or Dalvik. Dalvik ¨ar ¨

(27)

16 3.1. Grunder

3.1.3

Sandboxning

Android anv¨ander sig av en teknik som kallas f¨or sandboxning som inneb¨ar att ett program k¨ors i en isolerad milj¨o som ofta har begr¨ansade r¨ attighe-ter att anv¨anda resurser i operativsystemet. Android anv¨ander de tillst˚and som godk¨anns av anv¨andaren f¨or att bygga den sandbox som applikatio-nen sedan ska k¨oras i. Genom att anv¨anda sandboxning f˚as ocks˚a f¨ordelen att om n˚agot skulle g˚a fel s˚a ¨ar det en begr¨ansad del av systemet som p˚averkas[27][28][29].

3.1.4

Spr˚

akst¨

od i Android

Majoriteten av alla applikationer till Androids skrivs i Java. Genom arvet fr˚an linux s˚a st¨odjer ¨aven Android kod skrivet i C, C++ och assembler med f¨oljden att tillg˚angen till Androids API begr¨ansas. Utvecklaren kan fritt blanda olika programspr˚ak i samma projekt. Det kan vara praktiskt om Java inte ger en tillr¨ackligt h¨og prestanda och delar av applikationen kan d˚a skrivas i till exempel C. Det har ¨aven gjorts f¨ors¨okt f¨or att f˚a in andra spr˚ak, som till exempel Erlang [30] eller .NET [31], till Android.

3.1.5

Paketeringsprocessen

En applikations k¨allkod ¨ar uppdelad och har en mer fast struktur ¨an ett traditionellt javaprojekt. K¨allkodsfilerna ¨ar enligt Javastandard med pa-ket och klassfiler. En applikation har ¨aven resursmappar som definierar det grafiska gr¨anssnittet, bilder, spr˚ak och liknade information. Resurserna l¨ankas ihop med koden genom en fil som heter R.java och som genereras av utvecklingsverktygen. Vid paketering s˚a interpreteras alla javafiler till .classfiler. Dessa ¨overs¨atts sedan till Dalvik bytekod (.dexfiler) f¨or att k¨oras p˚a Androids virtuella maskin. Dexfilerna packas ihop med resurserna i en s˚a kallad Android Package (.apk). Paketfilen signeras och ¨ar redo f¨or att k¨oras p˚a en telefon [32]. Packeteringsprocessen beskrivs i figur 3.2

(28)

En beskrivning av Android 17

3.2

Androids s¨

akerhetsmodell

I detta avsnitt beskrivs Androids s¨akerhetsmodell p˚a b˚ade applikationsniv˚a och systemniv˚a.

3.2.1

attighetsmodellen

En applikation har som standard inte till˚atelse att anv¨anda funktioner som kan p˚averka andra applikationer, operativsystemet eller anv¨andaren [27]. Dessa funktioner kan exempelvis vara att l¨asa anv¨andarens kontakter eller att koppla upp sig mot internet. En applikation kan dock be om tillst˚and att anv¨anda dessa funktioner genom att specificera detta i AndroidMani-fest.xml2. Vid installation av applikationen f˚ar anv¨andaren bekr¨afta om applikationen ska f˚a anv¨anda dessa funktioner, om anv¨andaren v¨aljer att inte godk¨anna detta utf¨ors ingen installation. Det finns ingen m¨ojlighet att dynamiskt ¨andra vilka tillst˚and en applikation f˚ar anv¨anda, en applikation ¨

ar allts˚a bundet till de tillst˚and som godk¨ants vid installationen.

Att godk¨anna ett tillst˚and inneb¨ar att applikationen har till˚atelse att anv¨anda den resurs och/eller funktion som ¨ar kopplad till tillst˚andet. Hur resurserna sedan anv¨ands ligger utanf¨or Androids s¨akerhetsmodell. En ap-plikation som har tillst˚and att initiera samtal kan till exempel anv¨anda detta f¨or att ringa till dyra betalnummer utan anv¨andarens vetskap. D¨ ar-f¨or ligger mycket ansvar p˚a att anv¨andaren ¨ar kritisk till vilka tillst˚and en applikation verkligen beh¨over. Ett tetrisliknande spel kanske inte beh¨over ha till˚atelse att komma ˚at telefonboken.[19]

3.2.2

Kodsignering

Operativsystemet delar upp systemet i tv˚a delar, kod som tillh¨or systemet och resterande applikationer. F¨or att applikationer ska f˚a installeras m˚aste de vara signerade med ett certifikat. Certifikatet beh¨over inte vara signerat av en betrodd 3:e part (en s˚a kallad certifieringsutgivare) utan egensigne-rade certifikat ¨ar till˚atna. Signeringens syfte ¨ar att identifiera och verifiera applikationens utgivare. Applikationer med samma namn och signerad med samma signatur identifieras som exakt samma applikation. Vid den f¨orsta

(29)

18 3.2. Androids s¨akerhetsmodell

installationen best¨ams s¨okv¨ag, anv¨andarid (UID)och gruppid (GID). Vid senare installationer kommer applikationen tilldelas samma s¨okv¨ag, UID och GID. F¨or att underl¨atta f¨or utvecklare har Android ett utvecklingsl¨ a-ge som till˚ater applikationer att vara signerade med ett enklare certifikat [34]. Utvecklingsl¨aget ¨ar avst¨angt som standard, inte f¨or att det ¨ar speciellt os¨akert men det ¨okar dock attackytan n˚agot.

3.2.3

Linuxk¨

arnans inblandning

Android anv¨ander sig av linuxk¨arnan. Linuxk¨arnan implementerar mycket av de s¨akerhetsfunktioner som n¨amns i denan rapport. Bovet (2005) [35] skriver att k¨arnan ¨ar av typen monolitisk k¨arna, vilket kortfattat inneb¨ar att den st˚ar f¨or allt som inte de egna processerna g¨or, dvs exekvering av drivrutiner, minneshantering etc. K¨arnan ansvarar ¨aven f¨or filsystemet och d¨arf¨or spelar UID/GID en central roll i Android som dock implementerar detta lite annorlunda.

UID/GID

Ett UID eller User ID ¨ar ett nummer i ett system som unikt identifie-rar en anv¨andare. En anv¨andare tillh¨or ocks˚a en grupp som har ett unikt GID. UID med v¨ardet 0 identifierar systemadministrat¨oren ¨aven kallad root. Root ¨ar en privilegierad anv¨andare med n¨astintill obegr¨ansade r¨ attig-heter i operativsystemet.

Ge applikationer samma UID

En m¨ojlighet som Android erbjuder ¨ar att ge tv˚a applikationer samma UID och vilket inneb¨ar att de kan exekveras inom samma sandbox. Appli-kationerna kan d˚a komma ˚at varandras resurser. Det m¨ojligg¨or ocks˚a f¨or applikationerna att dela process och allt annat i sandboxen. Funktionen kan utg¨ora en signifikant s¨akerhetsrisk, det finns dock vissa krav som m˚ as-te uppfyllas: F¨or att tv˚a applikationer ska f˚a dela UID m˚aste dessa vara signerade utav samma utvecklarcertifikat. Vidare m˚aste de ocks˚a explicit specificera ett UID i respektive AndroidManifest.xml.

(30)

En beskrivning av Android 19

R¨attigheter f¨or filer och enheter

Fr˚an UNIXv¨arlden finns ett begrepp som fortfarande lever vidare i Linux och det ¨ar ”In UNIX everything is a file”[36]. Detta g¨or att filr¨attigheter spelar en v¨aldigt central roll d˚a dessa ¨aven g¨aller f¨or till exempel enheter. Linux r¨attigheter ¨ar enligt POSIX standarden, d¨ar varje m¨ojlig anv¨andare delas in i tre kategorier. Anv¨andaren kan vara ¨agare, gruppmedlem eller resterande anv¨andare. F¨or varje kategori kan filen ha tre olika r¨attigheter l¨as, skriv och exekvera. Skapas en fil sparar operativsystemet ner metadata och d˚a s¨atts ¨agaren till filen till det aktiva UID och gruppen till det aktiva GID.

Sandboxning genom egna anv¨andare

I persondatorer brukar ett UID definiera just en anv¨andare och alla pro-gram som den anv¨andaren k¨or f˚ar samma UID. En vanlig session p˚a en persondator ¨ar till exempel att anv¨andaren loggar in och startar upp n˚agra program som en webbl¨asare och en mailklient. De inneb¨ar att webbl¨asare och mailklienten kommer k¨oras under anv¨andarens GID/UID. Detta g¨or att de delar l¨as- och fisker¨attigheter till inst¨allningsfiler och sessionsdata. Programmen har ¨aven r¨attigheter att exempelvis avsluta varandras proces-ser. I Android startas ist¨allet varje applikation under sitt egna UID vilket ger en v¨aldigt stark separation mellan applikationer, processer och filer.

(31)

20 3.2. Androids s¨akerhetsmodell

(32)

Kapitel 4

Applikationen

I det h¨ar kapitlet beskrivs det system som existerar idag samt hur den ap-plikation som utvecklats till Android fungerar och passar in i det nuvarande systemet.

4.1

Syfte

Syftet med applikationen var f¨orst och fr¨amst att unders¨oka de delar som HOW Solutions ville ha mer information om, se sektion 1.3.1. Applikationen utvecklades ocks˚a med m˚als¨attningen att utforska Android f¨or att finna svagheter och fallgropar som kan p˚averka s¨akerheten.

4.2

Det befintliga systemet

Systemet best˚ar idag av en backend, en databas, mobilklienter och d¨orrl˚as som kommunicerar med varandra. En h¨ogniv˚abeskrivning av systemet kan ses i figur 4.1.

(33)

22 4.2. Det befintliga systemet

Figur 4.1: En ¨oversikt av systemet

4.2.1

Backend

Backendens syfte ¨ar att hantera autentisering, koppla ihop l˚as, brukare och telefoner samt att synkronisera data som till exempel loggar. Backend och klienterna kommunicerar via https och data formateras till JSON1. Ett generellt webbanropsfl¨ode beskrivs nedan.

1. En inloggningsf¨orfr˚agan g¨ors till en utav de webbservices som finns.

(34)

Applikationen 23

2. Backend h¨amtar de anv¨andaruppgifter f¨or autentisering fr˚an databa-sen.

3. Backend kontrollerar anv¨andaruppgifterna fr˚an klienten med uppgif-terna fr˚an databasen.

4. Backend kontrollerar anv¨andarens befogenheter.

5. Ett svar genereras och paketeras som ett JSON objekt. 6. Svaret returneras till klienten.

Backendens webbservices f¨oljer designarkitekturen REST2 vilket har defi-nierat en stor del av den interna designen i applikationen.

4.2.2

Databasen

Databasen i backend ¨ar en SQL-databas. Databasen inneh˚aller information om anv¨andarna s˚asom namn, anv¨andarnamn och adress. Databasen ansva-rar ¨aven att f¨or lagra vilken brukare som ¨ar kopplad till vilket l˚as och vilka anv¨andare som har till˚atelse att ¨oppna l˚asen.

4.2.3

Telefonen

Telefonens funktion i systemet ¨ar att k¨ora de olika mobilklienterna. Klien-ten finns idag till Windows mobile och till Java ME. Telefonen l¨ampar sig bra som klient d˚a telefonerna redan anv¨ands av de anst¨allda i tj¨ansten. En-heterna ¨ar n˚agot dyrare men beh¨over oftast inte lika mycket administration som till exempel handdatorer. Dessutom underl¨attar 3G-n¨atet kommuni-kationen med backend d˚a det oftast har mycket bra t¨ackning.

4.2.4

aset

L˚asets uppgift ¨ar att sk¨ota kommunikationen med mobilklienterna och att l˚asa upp de fysiska l˚asen. L˚asets h˚ardvara best˚ar av ett inbyggt system, me-kanik f¨or att l˚asa upp l˚aset och ett batteri. Mjukvaran i l˚aset har utvecklats

2En akronym f¨or Representational State Transfer och ¨ar ett designm¨onster f¨or

(35)

24 4.2. Det befintliga systemet

tidigare. Kommunikationen mot det inbyggda systemet sker ¨over Bluetooth d¨ar l˚aset enbart st¨odjer protokollet RFCOMM, vilket ¨ar ett v¨aldigt simpelt protokoll som ¨aven kallas seriell port ¨over Bluetooth. En viktigt detalj vid kommunikationen med l˚aset var att parning av enheterna inte skulle kr¨ a-vas. Denna funktionalitet d¨ok upp i Androids API niv˚a 10. I figur 4.2 visas den d¨orr som anv¨andes f¨or utveckling.

Figur 4.2: Utvecklingsd¨orren p˚a utsidan

4.2.5

Loggning

Loggningen ¨ar en viktigt del av systemet. Det ¨ar funktionalitet som ¨ar betydligt sv˚arare och mer manuellt i ett traditionellt system med fysiska nycklar. Den mesta loggningen sker i backend f¨or att minska tilliten till kli-enterna. De loggarna klienten m˚aste ansvara f¨or ¨ar kommunikationen med l˚asen. Dessa loggar synkroniseras sedan mot backend f¨or att ¨oka sp˚ arbar-heten.

(36)

Applikationen 25

4.2.6

Uppl˚

asningsf¨

orfarande

1. En anv¨andare kommer till en d¨orr som har ett av speciall˚asen instal-lerat.

2. Anv¨andaren loggar in med sina anv¨andaruppgifter p˚a klienten.

3. Backend autentiserar anv¨andaren.

4. En lista med l˚as som anv¨andaren har till˚atelse att l˚asa upp skickas till klienten.

5. Anv¨andaren v¨aljer det l˚as som skall ¨oppnas och klickar p˚a l˚as upp.

6. Klienten startar d˚a en kommunikation med l˚aset och skickar ¨over ett l˚as upp-kommando.

7. Om l˚as upp-kommandot ¨ar korrekt vibrerar telefonen och l˚aset g˚ar att ¨oppna.

Klienten m˚aste ha tillg˚ang till internet f¨or att kunna logga in och h¨amta de olika l˚asen. Efter dessa steg finns dock m¨ojligheten att anv¨anda sig av applikationen i ett offlinel¨age genom att genera och synkronisera ner kryptonycklar i f¨ortid. Det kan vara n¨odv¨andigt om vissa brukare bor s˚a att telefonerna inte har t¨ackning.

4.3

Den utvecklade applikationen

Den applikation som utvecklades under examensarbetet ¨ar en begr¨ansad version utav de klienter som redan existerar f¨or andra plattformar. Det unders¨oktes ej hur klienterna f¨or Windows Mobile och Java var program-merade. Applikationen utvecklades ist¨allet utifr˚an en mer generell program-beskrivning. F¨or att kunna utnyttja plattformen p˚a b¨asta s¨att l˚ag fokus i b¨orjan av utvecklingen p˚a att f¨orst˚a Android och dess funktionen. Nedan beskrivs kort de delar i applikationen som utvecklades.

(37)

26 4.3. Den utvecklade applikationen

4.3.1

Inloggning

En anv¨andare loggar in med sitt anv¨andarnamn och sitt l¨osenord p˚a n˚agon utav de telefoner som finns tillg¨angliga. En anv¨andare beh¨over allts˚a inte ha en individuell telefon. D¨aremot ¨ar varje telefon bara kopplad till l˚as inom ett distrikt. Telefonen identifieras via sin bluetoothsadress som ¨ar unik f¨or varje telefon. Autentisering av anv¨andarna sker via ett anrop backend och efter autentisering f˚ar anv¨andaren tillg˚ang till de resterande delar i applikationen. F¨or att snabba upp inloggningen s˚a sparas anv¨andardata p˚a telefonen. Denna data ¨ar sparad tills en ny anv¨andare loggar in, d¨aremot sker alltid autentiseringen i backend. Hur inloggningsrutan ser ut kan ses i figur 4.3.

(38)

Applikationen 27

4.3.2

Inst¨

allningar

En inst¨allningssida, d¨ar telefonspecifika inst¨allningar ska kunna sparas, ut-vecklades. En inst¨allning som fanns i de tidigare applikationerna var m¨ oj-ligheten att v¨alja spr˚ak. I Android finns funktionen att vid utvecklandet skapa individuella resursmappar f¨or olika spr˚ak vilket kan ses i figur 4.4[37].

Figur 4.4: Resursmapparna f¨or engelska, finska och svenska

Vilken resursmapp som v¨aljs baseras p˚a objektstypen Locale som in-neh˚aller information om vilket land och vilket spr˚ak telefonen befinner sig i[38]. Genom att ¨andra vilken Locale som skall anv¨andas kan applikationen, utan att beh¨ova ¨andra i k¨allkoden, visa str¨angar i olika spr˚ak. I figur 4.5 ges exempel p˚a tv˚a resursstr¨angar i Android, en engelsk och en svensk. Ge-nom att referera till str¨angarnas namn i koden v¨aljs r¨att str¨ang beroende p˚a vilket spr˚ak som ¨ar valt.

(39)

28 4.3. Den utvecklade applikationen

4.3.3

aslista

N¨ar inloggning har skett visas en lista med de l˚as som anv¨andaren har till˚atelse att ¨oppna. Denna lista synkroniseras med j¨amna mellanrum mot servern s˚a att anv¨andaren alltid har senaste l˚aslistan. L˚asen sparas i en SQLite-databas p˚a telefonen via en “content provider” som beskrivs i sek-tion 3.1.1. Varje l˚as representeras av en textstr¨ang som ¨ar namnet p˚a den brukare eller den adress som ¨ar kopplad till l˚aset.

Intill varje l˚as finns en knapp f¨or att l˚asa upp respektive l˚asa. N¨ar anv¨andaren klickar p˚a knappen startar en uppl˚asning respektive l˚asning.

En designprincip som anv¨ants vid presentation l˚aslistan ¨ar att inte skapa upp nya objekt f¨or varje element i listan. Ist¨allet ˚ateranv¨ands det objekt som f¨orsvann fr˚an sk¨armen och inneh˚allet samt vilket element som detta refererar till ¨andras. Detta rekommenderas av Google f¨or att snabba upp listhantering och f¨or att spara minne [39].

4.3.4

Uppl˚

asning

Det f¨orsta som anv¨andaren beh¨over g¨ora ¨ar att r¨ora handtaget f¨or att star-ta elektroniken p˚a insidan av d¨orren. N¨ar elektroniken i d¨orren ¨ar ig˚ang kan anv¨andaren starta kommunikationen med l˚aset. Ett meddelande krypterat med l˚asets publika nyckel h¨amtas fr˚an backend. I meddelandet meddelar backend om anv¨andaren har beh¨orighet att ¨oppna l˚aset eller inte. Anv¨ an-daren f˚ar feedback genom en animation som visar n¨ar de olika delarna i uppl˚asningsprocessen utf¨ors och n¨ar de ¨ar klara visas en gr¨on bock. D˚a kan anv¨andaren trycka ner handtaget och d¨orren g˚ar att ¨oppna. Om n˚agot steg inte g˚ar att utf¨ora visas ist¨allet ett r¨ott kryss.

(40)

Kapitel 5

Resultat och analys

I detta kapitel presenteras resultatet fr˚an litteraturstudien, abuse case-framst¨allningen, kravutformningen och riskanalysen med avseende fr˚ age-st¨allningarna.

5.1

Identifierade s¨

akerhetsproblem

Flera identifierade s¨akerhetsproblem uppt¨acktes under implementation och f¨orberedelsearbete. Dessa beskrivs n¨armare i denna sektion.

5.1.1

Rootning

Rootning som begrepp inneb¨ar att skaffa sig tillg˚ang till administrat¨ orskon-tot root. F¨or angripare ¨ar tillg˚ang till rootkontot bland de ¨aldsta motiven just f¨or att i princip allt ¨ar till˚atet f¨or rootanv¨andaren. Standardinst¨ all-ningen i Android ¨ar att rootkontot ¨ar inaktiverat, vilket ¨ar en intressant designl¨osning. Det g¨or android till ett multianv¨andarsystem utan en ak-tiv rootanv¨andare vilket g¨or att sandboxningen ¨ar mycket stark. P˚a grund av detta finns det starka motiv f¨or en angripare att aktivera rootkontot. Vanliga anv¨andare kan ocks˚a g¨ora detta frivilligt f¨or att f˚a tillg˚ang till l˚ast funktionalitet.

(41)

30 5.1. Identifierade s¨akerhetsproblem

Det ¨ar sv˚art att skydda sig mot anv¨andare som aktivt och ¨oppet v¨aljer att roota sin telefon. I nya versioner av Android har nyheterna ofta varit funktionalitet som var m¨ojligt om anv¨andaren hade en rootad enhet och p˚a s˚a s¨att har incitamentet f¨or att l˚asa upp rootanv¨andaren minskat. F¨or angripare som ¨ar kunniga p˚a Linuxk¨arnan, blir ¨aven Android en v¨alk¨and attackyta. Attackm¨ojligheterna skiljer sig inte speciellt mot andra opera-tivsystem. Standardattacker som buffer overflow och race condition g¨aller ¨

aven f¨or Android. Det ¨ar ¨aven fullt m¨ojligt att s¨akerhetsh˚al f¨or Linuxk¨arnan som uppt¨acks i andra sammanhang ocks˚a kan vara aktuella s¨akerhetsh˚al till Android. Det finns k¨anda attacker [40] mot Android d¨ar man har utnyttjat k¨anda s¨akerhetsh˚al f¨or att skaffa sig root utan att anv¨andaren uppt¨acker attacken.

5.1.2

Loggning

En viktig del av p˚alitligheten i ett system ¨ar att man kan f¨olja h¨ andel-sef¨orloppet genom loggning. D¨arf¨or ¨ar det mycket viktigt att integriteten p˚a loggningen ¨ar h¨og. Ett potentiellt problem som l¨att kan f¨orbises vid designandet av loggningsfunktionen ¨ar att ett program kraschar efter att den utf¨ort sin uppgift men innan loggning hunnit att ske. I den utvecklade applikation skulle detta kunna vara att en uppl˚asning av en d¨orr utf¨ors men att applikationen sedan kraschar innan en skrivning till loggen skett p˚a grund av att telefonens minne ¨ar fullt exempelvis. I praktiken kan man d˚a l˚asa upp d¨orrar utan att l¨amna loggar efter sig. I detta fall ¨ar det allts˚a viktigt att loggning sker innan till exempel en uppl˚asning utf¨ors.

Att s¨anka tillg¨angligheten p˚a applikationen, genom att den slutar fun-gera om m¨ojligheten att skriva till loggen inte finns, ¨ar en rimlig l¨osning. Likv¨al om applikationen inte kan synkronisera loggarna tillbaka till serven inom till exempel 4 timmar borde anv¨andaren informeras och applikationen sluta fungera.

5.1.3

attigheter f¨

or filer och databaser

En viktig s¨akerhetsaspekt i de flesta system ¨ar att ˚atkomst till filer och funktioner endast ¨ar till˚atet f¨or de som har r¨att till det. I Android ¨ar det

(42)

Resultat och analys 31

viktigt att de r¨attigheter som s¨atts p˚a de filer som ska vara privata f¨or applikationen ¨ar r¨att. Filer kan ha tre olika r¨attigheter.

MODE PRIVATE Med denna r¨attighet kan endast den egna applikatio-nen, eller en applikation med samma UID, l¨asa och skriva till filen.

MODE WORLD READABLE Med denna r¨attighet kan alla andra

applikationer l¨asa filen men inte skriva till den.

MODE WORLD WRITEABLE Med denna r¨attighet kan alla

appli-kationer i systemet b˚ade l¨asa och skriva till filen.

En databas i Android lagras som en fil och r¨attigheter till denna ges p˚a samma s¨att som till filerna. Om en utvecklare slarvar och s¨atter fel r¨attigheter p˚a filer eller databaser kan detta leda till att information stj¨als eller att n˚agon helt enkelt ¨andrar informationen och d˚a spelar det ingen roll hur stor s¨akerheten ¨ar i applikationen i ¨ovrigt.

Nyligen uppt¨acktes det att information fr˚an Skypes androidapplikation kunde l¨acka till obeh¨origa [41]. Orsaken var d˚aligt satta r¨attigheter p˚a databaserna som hanterade anv¨andarnas uppgifter. Ist¨allet f¨or att endast skypeapplikationen hade tillg˚ang till databasen, allts˚a att r¨attigheten ”MO-DE PRIVATE” valts, hade samtliga applikationer l¨asr¨attigheter och kunde d¨arf¨or potentiellt l¨asa ut data fr˚an databasen. Datan i databasen var ocks˚a lagrad okrypterad. En svaghet som detta borde s˚aklart ha uppt¨ackts innan applikationen sl¨appts. H¨ar hj¨alper metoder som exempelvis STRIDE till att uppt¨acka f¨orekomster av enkla men allvarliga svagheter som denna.

5.1.4

Androids aktivitetsstack

N¨ar en ny aktivitet startas i Android l¨aggs den p˚a en aktivitetsstack som hanteras av operativsystemet. Den aktivitet som senast k¨orde ligger d˚a kvar under den nya aktiviteten och n¨ar den nya aktiviteten p˚a n˚agot s¨att avslutas, ˚aterupptas den aktivitet som nu ligger h¨ogst upp p˚a stacken. Ett s¨att att avsluta en aktivitet ¨ar att anv¨anda den bak˚atknapp som finns p˚a m˚anga androidtelefoner.

H¨ar har vi uppt¨ackt ett m¨ojligt s¨akerhetsproblem. Ponera att en ap-plikation har en inloggningsfunktion. N¨ar anv¨andaren loggat in anv¨ands

(43)

32 5.1. Identifierade s¨akerhetsproblem

applikationen p˚a korrekt s¨att och anv¨andaren loggar sedan ut och appli-kationen ˚aterg˚ar d˚a till inloggningssk¨armen. Om anv¨andaren d˚a trycker p˚a bak˚atknappen kan senast anv¨anda aktivitet visas f¨or anv¨andaren. Det-ta kan d˚a vara en aktivitet som inte avslutades n¨ar anv¨andaren loggade ut fr˚an applikationen vilket eventuellt kan leda till att applikationen kan anv¨andas trots att anv¨andaren egentligen ¨ar utloggad. Det ¨ar viktigt att t¨anka p˚a hur Android hanterar aktiviteter och tj¨anster s˚a att problem som dessa inte uppst˚ar. Det finns vissa sv˚arigheter med att l¨osa detta problem. En l¨osning p˚a detta ¨ar dock att anv¨anda sig av en intentflagga som heter ”FLAG ACTIVITY CLEAR TOP” n¨ar startaktiviteten anropas[42]. Den-na flagga inneb¨ar att alla aktiviteter som ligger ¨over den anropade aktivi-teten avslutas och den anropade aktiviaktivi-teten hamnar h¨ogst upp p˚a stacken. Genom att utf¨ora omfattande tester vid utveckling av applikationer som g¨or undantag fr˚an Androids standardhantering av aktiviteter kan liknande problem uppt¨ackas tidigt under utvecklingen och inte n¨ar applikationen ¨ar sl¨appt.En god f¨orst˚aelse f¨or hur Androids aktivitetscykel och aktivitetshan-tering rekommenderas ocks˚a.

5.1.5

SQL-injektion

D˚a varje applikation har tillg˚ang till en sqldatabas ¨ar attacken aktuell. En SQL-injektionattack ¨ar en attack som utnyttjar d˚aligt saniterad indata och anv¨ander indatan i fr˚agor mot databas. Genom v¨alutformad indata kan en anfallare plocka ut eller ¨andra data i databasen. Ett exempel visas nedan [43][44]. Tanken med f¨oljande query ¨ar att f˚a ut anv¨andardata fr˚an anv¨andartabellen f¨or det username som anges.

q u e r y = ”SELECT * FROM u s e r s WHERE name =” + username + ” ; ”

Om en anv¨andare skriver in anv¨andarnamnet som ‘ or ‘1’ = ‘1 resulterar detta ist¨allet i att all anv¨andardata returneras.

SELECT * FROM u s e r s WHERE name = ”” or 1=1;

I Android, liksom i m˚anga andra moderna system, mitigeras attackerna genom funktionalitet f¨or att hj¨alpa programmeraren att utforma sql fr˚agor och att sanera indata. Det ¨ar viktigt d˚a det kan vara m˚anga steg mellan skapande av databasfr˚agan och exekveringen av fr˚agan. Ett vanligt exem-pel ¨ar att kommunikation sker indirekt med en databas via en content

(44)

Resultat och analys 33

resolver som i sin tur kommunicerar med en content provider. Ett viktigt verktyg i kampen mot SQL-injektion ¨ar funktionen query i SQLiteQuery-Builder. Denna funktion anv¨ander sig av parametrisering av sql-argument. Parametrisering inneb¨ar att de argument som anv¨ands f¨or att utf¨ora se-lektionen j¨amf¨ors i sin helhet och kan allts˚a inte tolkas som ytterligare SQL-kommandon.

F¨or att hj¨alpa till med sanering av indatan finns funktionen append-WhereEscapeString i SQLiteQueryBuilder [45]. Denna funktion saniterar str¨angar fr˚an escape tecken.

Genom att anv¨anda sig av Androids inbyggda l¨osningar kan man f¨ or-sv˚ara utf¨orandet av SQL-injektionsattacker. Attacken kan ¨aven ske mot den server som applikationen kommunicerar med och n¨odv¨andiga ˚atg¨arder b¨or g¨oras ¨aven p˚a denna del av systemet.

5.1.6

Gamla versioner

Ett problem ¨ar att m˚anga telefoner k¨or gamla versioner av Android som eventuellt har kvar gamla svagheter. En stor orsak till detta ¨ar att det ¨ar tillverkarna av telefonerna som har ansvar f¨or att skicka ut uppdateringar till telefonerna. Flera tillverkare prioriterar inte uppdateringar f¨or ¨aldre telefonmodeller

5.2

Hj¨

alpmedel

I detta avsnitt beskrivs n˚agra av de hj¨alpmedel som kan utnyttjas av ut-vecklare f¨or att ¨oka s¨akerheten p˚a applikationerna.

5.2.1

Obfuskering

All kod g˚ar att dekompilera f¨or att kunna se hur applikationen ¨ar byggd. Obfuskering d¨oper om variabler till oigenk¨annlighet, tar bort d¨od kod och tar bort alla kommentarer. Koden kommer inte att bli om¨ojlig att l¨asa men det kommer att ta betydligt l¨angre tid. Eftersom obfuskering h¨anger starkt ihop med spr˚ak och byggprocessen har endast obfuskering r¨orande androidplattformen ber¨orts.

(45)

34 5.2. Hj¨alpmedel

ProGuard

Det obfuskeringsverktyg som Android har valt att integrera heter ProGu-ard. Det ¨ar ett ¨oppenk¨allkodsprojekt och har funnits l¨angre ¨an Android och fungerar f¨or Java i allm¨anhet. ProGuard f¨oljer med bland Androids utvecklingsverktyg och integreras v¨al med resten av processen som ¨ar au-tomatiserad om man anv¨ander till exempel Eclipse som utvecklingsmilj¨o. N¨ar ProGuard ¨ar aktiverat k¨ors classfilerna ett varv genom ProGuard innan de ¨overs¨atts till dexfiler. Det h¨ar g¨aller bara n¨ar applikationen ¨ar i s˚a kallat releasel¨age och inte i utvecklingsl¨age d˚a obfuskering f¨orsv˚arar debuggning.

Hur stor skillnad g¨or obfuskering

En del av koden ur den applikation som utvecklades kan ses nedan. ¨Overst visas originalk¨allkoden, i mitten en uppackad apkfil utan obfuskering och sest en uppackad apkfil med obfuskering.

// S e t v a r i a b l e s s a l t T a s k = new S a l t H e l p e r ( ) ; l o g i n T a s k = new L o g i n H e l p e r ( ) ; Button btn = ( Button ) f i n d V i e w B y I d (R . i d . l o g i n b u t t o n ) ; u s e r n a m e E d i t T e x t = ( E d i t T e x t ) f i n d V i e w B y I d (R . i d . l o g i n u s e r n a m e e d i t t e x t ) ; Button l o c a l B u t t o n = ( Button ) f i n d V i e w B y I d ( 2 1 3 1 3 6 1 8 1 9 ) ; E d i t T e x t l o c a l E d i t T e x t 1 = ( E d i t T e x t ) f i n d V i e w B y I d ( 2 1 3 1 3 6 1 8 1 5 ) ; t h i s . u s e r n a m e E d i t T e x t = l o c a l E d i t T e x t 1 a l o c a l a = new a ( ) ; t h i s . e = l o c a l a ; c l o c a l c = new c ( ) ; t h i s . f = l o c a l c ; Button l o c a l B u t t o n = ( Button ) f i n d V i e w B y I d ( 2 1 3 1 3 6 1 8 1 9 ) ; E d i t T e x t l o c a l E d i t T e x t 1 = ( E d i t T e x t ) f i n d V i e w B y I d ( 2 1 3 1 3 6 1 8 1 5 ) ; t h i s . b = l o c a l E d i t T e x t 1 ;

Som exemplet ovan visar ¨ar koden fortfarande relativt l¨asbar. Namn-valen f¨orsvinner vilket f¨orsv˚arar l¨asandet. Dock ¨ar alla externa API-anrop fullt l¨asbara. S˚a obfuskeringen i ett starkt typat spr˚ak som Java ¨ar inte speciellt effektiv. Aktiveringen av ProGuard ¨ar dock enkel och en utveckla-re b¨or anv¨anda denna funktion. Utvecklaren b¨or vara medveten om graden av obfuskering.

(46)

Resultat och analys 35

5.2.2

St¨

od f¨

or kryptering

Kryptering ¨ar en s¨akerhetsfunktion som anv¨ands f¨or att skydda sig mot tjuvlyssning av data men ocks˚a mot o¨onskad manipulering. I systemet har fyra olika delar f¨or vilket behovet av kryptering har identifierats. Kommu-nikationen med servern, inst¨allningsfiler, den lokala databasen och kommu-nikation med l˚aset.

F¨or kryptering av kommunikation ¨ar krypteringen redan definierade av det befintliga systemet. Protokollet f¨or kommunikation med servern sker i SSL/TLS d¨ar Android har ett v¨alutvecklat st¨od. Android API skeppas med Apaches httpklient, vilket ¨ar en klient som ¨ar flera ˚ar ¨aldre ¨an Android [46]. Applikationen hanterar data som ¨ar intressant att h˚alla hemlig till exempel anv¨andaruppgifter och kryptonycklar till l˚asen men applikationen skickar ¨aven hem loggar d¨ar integriteten ¨ar prioriterad. D˚a ¨ar SSL/TLS bra d˚a det st¨odjer autentisering av servern, krypterar data samt skyddar data fr˚an manipulering. L˚asets kryptering ¨ar inget som st¨ods direkt av Android utan kr¨aver ett tredjepartsbibliotek. Biblioteket som anv¨ants heter Bouncy Castle1[47] som st¨odjer ett flertal av krypteringsalgoritmer. Bouncy Castle ansvarar f¨or kryptering ¨over den okrypterade Bluetooth kopplingen gentemot l˚aset. Det var ett krav d˚a l˚aset bara kommunicerade krypterat.

Kryptering av lagrad data ¨ar ett svagt skydd. Nyckeln m˚aste finnas i applikationen vilket g¨or det fullt m¨ojligt att dekompilera applikationen och utl¨asa nyckeln. Det skulle skydda mot program som till exempel massinsam-lar information men har lyckats ta sig runt sandboxningen. F¨or kryptering av filer har inte Android n˚agon eget utvecklat utan anv¨ander sig av javas st¨od via javax.crypto. Bouncy Castle ¨ar ett rimligt alternativ speciellt d˚a det redan anv¨ands i applikationen. Kryptering av databasen finns det inget inbyggt st¨od f¨or. Det finns n˚agra trejdepartsl¨osningar [48] som borde g˚a att f˚a kompatibla, men v˚ar uppfattning ¨ar att det kr¨avs mycket arbete. En annan l¨osning ¨ar att kryptera texten innan den lagras till databasen, h¨ar kan dock datam¨angden ¨oka v¨asentligt. Ett test utf¨ordes genom att kryp-tera en 50 tecken l˚ang str¨ang med algoritmen Blowfish. Den krypterade str¨angen resulterade i en 96 tecken l˚ang str¨ang. Eftersom SQLitedataba-sen som skeppas med Android har en begr¨ansning p˚a att storleken inte f˚ar ¨

overstiga 1 MB ¨ar detta ett relevant problem. Blowfish ¨ar en symmetrisk

(47)

36 5.3. Distribution

kryptering s˚a storleksbegr¨ansningen blir mer aktuell om en asymmetrisk algoritm anv¨ands ist¨allet. Kryptering av f¨alt i databasen ¨ar m¨ojligt och beror p˚a m¨angden data, storlek p˚a nycklar och val av algoritm.

5.3

Distribution

HOW Solutions var intresserade av alternativ till Android Market. I det h¨ar stycket unders¨oks n˚agra olika s¨att f¨or att distribuera applikationen. Ur ett s¨akerhetsperspektiv ¨ar det viktigt med en v¨al definierad infrastruktur f¨or att kunna uppdatera klienterna.

5.3.1

Nackdelar med Android market

Det som g¨or market oattraktivt f¨or f¨oretagsapplikationer ¨ar att det p˚a market inte g˚ar att begr¨ansa vilka som ska f˚a ladda ner applikationerna2. Vid rapportens skrivande finns det ingen r¨attighetsmodell utan en appli-kation ¨ar tillg¨anglig f¨or alla [50]. F¨oretag kan ha ett intresse att deras f¨oretagsapplikationer inte sprids ¨oppet. En annan begr¨ansning p˚a market ¨

ar att anv¨andarna m˚aste vara kopplade till ett googlekonto.

5.3.2

Krav

HOW Solutions ville att plattformen skulle st¨odja vissa delar med avseen-de p˚a distribution. Ett krav var att det ska g˚a att automatisk uppdatera applikationen. Vid en ny version av applikationen ska enheterna ladda ner och installera den nya versionen. Installationen av den nya versionen b¨or vara osynlig f¨or anv¨andarna.

Ett annat krav var m¨ojligheten att kunna skicka ut telefonspecifika ap-plikationer. Det inneb¨ar att en inst¨allningsfil inneh˚allande unik data f¨or enheten m˚aste inkluderas i installationsfilen.

Det sista kravet var att centralt kunna skicka applikationen till en ny telefon utan att fysiskt beh¨ova hantera telefonen.

2Man kan vid utveckling av applikationen definiera vilka krav som m˚aste uppfyllas

av telefonen som ska k¨ora applikationen. Detta kan vara exempelvis mjukvaruversion, sk¨armstorlek eller touchsk¨arm. Detta ¨ar dock inte anv¨andbart i detta fall [49].

(48)

Resultat och analys 37

5.3.3

Automatiskt uppdatering

Tv˚a m¨ojliga l¨osningar f¨or automatisk uppdatering identifierades. Anting-en sk¨oter varje applikation sina egna uppdateringar eller s˚a ansvarar en separat applikation f¨or att sk¨ota de andra applikationernas uppdateringar likt en pakethanterare. Pakethanterare l¨ampar sig om organisation har fle-ra olika applikationer f¨or sina anst¨allda. Eftersom det f¨or tillf¨allet bara var aktuellt med en applikation valdes l¨osningen med att applikationen sk¨ ot-te uppdaot-teringen sj¨alv. L¨osningen var att rikta ett Intent.ACTION VIEW mot application/vnd.android.package-archive. Android ger applikationen en tydlig kommunikationskanal mot systemets installationsprogram. Det gick inte att f˚a uppdateringen osynligt mot anv¨andaren vilket b˚ade kan va-ra en f¨ordel och en nackdel. N¨ar installationsprogrammet tar ¨over s˚a kr¨avs godk¨annande av anv¨andaren vid installationen ¨aven om det bara ¨ar en ny version av applikationen.

5.3.4

Telefonspecifika installationsfiler

HOW Solutions har implementerat denna s¨akerhets˚atg¨arden i sitt nuvaran-de system. Tanken ¨ar att applikationen ska paketeras med telefonspecifika inst¨allningar innan den distribueras till telefonen. Om applikationen k¨ors p˚a en annan telefon ¨an applikationen var byggd f¨or s˚a ska applikationen varna och sluta fungera. Det finns inte n˚agon f¨ardig l¨osning likt l¨osningen i J2ME. I J2ME var det m¨ojligt att ha en separat fil kallad Java Application Descriptor (JAD) d¨ar inst¨allningar f¨or programfilen kunde genereras innan applikationen distribuerades.

I ett tidigare stycke presenterades hur paketeringen f¨or Android g˚ar till se sektion 3.1.5. Det ¨ar fullt m¨ojligt att bygga en l¨osning med liknade resultat som i den befintliga l¨osningen. De telefonspecifika inst¨allningarna m˚aste dock l¨aggas in i sj¨alva installationspaketet vilket g¨or att det f¨or¨ andra-de paketet m˚aste signeras. Signeringen kr¨aver att den privata nyckeln samt l¨osenordet m˚aste vara tillg¨angligt f¨or distributionsservern vilket minskar s¨akerheten runt nyckelhanteringen. Detta ¨ar en mycket stor risk och en annan l¨osning vore att f¨oredra.

(49)

38 5.3. Distribution

5.3.5

Initialinstallation fr˚

an en centralpunkt

Kravet ¨ar v¨aldigt beroende p˚a befintlig infrastruktur i organisationen. Tv˚a olika kommunikationsv¨agarna var relevanta och dessa var e-post och SMS. Den mest tillg¨angliga tekniken ¨ar SMS d˚a varje enhet m˚aste vara upp-kopplad mot mobiln¨atet och d¨ar igenom st¨odjer enheten SMS automatiskt. D¨aremot m˚aste inte varje enhet ha ett epostkonto inkopplat. SMS har ock-s˚a f¨ordel av att vara krypterad[51] per automatik till skillnad fr˚an epost. Nackdelen med SMS ¨ar att varje SMS har en kostnad knuten till sig till skillnad fr˚an epost. Oavsett teknik f¨oresl˚ar vi att distributionen sker via utskick av en nedladdningsl¨ank. Det medf¨or mindre exponering av instal-lationsfilen.

5.3.6

akerhetsaspekter p˚

a designf¨

orslag

Automatiska uppdateringar ¨oppnar f¨or nya attacker genom att byta ut uppdateringen mot skadlig kod. D¨arf¨or ¨ar det l¨ampligt att verifiera signatu-rerna. Signaturen kan verifieras p˚a servern. En kontroll av den nedladdade uppdateringens signatur innan apkn l¨amnas ¨over till installationsprogram-met b¨or ocks˚a utf¨oras. ¨Aven om Android skulle skilja p˚a den installera-de applikationen och en utbytt applikation via installera-deras signaturer s˚a skulle Android inte kunna uppt¨acka att det ¨ar skadlig kod. Applikationen skulle d˚a installeras som en ny applikation ist¨allet f¨or att ers¨atta den gamla.

(50)

Kapitel 6

Diskussion

I detta kapitel diskuteras resultatet i f¨oreg˚aende kapitel och f¨orslag p˚a vi-dare studier ges.

6.1

Diskussion av resultatet

Det st¨orsta s¨akerhetshotet mot f¨oretagsapplikationer p˚a Android ¨ar att en-heten p˚a n˚agot s¨att rootas. I en rootad telefon har anv¨andaren tillg˚ang till root-anv¨andaren som har fullst¨andiga systemr¨attigheter. Det ¨ar inte sj¨alva rootningen i sig som hotar applikationen utan bristen p˚a begr¨ansningar f¨or rootkontot som m¨ojligg¨or applikationer att utf¨ora annars otill˚atna aktivite-ter. F¨oretagetapplikationer b¨or ej lita p˚a operativsystemet och sin privata data om 3:e parts applikationer kan f˚a tillg˚ang till rootr¨attigheter. Det ¨ar ytterst sv˚art att s¨akerst¨alla integriteten eller konfidentialiteten i det fallet. Google har i de senare versionerna av Android ¨oppnat f¨or funktionali-tet som inte varit tillg¨angligt tidigare men som har varit m¨ojligt med en rootad telefon. Ett exempel p˚a detta ¨ar att lagra och k¨ora applikationer fr˚an minneskortet. Det kan dock diskuteras om detta har att g¨ora med att Google vill minska anledningarna f¨or att roota telefonen eller om de helt enkelt ger anv¨andarna vad de vill ha. Oavsett motiv ¨ar detta en positiv utveckling och det ¨ar viktigt att minska incitamentet f¨or rootning.

(51)

40 6.1. Diskussion av resultatet

Ett stort problem ¨ar att m˚anga av de telefoner som finns p˚a marknaden fortfarande k¨or p˚a gamla versioner av Android och d¨armed fortfarande kan ha kvar allvarliga s¨akerhetsh˚al. Det ˚aligger telefontillverkaren att sl¨appa de nya versionerna till deras telefoner. Att dessa uppdateringar ¨aven kommer ut till gamla telefoner ¨ar mycket viktigt och en f¨orb¨attring av detta ¨ar v¨alkommet.

Kryptering i Android, speciellt med avseende p˚a databasen, ¨ar omst¨ an-digt.H¨ar finns det m¨ojlighet att f¨orenkla och hj¨alpa utvecklarna att lyckas med implementationen. Genom att implementera denna funktionalitet i API:et ¨okar kan utvecklare f˚a b¨attre st¨od. Ett s¨akerhetsl¨age f¨or applikatio-ner likt m¨ojligheten att lagra applikationen p˚a minneskortet men d˚a ist¨allet lagra p˚a en krypterad partition ¨ar ocks˚a en intressant l¨osning.

Utvecklaren f˚ar ett bra st¨od fr˚an operativsystemet. Androids sandbox-ning ¨ar genomarbetad och stark. S¨akerhetskedjan som bildas genom m˚anga olika lager g¨or att s¨akerheten ¨ar h¨og. Kravet p˚a signering av applikationer anv¨ands f¨or att starkt knyta ihop utvecklaren och applikationen. Varje applikation k¨ors som en egen anv¨andare med f¨oljden att linuxk¨arnans mul-tianv¨andarst¨od skyddar filsystem, processer och sessionsdata. Sista delen i kedjan ¨ar systemets nya funktionalitet f¨or att kommunicera med “content providers” och liknade. Kedjan avlastar utvecklaren men ansvar ligger fort-farande kvar hos utvecklaren som har m¨ojlighet att bryta sandboxningen. Utvecklarnas ansvar ¨ar, som s˚a ofta i s¨akerhetsarbete, att undvika slarv. Att bygga mjukvara ¨ar sv˚art och kan STRIDE anv¨andas som metod f¨or att minska slarvet och systematisera s¨akerhetsarbetet. ¨Aven om diskussionsfr˚ a-gorna inte var specifika f¨or Android var detta ett bra hj¨alpmedel.

Distribution av applikationen till enheterna fungerar tillfredsst¨allande f¨or f¨oretagsapplikationer. Androids l¨osning var ¨oppen och flexibel och m¨ oj-ligt att bygga egna l¨osningar med integration mot befintlig infrastruktur ¨

ar antagligen m¨ojlig i de flesta fall. Applikationens signatur ¨ar det viktiga f¨or operativsystemet. D¨arf¨or ¨ar det v¨aldigt viktigt att skydda den privata nyckel och d¨arf¨or b¨or den privata nyckeln inte vara lagrad p˚a media som ¨

(52)

Diskussion 41

6.2

Vidare studier

Under arbetets g˚ang har s¨akerhetsproblem identifierats genom att studera litteraturen samt utf¨orande av s¨akerhetsmetoder under kravframst¨allning och design.. Ett intressant omr˚ade f¨or vidare studier ¨ar att ist¨allet un-ders¨oka s¨akerheten i en redan utvecklad applikation genom att till exempel anv¨anda sig av penetrationstestning. En studie som syftar till att unders¨oka vilka s¨akerhetsmetoder som kan anv¨andas vid utveckling av mobilapplika-tioner hade ocks˚a varit intressant. Den litteratur som finns att tillg˚a vid skrivandets stund ¨ar tunn och d¨arf¨or vore det intressant med fler artiklar ang˚aende ¨amnet.

Det hade ocks˚a varit intressant med en mer omfattande j¨amf¨orelse mel-lan de tre stora mobilplattformarna: Android, iOS och Windows Phone 7 med avseende p˚a s¨akerheten. En unders¨okning med fokus p˚a distribution av applikationer och program hade ocks˚a varit intressant.

(53)

Litteraturf¨

orteckning

[1] P1-Morgon. Mobil os¨akerhet. http://sverigesradio.se/sida/ artikel.aspx?programid=1650&artikel=4343964, februari 2011. H¨amtad 2011-03-05 09:00.

[2] SONIA KOLESNIKOV-JESSOP. Hackers go after the

smartp-hone. http://www.nytimes.com/2011/02/14/technology/

14iht-srprivacy14.html?_r=1&scp=4&sq=smartphones&st=cse, februari 2011. H¨amtad 2011-05-03 09:00.

[3] Software Security: Building security in. Addison-Wesley, 2006.

[4] Chris McDermott, John & Fox. Using abuse case models for security requirements analysis. In Proceedings of the 15th Annual Computer Security Applications Conference, pages 55–66. ACSAC, IEEE Com-puter Society, 1999.

[5] Andreas L Sindre, Guttorm & Opdahl. Capturing security require-ments through misuse cases. Norsk informatikkonferanse, 2001. [6] Andreas L Sindre, Guttorm & Opdahl. Eliciting security requirements

with misuse cases. Requirements Engineering, 10(1):34–44, January 2004.

[7] Writing effective use cases. Addison-Wesley, 2001.

[8] Nancy R Mead. Security quality requirements engineering (square) methodology. In ACM SIGSOFT Software Engineering Notes.

References

Related documents

användargränssnittet (som nämns i Kapitel 1.4 – Konkreta och verifierbara mål) är att 1) även om gränssnittet är byggt specifikt för BadEngine-backenden ska det gå att enkelt

Detta skulle betyda att vi även lägger till ett fält när användaren registrerar ett konto där denne väljer i en lista från vilket språk applikationen ska vara på, samt med

Android compares the information in an Intent object with the intent filter exposed by every application and finds the activity most appropriate to handle the data or action

It is normal and recommended Android practice to create your user interface in XML using the layout file created under res/layout , but it is certainly possible to write all the

Following example shows you how to define a simple Android custom component and then how to instantiate it inside activity code without using layout file.. 1 You

Make the Call Once you have your intent, you need to pass it to Android and get the child activity to launch.. You have

Dalvik [uses a] 16-bit instruction set that works directly on local variables. The local variable is commonly picked by a 4- bit 'virtual

NOTE: Java version 7 introduces a catch clause improvement known as final rethrow, which lets you declare a catch clause parameter final in order to throw only those checked exception