1 00:00:00,000 --> 00:00:02,610 >> [Seminar] [Defending Bag Device: Mobile Application Security] 2 00:00:02,610 --> 00:00:04,380 [Chris Wysopal] [Harvard University] 3 00:00:04,380 --> 00:00:07,830 [Dette er CS50.] [CS50.TV] 4 00:00:07,830 --> 00:00:10,360 >> God eftermiddag. Mit navn er Chris Wysopal. 5 00:00:10,360 --> 00:00:13,360 Jeg er CTO og medstifter af Veracode. 6 00:00:13,360 --> 00:00:15,880 Veracode er et program vagtselskab. 7 00:00:15,880 --> 00:00:18,230 Vi tester alle mulige forskellige applikationer, 8 00:00:18,230 --> 00:00:25,060 og hvad jeg har tænkt mig at tale om i dag, er mobil anvendelse sikkerhed. 9 00:00:25,060 --> 00:00:28,630 Min baggrund er jeg har gjort sikkerhedsforskning 10 00:00:28,630 --> 00:00:31,970 for en meget lang tid, sandsynligvis omkring så længe nogen. 11 00:00:31,970 --> 00:00:35,000 Jeg startede i midten af ​​90'erne, 12 00:00:35,000 --> 00:00:37,370 og det var en tid, der var temmelig interessant, fordi 13 00:00:37,370 --> 00:00:39,220 vi havde et paradigmeskift i midten af ​​90'erne. 14 00:00:39,220 --> 00:00:43,520 Pludselig alles computer blev hooked op til internettet, 15 00:00:43,520 --> 00:00:46,550 og derefter havde vi begyndelsen af ​​web-applikationer, 16 00:00:46,550 --> 00:00:49,330 og det er hvad jeg fokuserer på en masse derefter. 17 00:00:49,330 --> 00:00:51,160 Det er interessant. 18 00:00:51,160 --> 00:00:53,930 Nu har vi en anden paradigmeskift sker med computing, 19 00:00:53,930 --> 00:00:58,710 der er skiftet til mobile applikationer. 20 00:00:58,710 --> 00:01:03,680 >> Jeg føler, det er lidt af en lignende tid, så det var i slutningen af ​​90'erne 21 00:01:03,680 --> 00:01:07,650 når vi undersøger web-applikationer og finde fejl som 22 00:01:07,650 --> 00:01:11,800 session management fejl og SQL injection 23 00:01:11,800 --> 00:01:14,940 som virkelig ikke eksisterede før, og pludselig var de overalt 24 00:01:14,940 --> 00:01:19,360 i web-applikationer, og nu en masse af den tid, jeg tilbringer 25 00:01:19,360 --> 00:01:27,950 ser på mobile applikationer og ser på, hvad der foregår derude i naturen. 26 00:01:27,950 --> 00:01:32,060 Mobile applikationer er virkelig kommer til at være den dominerende computing-platform, 27 00:01:32,060 --> 00:01:35,060 så vi har virkelig brug for at bruge en masse tid, hvis du er i sikkerhed industrien 28 00:01:35,060 --> 00:01:39,280 med fokus på web-applikationer. 29 00:01:39,280 --> 00:01:43,420 Der var 29 mia mobile apps hentet i 2011. 30 00:01:43,420 --> 00:01:47,920 Det er forudsagt til at være 76 mia apps i 2014. 31 00:01:47,920 --> 00:01:54,040 Der er 686 millioner enheder, der vil blive købt i år, 32 00:01:54,040 --> 00:01:57,060 så dette er, hvor folk kommer til at gøre 33 00:01:57,060 --> 00:01:59,600  størstedelen af ​​deres klient computing går fremad. 34 00:01:59,600 --> 00:02:04,220 >> Jeg talte med en vicedirektør hos Fidelity Investments 35 00:02:04,220 --> 00:02:08,780 et par måneder siden, og han sagde, at de så bare mere trafik 36 00:02:08,780 --> 00:02:12,610 gøre finansielle transaktioner fra deres kundegrundlag 37 00:02:12,610 --> 00:02:16,230 på deres mobil applikation end på deres hjemmeside, 38 00:02:16,230 --> 00:02:20,610 så en fælles brug for internettet i fortiden har været 39 00:02:20,610 --> 00:02:23,800 kontrollere dine aktiekurser, styre din portefølje, 40 00:02:23,800 --> 00:02:28,060 og vi faktisk se, at i 2012 skifte over 41 00:02:28,060 --> 00:02:30,960 at være mere dominerende på den mobile platform. 42 00:02:30,960 --> 00:02:34,530 Bestemt, hvis der kommer til at være nogen kriminel aktivitet, 43 00:02:34,530 --> 00:02:38,900 ondsindet aktivitet, går det til at begynde at være fokuseret på den mobile platform 44 00:02:38,900 --> 00:02:44,210 over tid, da folk skifte over til det. 45 00:02:44,210 --> 00:02:48,320 Hvis man ser på den mobile platform, 46 00:02:48,320 --> 00:02:54,380 til at se på de risici af platformen er det nyttigt at bryde det ned i de forskellige lag, 47 00:02:54,380 --> 00:02:59,010 ligesom du ville gøre det på en stationær computer, 48 00:02:59,010 --> 00:03:02,860 og du synes om de forskellige lag, software, operativsystem, 49 00:03:02,860 --> 00:03:07,730 netværksdel, hardware lag, og selvfølgelig er der sårbarheder på alle disse lag. 50 00:03:07,730 --> 00:03:10,510 >> Det samme sker på mobilen. 51 00:03:10,510 --> 00:03:14,880 Men mobil, ser det ud til, at nogle af disse lag er værre. 52 00:03:14,880 --> 00:03:19,840 For én, netværkslaget er mere problematisk på mobil 53 00:03:19,840 --> 00:03:25,650 fordi en masse mennesker har i deres kontor eller derhjemme 54 00:03:25,650 --> 00:03:30,780 kablede forbindelser, eller de har sikre Wi-Fi-forbindelser, 55 00:03:30,780 --> 00:03:36,530 og med en masse af mobile enheder, du er tydeligvis uden for hjemmet 56 00:03:36,530 --> 00:03:40,520 eller uden for kontoret en masse, og hvis du bruger Wi-Fi der 57 00:03:40,520 --> 00:03:42,820 du bruger måske en usikker Wi-Fi-forbindelse, 58 00:03:42,820 --> 00:03:45,570 noget, der er et offentligt Wi-Fi-forbindelse, 59 00:03:45,570 --> 00:03:48,840 så når vi tænker på mobile apps, vi er nødt til at tage hensyn til 60 00:03:48,840 --> 00:03:53,770 at netværket miljø er mere risikofyldte for de anvendelser 61 00:03:53,770 --> 00:03:57,640 når Wi-Fi bliver brugt. 62 00:03:57,640 --> 00:04:02,410 Og når jeg kommer ind i flere af de mobile applikationsudviklere risici 63 00:04:02,410 --> 00:04:04,910 du vil se, hvorfor det er mere vigtigt. 64 00:04:04,910 --> 00:04:09,710 Der er risici på hardware-niveau på mobile enheder. 65 00:04:09,710 --> 00:04:11,670 Dette er et område af igangværende forskning. 66 00:04:11,670 --> 00:04:15,910 Folk kalder disse bredbånd angreb eller baseband-angreb 67 00:04:15,910 --> 00:04:21,870 hvor du angribe firmware, der lytter på radioen. 68 00:04:21,870 --> 00:04:25,430 >> Det er virkelig skræmmende angreb, fordi 69 00:04:25,430 --> 00:04:27,280 brugeren behøver ikke at gøre noget. 70 00:04:27,280 --> 00:04:30,760 Du kan ramme masser af enheder inden for RF-dækningsområde 71 00:04:30,760 --> 00:04:36,690 på én gang, og det ser ud som, når denne forskning bobler op 72 00:04:36,690 --> 00:04:40,750 det hurtigt bliver klassificeret hvor 73 00:04:40,750 --> 00:04:46,600 folk razzia i rundt og sige: "Her, fortæl os om det, og du stoppe med at tale om det." 74 00:04:46,600 --> 00:04:49,460 Der er nogle forskning foregår på bredbåndsområdet, 75 00:04:49,460 --> 00:04:51,980 men det synes at være meget tys tys. 76 00:04:51,980 --> 00:04:56,910 Jeg synes det er mere af en nationalstat type forskning, der foregår. 77 00:04:56,910 --> 00:05:02,140 Et område af aktiv forskning, selv om, er operativsystemet lag, 78 00:05:02,140 --> 00:05:08,910 og igen, dette er anderledes end i desktopteknologien verden 79 00:05:08,910 --> 00:05:14,840 fordi i det mobile rum du har disse hold af mennesker kaldet jailbreakers, 80 00:05:14,840 --> 00:05:18,670 og jailbreakers er anderledes end almindelige sårbarhed forskere. 81 00:05:18,670 --> 00:05:21,970 De prøver at finde sårbarheder i operativsystemet, 82 00:05:21,970 --> 00:05:27,000 men grunden til at de prøver at finde sårbarhederne er ikke at 83 00:05:27,000 --> 00:05:31,810 bryde ind i en andens maskine og kompromittere den. 84 00:05:31,810 --> 00:05:34,280 Det er at bryde ind i deres egen computer. 85 00:05:34,280 --> 00:05:38,820 >> De ønsker at bryde ind i deres egen mobil, ændre deres egen mobil operativsystem 86 00:05:38,820 --> 00:05:41,050 så de kan køre applikationer i deres valg 87 00:05:41,050 --> 00:05:44,510 og ændre tingene med fuld administratorrettigheder, 88 00:05:44,510 --> 00:05:49,050 og de ønsker ikke at fortælle sælgeren om dette. 89 00:05:49,050 --> 00:05:52,960 De er ikke som en sikkerhedsekspert, der er en hvid hat sikkerhed forsker 90 00:05:52,960 --> 00:05:56,600 som kommer til at gøre ansvarlig afsløring og fortælle sælgeren om det. 91 00:05:56,600 --> 00:06:01,270 De ønsker at gøre denne forskning, og de ønsker at rent faktisk udgive det 92 00:06:01,270 --> 00:06:06,400 i en udnytte eller et rootkit eller en jailbreak kode, 93 00:06:06,400 --> 00:06:10,010 og de ønsker at gøre det strategisk, ligesom lige efter 94 00:06:10,010 --> 00:06:13,570 de sælger skibe nye operativsystem. 95 00:06:13,570 --> 00:06:16,350 Du har denne modsætningsforhold 96 00:06:16,350 --> 00:06:19,000 med OS-niveau sårbarheder på mobile, 97 00:06:19,000 --> 00:06:23,150 som jeg synes er ganske interessant, og ét sted, vi ser det 98 00:06:23,150 --> 00:06:29,210 Det gør det så, at der er god offentliggjort exploit-kode derude 99 00:06:29,210 --> 00:06:31,750 for kernel-niveau sårbarheder, 100 00:06:31,750 --> 00:06:35,040 og vi har set dem, der faktisk bruges af malware-forfattere. 101 00:06:35,040 --> 00:06:38,450 Det er en lille smule anderledes end pc-verdenen. 102 00:06:38,450 --> 00:06:42,530 Og derefter sidste lag er det øverste lag, applikationslaget. 103 00:06:42,530 --> 00:06:45,250 Det er hvad jeg har tænkt mig at tale om i dag. 104 00:06:45,250 --> 00:06:48,970 >> De andre lag findes, og de andre lag spiller ind i det, 105 00:06:48,970 --> 00:06:53,310 men jeg for det meste kommer til at snakke om, hvad der foregår i applikationslaget 106 00:06:53,310 --> 00:06:55,560 hvor koden kører i sandkassen. 107 00:06:55,560 --> 00:06:58,670 Det har ikke administratorrettigheder. 108 00:06:58,670 --> 00:07:02,170 Det at anvende API af anordningen, 109 00:07:02,170 --> 00:07:06,970 men alligevel kan en masse ondsindet aktivitet og en masse risiko sker på dette lag 110 00:07:06,970 --> 00:07:09,220 fordi det er det lag, hvor alle oplysninger er. 111 00:07:09,220 --> 00:07:12,330 Apps kan få adgang til alle oplysninger om enheden 112 00:07:12,330 --> 00:07:15,390 hvis de har de rette tilladelser, 113 00:07:15,390 --> 00:07:17,540 og de kan få adgang til de forskellige sensorer på enheden, 114 00:07:17,540 --> 00:07:23,950 GPS-sensor, mikrofon, kamera, hvad har du. 115 00:07:23,950 --> 00:07:27,380 Selvom vi kun taler om i applikationslaget 116 00:07:27,380 --> 00:07:33,700 vi har en masse risiko der. 117 00:07:33,700 --> 00:07:38,450 Den anden ting, der er anderledes ved det mobile miljø 118 00:07:38,450 --> 00:07:45,060 er alle operativsystemet spillere, det være sig BlackBerry eller Android 119 00:07:45,060 --> 00:07:53,410 eller iOS eller Windows mobile, de alle har en finkornet tilladelse model, 120 00:07:53,410 --> 00:07:56,990 og dette er en af ​​de måder, som de er indbygget i operativsystemet 121 00:07:56,990 --> 00:08:01,230 tanken om, at det ikke er så risikabelt, som du tror. 122 00:08:01,230 --> 00:08:04,550 Selvom du har alle dine kontakter på der, alle dine personlige oplysninger, 123 00:08:04,550 --> 00:08:09,080 du har dine billeder, du har din placering på der, 124 00:08:09,080 --> 00:08:14,820 du opbevare din bank pin for auto login på der, er det sikkert, fordi 125 00:08:14,820 --> 00:08:19,430 apps er nødt til at have visse tilladelser til at få ram på visse dele 126 00:08:19,430 --> 00:08:25,080 af oplysningerne på enheden, og brugeren har til at blive præsenteret for 127 00:08:25,080 --> 00:08:29,230 disse tilladelser og sige okay. 128 00:08:29,230 --> 00:08:32,590 >> Problemet med det er brugerens siger altid okay. 129 00:08:32,590 --> 00:08:35,240 Som en sikkerhed person, jeg ved, du kan bede brugeren, 130 00:08:35,240 --> 00:08:40,100 sige noget virkelig slemt kommer til at ske, vil du have det til at ske? 131 00:08:40,100 --> 00:08:44,680 Og hvis de er i et kapløb, eller der er noget virkelig lokkende på den anden side af det, 132 00:08:44,680 --> 00:08:47,760 ligesom et spil vil blive installeret, at de har ventet på, 133 00:08:47,760 --> 00:08:50,860 de kommer til at klikke okay. 134 00:08:50,860 --> 00:08:56,630 Det er derfor, jeg siger på min slide her bare lad mig slynge fugle på svin, som allerede, 135 00:08:56,630 --> 00:09:03,150 og du kan se på diaset her er der eksempler på en BlackBerry tilladelse kassen. 136 00:09:03,150 --> 00:09:05,990 Det siger "Indtast venligst ansøgning tilladelser BlackBerry rejse 137 00:09:05,990 --> 00:09:09,720 efter at have klikket på knappen nedenfor ", og dybest set brugeren er bare at sige 138 00:09:09,720 --> 00:09:12,240 indstille tilladelser og gemme. 139 00:09:12,240 --> 00:09:18,010 Her er en Android prompt, hvor det viser tingene, 140 00:09:18,010 --> 00:09:20,260 og det faktisk sætter noget, der næsten ligner en advarsel. 141 00:09:20,260 --> 00:09:25,090 Det har fået en slags udbytte skilt der siger netværkskommunikation, telefonopkald 142 00:09:25,090 --> 00:09:28,120 men brugeren vil klikke installere, right? 143 00:09:28,120 --> 00:09:32,940 Og så Apple ene er helt uskadeligt. 144 00:09:32,940 --> 00:09:34,300 Det giver ikke nogen form for advarsel. 145 00:09:34,300 --> 00:09:37,380 Det er bare Apple gerne vil bruge din aktuelle placering. 146 00:09:37,380 --> 00:09:39,670 Selvfølgelig du kommer til at klikke okay. 147 00:09:39,670 --> 00:09:42,260 >> Der er denne finkornet tilladelse model, 148 00:09:42,260 --> 00:09:45,890 og apps er nødt til at have en manifest-fil, hvor de erklærer 149 00:09:45,890 --> 00:09:49,410 de tilladelser, de har brug for, og som vil blive vist for brugeren, 150 00:09:49,410 --> 00:09:53,480 og brugeren bliver nødt til at sige, at jeg give disse tilladelser. 151 00:09:53,480 --> 00:09:55,080 Men lad os være ærlige. 152 00:09:55,080 --> 00:09:58,400 Brugerne er bare altid at sige okay. 153 00:09:58,400 --> 00:10:04,460 Lad os tage et hurtigt kig på de tilladelser, disse apps beder om 154 00:10:04,460 --> 00:10:06,850 og nogle af de tilladelser, der er der. 155 00:10:06,850 --> 00:10:09,950 Dette selskab Praetorian lavede en undersøgelse sidste år 156 00:10:09,950 --> 00:10:14,170 53.000 ansøgninger analyseret i Android Market og 3. parts markeder, 157 00:10:14,170 --> 00:10:16,770 så det er alt Android. 158 00:10:16,770 --> 00:10:19,670 Og den gennemsnitlige app anmodet 3 tilladelser. 159 00:10:19,670 --> 00:10:23,370 Nogle apps anmodede 117 tilladelser, 160 00:10:23,370 --> 00:10:27,480 så selvfølgelig disse er meget finkornet og alt for kompliceret for en bruger at forstå 161 00:10:27,480 --> 00:10:31,600 hvis de er præsenteret med denne app, der har brug for disse 117 tilladelser. 162 00:10:31,600 --> 00:10:37,270 Det er ligesom den slutbrugerlicensaftale, der er 45 sider lang. 163 00:10:37,270 --> 00:10:40,240 Måske snart de vil have en løsning, hvor det er ligesom 164 00:10:40,240 --> 00:10:43,100 udskrive tilladelser, og send mig en mail. 165 00:10:43,100 --> 00:10:45,480 >> Men hvis man ser på nogle af de øverste interessante tilladelser 166 00:10:45,480 --> 00:10:50,840 24% af de apps, de hentet ud af 53.000 167 00:10:50,840 --> 00:10:57,230 ønskede GPS-oplysninger fra enheden. 168 00:10:57,230 --> 00:10:59,810 8% læser kontakterne. 169 00:10:59,810 --> 00:11:03,770 4% sendt SMS, og 3% har modtaget SMS. 170 00:11:03,770 --> 00:11:07,730 2% optaget lyd. 171 00:11:07,730 --> 00:11:11,210 1% behandlet udgående opkald. 172 00:11:11,210 --> 00:11:13,140 Det ved jeg ikke. 173 00:11:13,140 --> 00:11:17,520 Jeg tror ikke 4% af apps i app store virkelig brug for at sende SMS-beskeder, 174 00:11:17,520 --> 00:11:21,410 så jeg tror, ​​det er en antydning af, at noget uheldige der foregår. 175 00:11:21,410 --> 00:11:24,350 8% af de apps brug for at læse din kontaktliste. 176 00:11:24,350 --> 00:11:26,510 Det er nok ikke nødvendigt. 177 00:11:26,510 --> 00:11:30,990 En af de andre interessante ting om tilladelser er 178 00:11:30,990 --> 00:11:36,740 hvis du linker i delte biblioteker i din ansøgning 179 00:11:36,740 --> 00:11:39,780 de arver tilladelserne til programmet, 180 00:11:39,780 --> 00:11:46,570 så hvis din app behov kontaktlisten eller har brug for GPS-position til at fungere 181 00:11:46,570 --> 00:11:49,940 og du linker i en reklame bibliotek, for eksempel, 182 00:11:49,940 --> 00:11:53,170 pågældende annonce bibliotek vil også kunne få adgang til de kontakter, 183 00:11:53,170 --> 00:11:57,630 og også være i stand til at få adgang til GPS-placering, 184 00:11:57,630 --> 00:12:01,990 og udvikleren af ​​app kender intet om den kode, der kører i annoncen biblioteket. 185 00:12:01,990 --> 00:12:05,370 De er bare forbinder det i, fordi de ønsker at tjene penge på deres app. 186 00:12:05,370 --> 00:12:09,820 >> Det er her, og jeg vil tale om nogle eksempler på dette med 187 00:12:09,820 --> 00:12:13,930 et program kaldet Pandora, hvor en ansøgning udvikler 188 00:12:13,930 --> 00:12:18,910 måske uforvarende kan lække oplysninger 189 00:12:18,910 --> 00:12:24,580 fra deres brugere på grund af bibliotekerne, de har knyttet i. 190 00:12:24,580 --> 00:12:30,110 Opmåling landskabet derude, ser på alle de forskellige apps 191 00:12:30,110 --> 00:12:34,310 der er blevet rapporteret i nyhederne som ondsindede eller laver noget brugere ikke ønskede 192 00:12:34,310 --> 00:12:39,360 og derefter inspicere en masse apps-vi gør en masse statisk binær analyse på mobile apps, 193 00:12:39,360 --> 00:12:42,010 så vi har inspiceret dem og kiggede på selve koden- 194 00:12:42,010 --> 00:12:49,640 vi kom op med det, vi kalder vores top 10 liste over risikable adfærd i applikationer. 195 00:12:49,640 --> 00:12:54,180 Og det er opdelt i 2 sektioner, skadelig kode, 196 00:12:54,180 --> 00:12:57,600 så disse er dårlige ting, de apps kan gøre, at 197 00:12:57,600 --> 00:13:06,520 sandsynligvis vil være noget, som en ondsindet person 198 00:13:06,520 --> 00:13:10,060 har specielt lagt i ansøgningen, men det er en lille smule fuzzy. 199 00:13:10,060 --> 00:13:13,300 Det kunne være noget, som en udvikler mener er fint, 200 00:13:13,300 --> 00:13:16,350 men det ender med at blive tænkt på som skadeligt af brugeren. 201 00:13:16,350 --> 00:13:19,830 >> Og så det andet afsnit er, hvad vi kalder kodning sårbarheder, 202 00:13:19,830 --> 00:13:24,600 og disse er ting, hvor bygherren er dybest set lave fejl 203 00:13:24,600 --> 00:13:27,200 eller bare ikke forstår, hvordan man skriver app forsvarligt, 204 00:13:27,200 --> 00:13:30,260  og det er at sætte den app brugeren i fare. 205 00:13:30,260 --> 00:13:34,060 Jeg har tænkt mig at gå gennem disse i detaljer og give nogle eksempler. 206 00:13:34,060 --> 00:13:39,620 For reference, jeg ønskede at sætte op OWASP mobil top 10 liste. 207 00:13:39,620 --> 00:13:43,590 Disse er de 10 spørgsmål, som en gruppe på OWASP, 208 00:13:43,590 --> 00:13:48,900 Open Web Application Security Project, at de har en arbejdsgruppe 209 00:13:48,900 --> 00:13:50,620 arbejder på en mobil top 10 liste. 210 00:13:50,620 --> 00:13:54,600 De har en meget berømt web top 10 liste, som er top 10 211 00:13:54,600 --> 00:13:57,180 farligste ting, du kan have i en webapplikation. 212 00:13:57,180 --> 00:13:59,090 De laver de samme ting til mobil, 213 00:13:59,090 --> 00:14:01,750 og deres liste er lidt anderledes end vores. 214 00:14:01,750 --> 00:14:03,670 6 ud af 10 er de samme. 215 00:14:03,670 --> 00:14:06,020 De har 4, som er forskellige. 216 00:14:06,020 --> 00:14:10,550 Jeg tror, ​​de har en lille smule af en anden tage på 217 00:14:10,550 --> 00:14:14,490 risiko i mobile apps, hvor en masse af deres problemer 218 00:14:14,490 --> 00:14:20,490 virkelig, hvordan programmet er at kommunikere til en back-end server 219 00:14:20,490 --> 00:14:23,100 eller hvad der foregår på back-end server, 220 00:14:23,100 --> 00:14:29,220 ikke så meget apps, der har risikoadfærd, der er bare ligetil klientprogrammer. 221 00:14:29,220 --> 00:14:36,640 >> Dem i rødt her er forskellene mellem de 2 lister. 222 00:14:36,640 --> 00:14:40,740 Og nogle af min forskning team har faktisk bidraget til dette projekt, 223 00:14:40,740 --> 00:14:44,570 så vi vil se, hvad der sker over tid, men jeg tror, ​​at takeaway her er 224 00:14:44,570 --> 00:14:47,550 vi ved ikke rigtig, hvad top 10 listen er i mobile apps, fordi 225 00:14:47,550 --> 00:14:50,510 de har virkelig kun eksisteret i 2 eller 3 år nu, 226 00:14:50,510 --> 00:14:57,750 og der har ikke været tid nok til virkelig at udforske de operativsystemer 227 00:14:57,750 --> 00:15:00,450 og hvad de er i stand til, og der har ikke været tid nok 228 00:15:00,450 --> 00:15:06,870 for det ondsindede samfund, hvis du vil, for at have brugt tid nok 229 00:15:06,870 --> 00:15:12,910 forsøger at angribe brugere via mobile apps, så jeg forventer, at disse lister til at ændre en lille smule. 230 00:15:12,910 --> 00:15:18,720 Men for nu, det er de top 10 ting at bekymre sig om. 231 00:15:18,720 --> 00:15:24,150 Du vil måske undre sig på den mobile side, hvor gør det ondsindede mobil kode- 232 00:15:24,150 --> 00:15:28,880 hvordan ser det komme på enheden? 233 00:15:28,880 --> 00:15:35,210 North Carolina State har et projekt kaldet Mobile Malware Genome Project 234 00:15:35,210 --> 00:15:39,520 hvor de indsamler så meget mobil malware, som de kan og analysere det, 235 00:15:39,520 --> 00:15:45,270 og de har brudt ned injektion vektorer, at den mobile malware bruger, 236 00:15:45,270 --> 00:15:51,490 og 86% bruger en teknik kaldet ompakning, 237 00:15:51,490 --> 00:15:54,160 og det er kun på Android-platformen 238 00:15:54,160 --> 00:15:56,720 kan du virkelig gøre dette ompakning. 239 00:15:56,720 --> 00:16:03,100 >> Årsagen er Android kode er bygget med 240 00:16:03,100 --> 00:16:08,130 en Java byte kode kaldet Dalvik, som er let decompilable. 241 00:16:08,130 --> 00:16:12,460 Hvad den dårlige fyr kan gøre, er 242 00:16:12,460 --> 00:16:16,590 tage en Android-applikation, dekompilere det, 243 00:16:16,590 --> 00:16:20,120 indsætte deres ondsindede kode, rekompilere det, 244 00:16:20,120 --> 00:16:28,070 og derefter sætte den op i App Store, der påstås at være en ny version af denne ansøgning, 245 00:16:28,070 --> 00:16:30,330 eller bare måske ændre navnet på programmet. 246 00:16:30,330 --> 00:16:35,140 Hvis det var en slags spil, ændre navnet en smule, 247 00:16:35,140 --> 00:16:42,860 og så dette ompakningen er hvordan 86% af mobil malware bliver fordelt. 248 00:16:42,860 --> 00:16:45,810 Der er en anden teknik kaldet opdatering, som er 249 00:16:45,810 --> 00:16:50,030 meget lig ompakning, men du faktisk ikke sætte den skadelige kode i. 250 00:16:50,030 --> 00:16:52,870 Hvad du gør er du putter i en lille opdatering mekanisme. 251 00:16:52,870 --> 00:16:56,660 Du dekompilere, du lægger i en opdatering mekanisme, og du rekompilere det, 252 00:16:56,660 --> 00:17:02,360 og derefter, når app kører det trækker ned malware på enheden. 253 00:17:02,360 --> 00:17:06,300 >> Ved langt er de fleste disse 2 teknikker. 254 00:17:06,300 --> 00:17:12,710 Der er egentlig ikke meget downloade drive-bys eller drive-by downloads på mobiltelefoner, 255 00:17:12,710 --> 00:17:15,890 som kunne være som et phishing-angreb. 256 00:17:15,890 --> 00:17:18,200 Hey, så tjek denne virkelig cool hjemmeside, 257 00:17:18,200 --> 00:17:21,020 eller du har brug for at gå til denne hjemmeside og udfylde denne formular 258 00:17:21,020 --> 00:17:24,420 at holde fortsat gøre noget. 259 00:17:24,420 --> 00:17:26,230 De er phishing-angreb. 260 00:17:26,230 --> 00:17:28,160 Det samme kan ske på den mobile platform, hvor de 261 00:17:28,160 --> 00:17:33,830 pege på en mobil app til at hente, siger "Hej, det er Bank of America." 262 00:17:33,830 --> 00:17:36,070 "Vi ser du bruger dette program." 263 00:17:36,070 --> 00:17:38,540 "Du skal hente denne anden anvendelse." 264 00:17:38,540 --> 00:17:41,170 Teoretisk set kunne det fungere. 265 00:17:41,170 --> 00:17:48,610 Måske er det bare ikke bliver brugt nok til at afgøre, om det er en succes eller ej, 266 00:17:48,610 --> 00:17:51,680 men de fandt, at mindre end 1% af den tid, teknik anvendes. 267 00:17:51,680 --> 00:17:56,130 Størstedelen af ​​den tid, det er virkelig et ompakket kode. 268 00:17:56,130 --> 00:17:58,710 >> Der er en anden kategori kaldet standalone 269 00:17:58,710 --> 00:18:01,420 hvor nogen bare bygger en helt ny ansøgning. 270 00:18:01,420 --> 00:18:04,020 De bygger et program, der foregiver at være noget. 271 00:18:04,020 --> 00:18:07,360 Det er ikke en ompakning af noget andet, og det har den skadelige kode. 272 00:18:07,360 --> 00:18:11,230 Der bruges 14% af tiden. 273 00:18:11,230 --> 00:18:17,880 Nu vil jeg tale om, hvad der er den skadelige kode gør? 274 00:18:17,880 --> 00:18:23,070 En af de første malware derude 275 00:18:23,070 --> 00:18:25,490 du kunne overveje en spyware. 276 00:18:25,490 --> 00:18:27,620 Det dybest set spioner på brugeren. 277 00:18:27,620 --> 00:18:30,470 Den indsamler e-mails, SMS-beskeder. 278 00:18:30,470 --> 00:18:32,340 Det tænder mikrofonen. 279 00:18:32,340 --> 00:18:37,330 Det høster kontakt bogen, og det sender den ud til en anden. 280 00:18:37,330 --> 00:18:40,870 Denne form for spyware findes på pc'en, 281 00:18:40,870 --> 00:18:46,200 så det giver god mening for folk at forsøge at gøre dette på mobile enheder. 282 00:18:46,200 --> 00:18:53,230 >> Et af de første eksempler på dette var et program kaldet Secret SMS Replicator. 283 00:18:53,230 --> 00:18:56,250 Det var i Android Marketplace for et par år siden, 284 00:18:56,250 --> 00:18:59,960 og idéen var, hvis du havde adgang til en andens Android-telefon 285 00:18:59,960 --> 00:19:03,450 at man ønskede at udspionere, så måske er det din ægtefælle 286 00:19:03,450 --> 00:19:07,600 eller din betydelige andre, og du ønsker at udspionere deres tekstbeskeder, 287 00:19:07,600 --> 00:19:11,200 du kan downloade denne app og installere det og konfigurere den 288 00:19:11,200 --> 00:19:16,540 at sende en SMS til dig med en kopi 289 00:19:16,540 --> 00:19:21,710 af hver SMS-besked, de fik. 290 00:19:21,710 --> 00:19:27,220 Dette er naturligvis i krænkelser af App Store hensyn til service, 291 00:19:27,220 --> 00:19:32,040 og dette blev fjernet fra Android Marketplace senest 18 timer efter at det er der, 292 00:19:32,040 --> 00:19:36,760 så et meget lille antal mennesker var i fare på grund af dette. 293 00:19:36,760 --> 00:19:42,510 Nu tror jeg, hvis programmet blev kaldt noget måske lidt mindre provokerende 294 00:19:42,510 --> 00:19:48,690 ligesom Secret SMS Replicator det sandsynligvis ville have fungeret meget bedre. 295 00:19:48,690 --> 00:19:52,870 Men det var slags indlysende. 296 00:19:52,870 --> 00:19:58,680 >> En af de ting, vi kan gøre for at afgøre, om apps har denne adfærd, som vi ikke ønsker 297 00:19:58,680 --> 00:20:01,410 er at inspicere koden. 298 00:20:01,410 --> 00:20:06,250 Dette er faktisk virkelig nemt at gøre på Android, fordi vi kan dekompilere apps. 299 00:20:06,250 --> 00:20:11,050 På iOS kan du bruge en disassembler ligesom IDA Pro 300 00:20:11,050 --> 00:20:17,190 at se på, hvad API'er app der ringer, og hvad det gør. 301 00:20:17,190 --> 00:20:20,680 Vi skrev vores egen binær statisk analysator til vores kode 302 00:20:20,680 --> 00:20:24,940 og vi gør det, og så hvad du kan gøre, er du kunne sige 303 00:20:24,940 --> 00:20:30,490 gør enheden gøre noget, der er dybest set udspionerer mig eller sporing mig? 304 00:20:30,490 --> 00:20:33,360 Og jeg har nogle eksempler her på iPhone. 305 00:20:33,360 --> 00:20:41,440 Dette første eksempel er, hvordan adgang til UUID på telefonen. 306 00:20:41,440 --> 00:20:47,060 Dette er faktisk noget, som Apple netop har forbudt for nye ansøgninger, 307 00:20:47,060 --> 00:20:52,540 men gamle programmer, som du måske har kørende på din telefon kan stadig gøre dette, 308 00:20:52,540 --> 00:20:56,500 og så entydig identifikator kan bruges til at spore dig 309 00:20:56,500 --> 00:21:00,440 på tværs af mange forskellige applikationer. 310 00:21:00,440 --> 00:21:07,180 >> På Android, jeg har et eksempel her for at få enhedens placering. 311 00:21:07,180 --> 00:21:10,310 Du kan se, at hvis at API opkald er der for, at app er tracking, 312 00:21:10,310 --> 00:21:15,000 og du kan se, om det bliver fint sted eller grove placering. 313 00:21:15,000 --> 00:21:18,860 Og så på bunden her, jeg har et eksempel på, hvordan på BlackBerry 314 00:21:18,860 --> 00:21:25,130 et program kan få adgang til e-mails i din indbakke. 315 00:21:25,130 --> 00:21:27,660 Det er den slags ting, du kan inspicere at se 316 00:21:27,660 --> 00:21:32,360 hvis den app gør disse ting. 317 00:21:32,360 --> 00:21:38,320 Den anden store kategori af ondsindet adfærd, og det er formentlig den største kategori nu, 318 00:21:38,320 --> 00:21:43,950 er uautoriseret opkald, uautoriseret premium SMS-beskeder 319 00:21:43,950 --> 00:21:46,080 eller uautoriserede betalinger. 320 00:21:46,080 --> 00:21:48,930 En anden ting der er unikt ved telefonen 321 00:21:48,930 --> 00:21:52,700 er, at enheden er tilsluttet til en faktureringskonto, 322 00:21:52,700 --> 00:21:55,960 og når aktiviteterne sker på telefonen 323 00:21:55,960 --> 00:21:58,510 det kan skabe afgifter. 324 00:21:58,510 --> 00:22:00,700 Du kan købe ting over telefonen, 325 00:22:00,700 --> 00:22:04,390 og når du sender en præmie SMS-besked du faktisk give penge 326 00:22:04,390 --> 00:22:11,590 til kontohaver i telefonnummeret på den anden side. 327 00:22:11,590 --> 00:22:17,420 Disse blev sat op for at få aktiekurser eller få din daglige horoskop eller andet 328 00:22:17,420 --> 00:22:21,680 men de kan sættes op til at bestille et produkt ved at sende en SMS. 329 00:22:21,680 --> 00:22:26,970 Folk give penge til Røde Kors ved at sende en SMS-besked. 330 00:22:26,970 --> 00:22:30,650 Du kan give 10 dollar på den måde. 331 00:22:30,650 --> 00:22:34,190 >> Angriberne, hvad de har gjort, er de oprettet 332 00:22:34,190 --> 00:22:38,750 konti i udlandet, og de integrere i malware 333 00:22:38,750 --> 00:22:42,840 at telefonen vil sende en præmie SMS, 334 00:22:42,840 --> 00:22:47,700 sige, et par gange om dagen, og i slutningen af ​​måneden, du indser du har brugt 335 00:22:47,700 --> 00:22:52,090 snesevis eller måske endda hundredvis af dollars, og de går væk med pengene. 336 00:22:52,090 --> 00:22:57,280 Det blev så slemt, at dette var det allerførste, at Android 337 00:22:57,280 --> 00:23:00,760 Marketplace eller Google sted, det var Android Marketplace på det tidspunkt, 338 00:23:00,760 --> 00:23:04,430 og det er nu Google Play-den første ting, at Google begyndte at kontrollere for. 339 00:23:04,430 --> 00:23:08,700 Når Google begyndte at distribuere Android apps i deres app store 340 00:23:08,700 --> 00:23:11,350 de sagde, de ikke kommer til at tjekke for noget. 341 00:23:11,350 --> 00:23:15,630 Vi vil trække apps, når vi er blevet meddelt, at de har brudt vores betingelser for service, 342 00:23:15,630 --> 00:23:17,520 men vi kommer ikke til at tjekke for noget. 343 00:23:17,520 --> 00:23:24,350 Nå, omkring et år siden fik det så dårligt med denne præmie SMS malware 344 00:23:24,350 --> 00:23:28,030 at dette er den allerførste ting, de begyndte at kontrollere for. 345 00:23:28,030 --> 00:23:31,770 Hvis en app kan sende SMS-beskeder 346 00:23:31,770 --> 00:23:34,750 de videre manuelt undersøge ansøgningen. 347 00:23:34,750 --> 00:23:38,770 De ser for de API'er, der kalder denne, 348 00:23:38,770 --> 00:23:40,580 og nu siden da Google har udvidet, 349 00:23:40,580 --> 00:23:46,900 men dette var den første ting, at de begyndte at lede efter. 350 00:23:46,900 --> 00:23:50,690 >> Nogle andre apps, der gjorde nogle SMS-beskeder, 351 00:23:50,690 --> 00:23:56,980 denne Android Qicsomos, tror jeg det hedder. 352 00:23:56,980 --> 00:24:02,670 Der var denne aktuelle begivenhed på mobilen, hvor denne CarrierIQ kom ud 353 00:24:02,670 --> 00:24:07,720 som spyware sat på enheden ved de luftfartsselskaber, 354 00:24:07,720 --> 00:24:10,820 så folk ville vide, om deres telefon var sårbare over for denne, 355 00:24:10,820 --> 00:24:13,890 og dette var en gratis app, der testede det. 356 00:24:13,890 --> 00:24:17,520 Nå, selvfølgelig, hvad denne app gjorde, var det sendt premium SMS-beskeder, 357 00:24:17,520 --> 00:24:20,090 så ved at teste for at se, hvis du er inficeret med spyware 358 00:24:20,090 --> 00:24:24,930 du har lagt malware på din enhed. 359 00:24:24,930 --> 00:24:27,310 Vi så det samme ske i sidste Super Bowl. 360 00:24:27,310 --> 00:24:33,180 Der var en falsk version af Madden fodboldkamp 361 00:24:33,180 --> 00:24:38,320 der sendte premium SMS-beskeder. 362 00:24:38,320 --> 00:24:45,750 Det faktisk forsøgt at skabe en bot-netværk også på enheden. 363 00:24:45,750 --> 00:24:48,090 Her har jeg nogle eksempler. 364 00:24:48,090 --> 00:24:52,640 Interessant nok, var Apple temmelig smart, 365 00:24:52,640 --> 00:24:58,470 og de tillader ikke programmer til at sende SMS-beskeder på alle. 366 00:24:58,470 --> 00:25:00,350 Ingen app kan gøre det. 367 00:25:00,350 --> 00:25:03,530 Det er en fantastisk måde at slippe af med en hel klasse af sårbarhed, 368 00:25:03,530 --> 00:25:09,040 men på Android kan du gøre det, og selvfølgelig på BlackBerry kan du gøre det også. 369 00:25:09,040 --> 00:25:13,060 Det er interessant, at på BlackBerry alt du behøver, er tilladelser internet 370 00:25:13,060 --> 00:25:18,370 at sende en SMS-besked. 371 00:25:18,370 --> 00:25:21,580 >> Den anden ting virkelig, at vi kigger efter 372 00:25:21,580 --> 00:25:24,780 når vi søger at se, om noget er skadeligt, er bare nogen form for 373 00:25:24,780 --> 00:25:28,100 uautoriseret netværksaktivitet, ligesom se på netværksaktivitet 374 00:25:28,100 --> 00:25:31,570 app formodes at have sin funktionalitet, 375 00:25:31,570 --> 00:25:35,380 og se på denne anden netværksaktivitet. 376 00:25:35,380 --> 00:25:43,380 Måske en app, til at arbejde, har for at få data over HTTP, 377 00:25:43,380 --> 00:25:47,500 men hvis det er at gøre ting via e-mail eller sms eller Bluetooth eller noget lignende 378 00:25:47,500 --> 00:25:52,890 nu, at app potentielt kunne være skadelig, så det er en anden ting du kan inspicere for. 379 00:25:52,890 --> 00:26:00,430 Og på dette dias her har jeg nogle eksempler på det. 380 00:26:00,430 --> 00:26:05,950 En anden interessant ting, vi oplevede med malware skete tilbage i 2009, 381 00:26:05,950 --> 00:26:07,600 og det skete i en stor måde. 382 00:26:07,600 --> 00:26:11,390 Jeg ved ikke, om det er sket så meget siden da, men det var en app 383 00:26:11,390 --> 00:26:15,140 der efterlignede et andet program. 384 00:26:15,140 --> 00:26:21,700 Der var et sæt af apps, og det blev døbt 09Droid angreb, 385 00:26:21,700 --> 00:26:29,770 og nogen har besluttet, at der var en masse små, regionale og mellemstore banker 386 00:26:29,770 --> 00:26:32,260 der ikke har netbank-applikationer, 387 00:26:32,260 --> 00:26:36,870 så hvad de gjorde, var de bygget omkring 50 online banking 388 00:26:36,870 --> 00:26:39,410 at alle de gjorde var at tage brugernavn og password 389 00:26:39,410 --> 00:26:42,190 og omdirigere dig til hjemmesiden. 390 00:26:42,190 --> 00:26:47,470 Og så de sætte disse alle op i Google Marketplace, 391 00:26:47,470 --> 00:26:51,530 i Android Marketplace, og når nogen søgte at se, om deres bank 392 00:26:51,530 --> 00:26:56,000 havde et program, de ville finde den falske ansøgning, 393 00:26:56,000 --> 00:27:01,230 som har indsamlet deres legitimationsoplysninger og derefter omdirigeret dem til deres hjemmeside. 394 00:27:01,230 --> 00:27:06,640 Den måde, at dette rent faktisk blev-apps var deroppe for et par uger, 395 00:27:06,640 --> 00:27:09,050 og der var tusinder og atter tusinder af downloads. 396 00:27:09,050 --> 00:27:12,910 >> Den måde dette kom frem i lyset var en person havde et problem 397 00:27:12,910 --> 00:27:15,740 med et af programmerne, og de kaldte deres bank, 398 00:27:15,740 --> 00:27:18,390 og de kaldte deres banks kundesupport linje og sagde, 399 00:27:18,390 --> 00:27:21,180 "Jeg har et problem med din mobilbank applikation." 400 00:27:21,180 --> 00:27:23,460 "Kan du hjælpe mig?" 401 00:27:23,460 --> 00:27:26,540 Og de sagde: "Vi har ikke en mobilbank applikation." 402 00:27:26,540 --> 00:27:28,120 Det startede undersøgelsen. 403 00:27:28,120 --> 00:27:31,200 At banken hedder Google, og så Google kiggede og sagde, 404 00:27:31,200 --> 00:27:37,220 "Wow, har samme forfatter skrevet 50 bank applikationer," og tog dem alle ned. 405 00:27:37,220 --> 00:27:43,410 Men helt sikkert det kunne ske igen. 406 00:27:43,410 --> 00:27:51,790 Der er en liste over alle de forskellige banker her 407 00:27:51,790 --> 00:27:55,870 der var en del af denne fidus. 408 00:27:55,870 --> 00:28:02,050 Den anden ting en app kan gøre, er til stede UI af et andet program. 409 00:28:02,050 --> 00:28:06,430 Mens det kører det kunne poppe op Facebook UI. 410 00:28:06,430 --> 00:28:09,540 Det siger, at du nødt til at sætte dit brugernavn og adgangskode for at fortsætte 411 00:28:09,540 --> 00:28:15,090 eller sætte op i ethvert brugernavn og adgangskode UI for et websted 412 00:28:15,090 --> 00:28:18,420 at måske brugeren anvender blot at forsøge at narre brugeren 413 00:28:18,420 --> 00:28:21,340 til at sætte deres legitimationsoplysninger i. 414 00:28:21,340 --> 00:28:25,590 Dette er virkelig en lige parallel af de e-mail-phishing-angreb 415 00:28:25,590 --> 00:28:28,210 hvor en person sender dig en e-mail 416 00:28:28,210 --> 00:28:33,050 og giver dig dybest set en falsk UI for et websted 417 00:28:33,050 --> 00:28:37,320 at du har adgang til. 418 00:28:37,320 --> 00:28:41,590 >> Den anden ting, vi ser i ondsindet kode er system modifikation. 419 00:28:41,590 --> 00:28:48,160 Du kan søge efter alle de API-kald, der kræver root privilegium 420 00:28:48,160 --> 00:28:50,870 at udføre korrekt. 421 00:28:50,870 --> 00:28:56,160 Ændring af enhedens web proxy ville være noget at en ansøgning 422 00:28:56,160 --> 00:28:59,530 bør ikke være i stand til at gøre. 423 00:28:59,530 --> 00:29:03,030 Men hvis programmet har koden i der for at gøre det 424 00:29:03,030 --> 00:29:05,960 du ved, at det sandsynligvis er en ondsindet program 425 00:29:05,960 --> 00:29:09,620 eller meget stor sandsynlighed for at være et skadeligt program, 426 00:29:09,620 --> 00:29:13,910 og så hvad der ville ske, er, at app ville have nogle måde eskalerende privilegium. 427 00:29:13,910 --> 00:29:17,200 Det ville have nogle privilegium optrapning udnytte 428 00:29:17,200 --> 00:29:20,730 i ansøgningen, og derefter når det eskalerede privilegier 429 00:29:20,730 --> 00:29:23,800 det ville gøre disse systemændringer. 430 00:29:23,800 --> 00:29:28,010 Du kan finde malware, der har privilegium optrapning 431 00:29:28,010 --> 00:29:32,550 i det endda uden at vide hvordan det privilegium optrapning 432 00:29:32,550 --> 00:29:37,960 udnytte kommer til at ske, og det er et rart, let måde 433 00:29:37,960 --> 00:29:41,220 at kigge efter malware. 434 00:29:41,220 --> 00:29:46,030 DroidDream var sandsynligvis den mest berømte stykke af Android malware. 435 00:29:46,030 --> 00:29:50,530 Jeg tror, ​​det påvirkede omkring 250.000 brugere i løbet af et par dage 436 00:29:50,530 --> 00:29:52,810 før det blev fundet. 437 00:29:52,810 --> 00:29:56,890 De ompakket 50 falske applikationer, 438 00:29:56,890 --> 00:30:00,370 sætte dem i Android App Store, 439 00:30:00,370 --> 00:30:10,940 og i det væsentlige det plejede Android jailbreak kode at eskalere privilegier 440 00:30:10,940 --> 00:30:16,380 og derefter installere en kommando, kontrol og slå alle ofrene 441 00:30:16,380 --> 00:30:20,690 ind i et bot net, men du kunne have opdaget dette 442 00:30:20,690 --> 00:30:24,170 hvis du var at scanne programmet og bare på udkig efter 443 00:30:24,170 --> 00:30:32,230 API-kald, der krævede root tilladelse til at udføre korrekt. 444 00:30:32,230 --> 00:30:40,150 >> Og der er et eksempel her har jeg som ændrer proxy, 445 00:30:40,150 --> 00:30:46,380 og det faktisk kun er tilgængelig på Android. 446 00:30:46,380 --> 00:30:49,070 Du kan se, jeg giver dig en masse eksempler på Android 447 00:30:49,070 --> 00:30:53,990 fordi det er her den mest aktive malware økosystem er 448 00:30:53,990 --> 00:30:58,690 fordi det er virkelig nemt for en hacker at få skadelig kode 449 00:30:58,690 --> 00:31:01,470 i Android Marketplace. 450 00:31:01,470 --> 00:31:06,480 Det er ikke så let at gøre det i Apple App Store 451 00:31:06,480 --> 00:31:10,250 fordi Apple kræver udviklere til at identificere sig selv 452 00:31:10,250 --> 00:31:12,790 og underskrive koden. 453 00:31:12,790 --> 00:31:20,340 De faktisk kontrollere, hvem du er, og Apple er faktisk granske ansøgningerne. 454 00:31:20,340 --> 00:31:27,450 Vi ser ikke en masse sand malware, hvor enheden bliver kompromitteret. 455 00:31:27,450 --> 00:31:32,250 Jeg vil tale om nogle eksempler, hvor det er virkelig privatlivets fred, som er ved at blive kompromitteret, 456 00:31:32,250 --> 00:31:38,460 og det er, hvad der virkelig sker på Apple-enhed. 457 00:31:38,460 --> 00:31:44,090 En anden ting at kigge efter skadelig kode, risikabel kode i enheder 458 00:31:44,090 --> 00:31:50,300 er logik eller tidsindstillede bomber, og tidsindstillede bomber er formentlig 459 00:31:50,300 --> 00:31:53,370 meget lettere at søge end logiske bomber. 460 00:31:53,370 --> 00:31:57,030 Men med tidsindstillede bomber, hvad du kan gøre, er at du kan søge efter 461 00:31:57,030 --> 00:32:04,760 steder i koden, hvor tiden er testet, eller en absolut tid ledt efter 462 00:32:04,760 --> 00:32:08,190 før visse funktioner i app sker. 463 00:32:08,190 --> 00:32:14,200 Og dette kunne gøres for at skjule denne aktivitet fra brugeren, 464 00:32:14,200 --> 00:32:17,510 så det sker sent om natten. 465 00:32:17,510 --> 00:32:24,350 DroidDream gjorde alt dens aktivitet fra 23:00 til 08:00 lokal tid 466 00:32:24,350 --> 00:32:30,650 at forsøge at gøre det, mens brugeren ikke bruger måske deres enhed. 467 00:32:30,650 --> 00:32:38,680 >> En anden grund til at gøre dette er, hvis folk bruger adfærdsmæssige analyse af en ansøgning, 468 00:32:38,680 --> 00:32:43,430 kører app i en sandkasse at se, hvad adfærd ansøgningen er, 469 00:32:43,430 --> 00:32:51,090 de kan bruge tidsbaserede logik at gøre aktiviteten 470 00:32:51,090 --> 00:32:54,640 når app ikke er i sandkassen. 471 00:32:54,640 --> 00:33:01,520 For eksempel en app butik som Apple 472 00:33:01,520 --> 00:33:07,940 kører programmet, men de sandsynligvis ikke køre hver ansøgning for, siger 30 dage 473 00:33:07,940 --> 00:33:10,550 før de godkender det, så du kan sætte 474 00:33:10,550 --> 00:33:14,120 logik i din ansøgning, der sagde, okay, kun gøre de dårlige ting 475 00:33:14,120 --> 00:33:20,490 efter 30 dage er gået, eller efter 30 dage efter den dato offentliggøre ansøgningen, 476 00:33:20,490 --> 00:33:27,020 og som kan hjælpe den skadelige kode skjul fra folk inspicere for det. 477 00:33:27,020 --> 00:33:30,050 Hvis anti-virus firmaer kører tingene i sandkasser 478 00:33:30,050 --> 00:33:36,370 eller app stores selv er dette kan hjælpe 479 00:33:36,370 --> 00:33:39,260 skjule, at fra denne inspektion. 480 00:33:39,260 --> 00:33:43,020 Nu, bagsiden af ​​det er det er nemt at finde med statisk analyse, 481 00:33:43,020 --> 00:33:46,170 så faktisk inspicere den kode, du kan søge efter alle de steder 482 00:33:46,170 --> 00:33:54,010 hvor ansøgningen tester tiden og inspicere den måde. 483 00:33:54,010 --> 00:33:58,850 Og her har jeg nogle eksempler på disse 3 forskellige platforme 484 00:33:58,850 --> 00:34:05,640 hvordan tiden kan kontrolleres for den app maker 485 00:34:05,640 --> 00:34:10,520 så du ved, hvad man skal kigge efter, hvis du inspicere app statisk. 486 00:34:10,520 --> 00:34:14,570 >> Jeg gik bare igennem en hel masse forskellige ondsindede aktiviteter 487 00:34:14,570 --> 00:34:18,969 at vi har set i naturen, men hvilke er de mest udbredte? 488 00:34:18,969 --> 00:34:23,940 Samme undersøgelse fra North Carolina State Mobile Genome Project 489 00:34:23,940 --> 00:34:28,560 offentliggjort nogle data, og der var stort set 4 områder 490 00:34:28,560 --> 00:34:32,850 at de så, hvor der var en masse aktivitet. 491 00:34:32,850 --> 00:34:35,370 37% af de apps gjorde privilegium optrapning, 492 00:34:35,370 --> 00:34:38,429 så de havde en vis form for jailbreak kode derinde 493 00:34:38,429 --> 00:34:42,070 hvor de forsøgte at eskalere privilegier, så de kunne 494 00:34:42,070 --> 00:34:48,360 behøver API kommandoer kører som operativsystemet. 495 00:34:48,360 --> 00:34:52,520 45% af de apps derude gjorde sms, 496 00:34:52,520 --> 00:34:57,260 så det er en stor procentdel, der forsøger at direkte tjene penge. 497 00:34:57,260 --> 00:35:02,640 93% gjorde fjernbetjening, så de forsøgte at etablere et bot net, en mobil bot net. 498 00:35:02,640 --> 00:35:08,990 Og 45% høstet identificerende oplysninger 499 00:35:08,990 --> 00:35:16,230 ligesom telefonnumre, UUID'er, GPS-position, brugerkonti, 500 00:35:16,230 --> 00:35:22,870 og dette tilføjer op til mere end 100, fordi de fleste malware forsøger at gøre et par af disse ting. 501 00:35:22,870 --> 00:35:27,070 >> Jeg har tænkt mig at skifte til den anden halvdel, og snakke om den kode sårbarheder. 502 00:35:27,070 --> 00:35:29,480 Dette er den anden halvdel af risikabel aktivitet. 503 00:35:29,480 --> 00:35:33,450 Det er her væsentligt udvikleren gør fejl. 504 00:35:33,450 --> 00:35:37,210 En legitim udvikler skrive en legitim app 505 00:35:37,210 --> 00:35:41,830 gør fejl eller er uvidende om risikoen for den mobile platform. 506 00:35:41,830 --> 00:35:44,780 De ved bare ikke, hvordan man laver en sikker mobil app, 507 00:35:44,780 --> 00:35:47,700 eller nogle gange udvikleren ikke bekymrer sig om at sætte brugeren i fare. 508 00:35:47,700 --> 00:35:50,850 Sommetider en del af deres forretningsmodel kunne være 509 00:35:50,850 --> 00:35:54,610 høst af brugerens personlige oplysninger. 510 00:35:54,610 --> 00:35:58,090 Det er slags i den anden kategori, og det er derfor nogle af denne ondsindede 511 00:35:58,090 --> 00:36:03,200 versus legitime begynder at bløde i løbet, fordi der er forskel på meninger 512 00:36:03,200 --> 00:36:10,440 mellem, hvad brugeren ønsker, og hvad brugeren finder risikabelt 513 00:36:10,440 --> 00:36:13,050 og hvad applikationsudvikler finder risikabelt. 514 00:36:13,050 --> 00:36:18,380 Selvfølgelig er det ikke anvendelsen udviklerens data i de fleste tilfælde. 515 00:36:18,380 --> 00:36:22,030 >> Og så endelig, en anden måde dette sker, er en udvikler kan linke i 516 00:36:22,030 --> 00:36:28,600 et delt bibliotek, der har sårbarheder eller denne risikabel adfærd i det 517 00:36:28,600 --> 00:36:32,480 unbeknownst til dem. 518 00:36:32,480 --> 00:36:37,060 Den første kategori er følsomme data lækage, 519 00:36:37,060 --> 00:36:40,030 og det er, når den app indsamler oplysninger 520 00:36:40,030 --> 00:36:44,980 ligesom placering, adressebog information, ejeroplysninger 521 00:36:44,980 --> 00:36:48,000 og sender det fra enheden. 522 00:36:48,000 --> 00:36:53,050 Og når det er slået fra enheden, ved vi ikke, hvad der sker med disse oplysninger. 523 00:36:53,050 --> 00:36:57,170 Det kunne gemmes usikkert ved anvendelse udvikler. 524 00:36:57,170 --> 00:37:02,070 Vi har set applikationsudviklere få kompromitteret, 525 00:37:02,070 --> 00:37:05,820 og de data, de er lagring bliver taget. 526 00:37:05,820 --> 00:37:10,970 Det skete et par måneder siden til en udvikler ned i Florida 527 00:37:10,970 --> 00:37:21,660 hvor et stort antal af-det var iPad UUID'er og enhedsnavne 528 00:37:21,660 --> 00:37:25,270 blev lækket fordi nogen, jeg tror det var anonym, 529 00:37:25,270 --> 00:37:29,460 hævdede at gøre dette, brød ind i denne udvikler servere 530 00:37:29,460 --> 00:37:34,920 og stjal millioner af iPad UUID'er 531 00:37:34,920 --> 00:37:37,390 og edb-navne. 532 00:37:37,390 --> 00:37:40,260 Ikke den mest risikable information, 533 00:37:40,260 --> 00:37:46,820 men hvad hvis det var opbevaring af brugernavne og adgangskoder 534 00:37:46,820 --> 00:37:48,170 og privatadresser? 535 00:37:48,170 --> 00:37:51,100 Der er masser af apps, der lagrer den slags oplysninger. 536 00:37:51,100 --> 00:37:53,230 Risikoen er der. 537 00:37:53,230 --> 00:37:56,620 >> Den anden ting, der kan ske, er, hvis bygherren ikke tager sig 538 00:37:56,620 --> 00:38:01,370 til at sikre data-kanal, og det er en anden stor sårbarhed jeg har tænkt mig at tale om, 539 00:38:01,370 --> 00:38:05,160 at data bliver sendt i det klare. 540 00:38:05,160 --> 00:38:09,040 Hvis brugeren er på et offentligt Wi-Fi-netværk 541 00:38:09,040 --> 00:38:12,330 eller nogen er sniffing internettet eller andet sted 542 00:38:12,330 --> 00:38:19,260 ad den vej, at data bliver udsat. 543 00:38:19,260 --> 00:38:23,790 En meget berømt sag af denne information lækage skete med Pandora, 544 00:38:23,790 --> 00:38:27,250 og det er noget vi forsket på Veracode. 545 00:38:27,250 --> 00:38:33,200 Vi hørte, at der var en-jeg tror det var en Federal Trade Commission 546 00:38:33,200 --> 00:38:35,310 undersøgelse foregår med Pandora. 547 00:38:35,310 --> 00:38:39,830 Vi sagde, "Hvad sker der? Lad os begynde at grave ind i Pandora program." 548 00:38:39,830 --> 00:38:46,690 Og hvad vi bestemt var Pandora ansøgning indsamlede 549 00:38:46,690 --> 00:38:51,270 dit køn og din alder, 550 00:38:51,270 --> 00:38:56,660 og det også adgang til din GPS-position, og Pandora ansøgning 551 00:38:56,660 --> 00:39:00,200 gjorde det for, hvad de sagde var legitime årsager. 552 00:39:00,200 --> 00:39:05,360 Den musik, de legede-Pandora er en musik-streaming app- 553 00:39:05,360 --> 00:39:07,530 den musik, de spillede kun blev godkendt i USA, 554 00:39:07,530 --> 00:39:13,020 så de havde til at kontrollere at overholde deres licensaftaler, som de havde 555 00:39:13,020 --> 00:39:17,240 for musikken at brugeren var i Amerikas Forenede Stater. 556 00:39:17,240 --> 00:39:25,070 De ønskede også at overholde Parental Advisory 557 00:39:25,070 --> 00:39:33,790 omkring voksen sprog i musik, 558 00:39:33,790 --> 00:39:37,500 og så det er et frivilligt program, men de ønskede at efterkomme 559 00:39:37,500 --> 00:39:43,010 og ikke spille eksplicitte tekster til børn 13 og under. 560 00:39:43,010 --> 00:39:46,280 >> De havde rimelig grund til at indsamle disse data. 561 00:39:46,280 --> 00:39:49,160 Deres app havde de tilladelser til at gøre det. 562 00:39:49,160 --> 00:39:52,000 Brugere troede, det var legitimt. Men hvad skete der? 563 00:39:52,000 --> 00:39:55,810 De er forbundet i 3 eller 4 forskellige ad biblioteker. 564 00:39:55,810 --> 00:39:59,140 Nu er alle pludselig alle disse ad biblioteker 565 00:39:59,140 --> 00:40:02,970 får adgang til den samme information. 566 00:40:02,970 --> 00:40:05,830 Ad biblioteker, hvis man ser på koden i annoncen biblioteker 567 00:40:05,830 --> 00:40:08,430 hvad de gør, er hver annonce bibliotek siger 568 00:40:08,430 --> 00:40:11,340 "Har min app har tilladelse til at få GPS-position?" 569 00:40:11,340 --> 00:40:14,890 "Åh, det gør? Okay, fortæl mig det GPS-placering." 570 00:40:14,890 --> 00:40:16,620 Hver enkelt annonce bibliotek gør det, 571 00:40:16,620 --> 00:40:19,740 og hvis den app ikke har GPS-tilladelse 572 00:40:19,740 --> 00:40:23,460 vil det ikke være i stand til at få det, men hvis det gør, vil det få det. 573 00:40:23,460 --> 00:40:26,240 Dette er, hvor forretningsmodellen i ad bibliotekerne 574 00:40:26,240 --> 00:40:31,160 er imod, at brugerens privatliv. 575 00:40:31,160 --> 00:40:34,980 Og der har været undersøgelser derude, der vil sige, hvis du kender den alder 576 00:40:34,980 --> 00:40:38,430 af en person, og du kender deres placering 577 00:40:38,430 --> 00:40:42,530 hvor de sover om natten, fordi du har deres GPS-koordinater 578 00:40:42,530 --> 00:40:46,030 mens de måske sover, du ved præcis, hvem denne person er 579 00:40:46,030 --> 00:40:50,230 fordi du kan bestemme, hvilke medlem af husstanden er denne person. 580 00:40:50,230 --> 00:40:54,780 Virkelig dette er at identificere til annoncører 581 00:40:54,780 --> 00:40:59,530 præcis, hvem du er, og det ser ud som det var legitimt. 582 00:40:59,530 --> 00:41:02,800 Jeg vil bare have min streaming af musik, og det er den eneste måde at få det. 583 00:41:02,800 --> 00:41:05,370 >> Nå, vi udsat dette. 584 00:41:05,370 --> 00:41:08,030 Vi skrev det op i flere blogindlæg 585 00:41:08,030 --> 00:41:13,280 og det viste sig, at en person fra Rolling Stone magazine 586 00:41:13,280 --> 00:41:18,810 læse en af ​​vores blogindlæg og skrev deres egen blog i Rolling Stone om det, 587 00:41:18,810 --> 00:41:22,120 og den næste dag Pandora troede, det var en god idé 588 00:41:22,120 --> 00:41:27,600 at fjerne annoncen biblioteker fra deres ansøgning. 589 00:41:27,600 --> 00:41:31,270 Så vidt jeg ved, de er det eneste, de skal roses. 590 00:41:31,270 --> 00:41:35,770 Jeg tror, ​​de er den eneste Freemium type app, der har gjort dette. 591 00:41:35,770 --> 00:41:38,660 Alle de andre Freemium apps har denne samme adfærd, 592 00:41:38,660 --> 00:41:41,780 så du har fået til at tænke over, hvad slags data du giver 593 00:41:41,780 --> 00:41:48,330 disse Freemium applikationer, fordi det hele kommer til annoncører. 594 00:41:48,330 --> 00:41:53,390 Praetorian gjorde også en undersøgelse om delte biblioteker og sagde, 595 00:41:53,390 --> 00:41:57,100 "Lad os se på, hvad delte biblioteker er de øverste delte biblioteker", og dette var dataene. 596 00:41:57,100 --> 00:41:59,420 >> De analyserede 53.000 apps, 597 00:41:59,420 --> 00:42:01,900 og antallet 1 delt bibliotek var AdMob. 598 00:42:01,900 --> 00:42:06,060 Det var faktisk i 38% af de programmer derude, 599 00:42:06,060 --> 00:42:08,800 så 38% af de programmer, du bruger 600 00:42:08,800 --> 00:42:11,250 sandsynligvis høste dine personlige oplysninger 601 00:42:11,250 --> 00:42:16,650 og sende den til annoncenetværk. 602 00:42:16,650 --> 00:42:19,350 Apache og Android var 8% og 6%, 603 00:42:19,350 --> 00:42:22,960 og så disse andre dem nede i bunden, Google Ads, Flurry, 604 00:42:22,960 --> 00:42:26,600 Mob City og tusindårsrige Medier, 605 00:42:26,600 --> 00:42:30,500 disse er alle ad selskaber, og så interessant nok, 606 00:42:30,500 --> 00:42:33,500 4% forbundet i Facebook-biblioteket 607 00:42:33,500 --> 00:42:38,870 sandsynligvis til at gøre godkendelse via Facebook 608 00:42:38,870 --> 00:42:40,810 så den app kunne autentificere Facebook. 609 00:42:40,810 --> 00:42:44,660 Men det betyder også selskabet Facebook styrer kode 610 00:42:44,660 --> 00:42:49,010 der kører i 4% af Android mobile apps derude, 611 00:42:49,010 --> 00:42:53,490 og de har adgang til alle de data, der app har tilladelse til at få ram på. 612 00:42:53,490 --> 00:42:57,170 Facebook hovedsageligt forsøger at sælge reklameplads. 613 00:42:57,170 --> 00:43:00,120 Det er deres forretningsmodel. 614 00:43:00,120 --> 00:43:02,920 >> Hvis man ser på hele dette økosystem med disse tilladelser 615 00:43:02,920 --> 00:43:07,740 og delte biblioteker, du begynder at se, at 616 00:43:07,740 --> 00:43:13,850 du har en masse af risiko i en angiveligt legitimt program. 617 00:43:13,850 --> 00:43:19,360 Det samme lignende ting, der skete med Pandora 618 00:43:19,360 --> 00:43:22,340 skete med et program kaldet Path, 619 00:43:22,340 --> 00:43:27,660 og sti troede, at de var ved at blive nyttige, venlige udviklere. 620 00:43:27,660 --> 00:43:32,160 De var bare forsøger at give dig en fantastisk brugeroplevelse, 621 00:43:32,160 --> 00:43:37,810 og det viste sig, at uden at spørge brugeren eller fortæller brugeren noget- 622 00:43:37,810 --> 00:43:40,400 og dette skete på iPhone og på Android, 623 00:43:40,400 --> 00:43:44,420 Pandora app var på iPhone og Android- 624 00:43:44,420 --> 00:43:48,890 at Sti ansøgning blev snuppe hele din adressebog 625 00:43:48,890 --> 00:43:52,830 og uploade det til Path lige når du har installeret og løb ansøgningen, 626 00:43:52,830 --> 00:43:55,840 og de ikke fortælle dig om dette. 627 00:43:55,840 --> 00:43:58,750 De troede, det var virkelig nyttige for dig 628 00:43:58,750 --> 00:44:04,040 at være i stand til at dele med alle de mennesker i din adressebog 629 00:44:04,040 --> 00:44:06,920 at du bruger Sti ansøgning. 630 00:44:06,920 --> 00:44:09,490 >> Nå, selvfølgelig Sti troede, det var stor for deres virksomhed. 631 00:44:09,490 --> 00:44:13,510 Ikke så stor for brugeren. 632 00:44:13,510 --> 00:44:19,020 Du er nødt til at tænke, at det er én ting, hvis måske en teenager 633 00:44:19,020 --> 00:44:23,700 bruger dette program, og deres snesevis af venner er derinde, 634 00:44:23,700 --> 00:44:29,360 men hvad nu hvis det er den administrerende direktør for en virksomhed, der installerer Path 635 00:44:29,360 --> 00:44:33,170 og så lige pludselig hele deres adressekartotek er deroppe? 636 00:44:33,170 --> 00:44:38,310 Du kommer til at få en masse af potentielt værdifulde kontaktoplysninger 637 00:44:38,310 --> 00:44:40,920 for en masse mennesker. 638 00:44:40,920 --> 00:44:44,500 En journalist fra New York Times, kan du være i stand til at få telefonnummeret 639 00:44:44,500 --> 00:44:47,380 for tidligere præsidenter fra deres adressebog, 640 00:44:47,380 --> 00:44:54,780 så naturligvis en masse følsomme oplysninger bliver overført med noget som dette. 641 00:44:54,780 --> 00:44:58,090 Der var sådan en stor klap om det, at Sti undskyldt. 642 00:44:58,090 --> 00:45:01,610 De ændrede deres app, og det endda påvirket Apple. 643 00:45:01,610 --> 00:45:06,950 Apple sagde, "Vi kommer til at tvinge app leverandører til at bede brugere 644 00:45:06,950 --> 00:45:12,650 hvis de kommer til at samle hele deres adressebog. " 645 00:45:12,650 --> 00:45:15,360 >> Det ligner, hvad der sker her er 646 00:45:15,360 --> 00:45:19,430 når der er en stor krænkelse af personlige oplysninger, og det gør pressen 647 00:45:19,430 --> 00:45:21,680 vi se en ændring derude. 648 00:45:21,680 --> 00:45:23,230 Men selvfølgelig er der andre ting derude. 649 00:45:23,230 --> 00:45:27,440 LinkedIn ansøgning høster dine kalenderposter, 650 00:45:27,440 --> 00:45:34,530 men Apple gør ikke brugeren bedt om det. 651 00:45:34,530 --> 00:45:38,030 Kalenderposter kan have følsomme oplysninger i dem også. 652 00:45:38,030 --> 00:45:40,000 Hvor vil du trække grænsen? 653 00:45:40,000 --> 00:45:43,960 Det er virkelig sådan en udvikling sted 654 00:45:43,960 --> 00:45:47,640 hvor der er virkelig ingen god standard derude 655 00:45:47,640 --> 00:45:51,990 for brugerne at forstå, når deres oplysninger kommer til at være i fare 656 00:45:51,990 --> 00:45:57,820 og når de kommer til at kende det bliver taget. 657 00:45:57,820 --> 00:46:03,040 Vi skrev en app på Veracode kaldet Adios, 658 00:46:03,040 --> 00:46:08,350 og hovedsagelig det tilladt du pege app på iTunes bibliotek 659 00:46:08,350 --> 00:46:12,550 og se på alle de programmer, der var høst din fulde adresse bog. 660 00:46:12,550 --> 00:46:19,760 Og som du kan se på denne liste her, Angry Birds, 661 00:46:19,760 --> 00:46:21,590 AIM, AroundMe. 662 00:46:21,590 --> 00:46:24,050 Hvorfor Angry Birds har brug for din adressebog? 663 00:46:24,050 --> 00:46:29,160 Jeg ved det ikke, men det gør en eller anden måde. 664 00:46:29,160 --> 00:46:32,310 >> Det er noget, mange, mange applikationer gør. 665 00:46:32,310 --> 00:46:34,780 Du kan inspicere koden til dette. 666 00:46:34,780 --> 00:46:38,660 Der er veldefinerede API'er til iPhone, Android og BlackBerry 667 00:46:38,660 --> 00:46:42,120 at komme på adressebogen. 668 00:46:42,120 --> 00:46:48,520 Du kan virkelig nemt inspicere for dette, og det er, hvad vi gjorde i vores Adios ansøgning. 669 00:46:48,520 --> 00:46:52,320 Den næste kategori, Usikker Sensitive Datalagring, 670 00:46:52,320 --> 00:46:55,670 er noget, hvor udviklerne tage noget som en nål eller et kontonummer 671 00:46:55,670 --> 00:46:58,530 eller en adgangskode og opbevar den i klar på enheden. 672 00:46:58,530 --> 00:47:02,310 Endnu værre, kan de gemme det i et område på telefonen 673 00:47:02,310 --> 00:47:06,820 som er globalt tilgængelige, ligesom SD-kortet. 674 00:47:06,820 --> 00:47:11,320 Du kan se dette oftere på Android fordi Android giver mulighed for et SD-kort. 675 00:47:11,320 --> 00:47:13,200 IPhone-enheder ikke. 676 00:47:13,200 --> 00:47:17,900 Men vi oplevede selv dette ske i en CitiGroup ansøgning. 677 00:47:17,900 --> 00:47:25,450 Deres netbank ansøgning lagret kontonumre usikker, 678 00:47:25,450 --> 00:47:28,120 bare i den klare, så hvis du har mistet din enhed, 679 00:47:28,120 --> 00:47:30,670 hovedsagelig du mistet din bankkonto. 680 00:47:30,670 --> 00:47:36,000 Derfor er jeg personligt ikke gøre bankforretninger på min iPhone. 681 00:47:36,000 --> 00:47:43,710 Jeg synes, det er for risikabelt lige nu til at gøre disse former for aktiviteter. 682 00:47:43,710 --> 00:47:45,950 >> Skype gjorde det samme. 683 00:47:45,950 --> 00:47:49,870 Skype, selvfølgelig, har en konto balance, et brugernavn og en adgangskode 684 00:47:49,870 --> 00:47:51,030 at adgang denne balance. 685 00:47:51,030 --> 00:48:00,080 De var lagring af alle disse oplysninger i den klare på den mobile enhed. 686 00:48:00,080 --> 00:48:05,760 Jeg har nogle eksempler her for oprette filer 687 00:48:05,760 --> 00:48:10,310 der ikke har de rigtige tilladelser eller skrive til disk 688 00:48:10,310 --> 00:48:17,260 og ikke have nogen kryptering ske for. 689 00:48:17,260 --> 00:48:20,190 Denne næste område, Usikker følsomme data transmission, 690 00:48:20,190 --> 00:48:24,450 Jeg har hentydet til dette et par gange, og på grund af offentlig Wi-Fi 691 00:48:24,450 --> 00:48:27,770 det er noget, apps absolut nødt til at gøre, 692 00:48:27,770 --> 00:48:31,250 og det er nok det, vi ser gå galt mest. 693 00:48:31,250 --> 00:48:34,920 Jeg vil sige, faktisk, jeg tror, ​​jeg har de faktiske data, 694 00:48:34,920 --> 00:48:38,120 men det er tæt på halvdelen af ​​de mobile applikationer 695 00:48:38,120 --> 00:48:41,780 skrue op laver SSL. 696 00:48:41,780 --> 00:48:43,910 De har bare ikke bruge API'er korrekt. 697 00:48:43,910 --> 00:48:47,970 Jeg mener, alt hvad du har at gøre, er at følge instruktionerne og bruge API'er 698 00:48:47,970 --> 00:48:54,720 men de ting som ikke tjekke, om der er et ugyldigt certifikat i den anden ende, 699 00:48:54,720 --> 00:49:02,120 ikke kontrollere, om den anden ende forsøger at gøre en protokol nedjustering angreb. 700 00:49:02,120 --> 00:49:07,200 >> Udviklerne, de ønsker at få deres afkrydsningsfelt, right? 701 00:49:07,200 --> 00:49:11,910 Deres krav er at bruge dette til at sælge. De har brugt dette til at sælge. 702 00:49:11,910 --> 00:49:14,800 Kravet er ikke at bruge denne til at sælge sikkert, 703 00:49:14,800 --> 00:49:19,680 og så dette er grunden til alle programmer, der bruger SSL til at sikre data 704 00:49:19,680 --> 00:49:23,470 som det er at blive overført fra enheden virkelig skal inspiceres 705 00:49:23,470 --> 00:49:28,950 at sørge for, der blev gennemført korrekt. 706 00:49:28,950 --> 00:49:32,850 Og her har jeg nogle eksempler, hvor du kan se et program 707 00:49:32,850 --> 00:49:37,400 bruger måske HTTP i stedet for HTTPS. 708 00:49:37,400 --> 00:49:40,510 I nogle tilfælde apps vil falde tilbage til HTTP 709 00:49:40,510 --> 00:49:44,250 hvis HTTPS ikke fungerer. 710 00:49:44,250 --> 00:49:49,070 Jeg har et andet opkald her på Android, hvor de har slået check certifikat, 711 00:49:49,070 --> 00:49:51,700 så en man-in-the-middle-angreb kan ske. 712 00:49:51,700 --> 00:49:56,370 Et ugyldigt certifikat vil blive accepteret. 713 00:49:56,370 --> 00:50:01,920 Disse er alle tilfælde, hvor angriberne kommer til at være i stand til at komme videre 714 00:50:01,920 --> 00:50:07,150 det samme Wi-Fi-forbindelse som bruger og få adgang til alle de data, 715 00:50:07,150 --> 00:50:11,650 , der bliver sendt over internettet. 716 00:50:11,650 --> 00:50:15,970 >> Og endelig den sidste kategori, jeg har her, er hardcodede kodeord og nøgler. 717 00:50:15,970 --> 00:50:21,470 Vi har faktisk se en masse udviklere bruger den samme kodning stil 718 00:50:21,470 --> 00:50:25,900 at de gjorde, da de var ved at bygge web-server applikationer, 719 00:50:25,900 --> 00:50:29,700 så de opbygger en Java server-program, og de er hardcoding nøglen. 720 00:50:29,700 --> 00:50:31,940 Nå, når du bygger en server applikation, ja, 721 00:50:31,940 --> 00:50:34,240 hardcoding nøglen er ikke en god idé. 722 00:50:34,240 --> 00:50:36,290 Det gør det vanskeligt at ændre. 723 00:50:36,290 --> 00:50:40,700 Men det er ikke så slemt på serveren side, fordi der har adgang til serveren side? 724 00:50:40,700 --> 00:50:43,140 Kun administratorer. 725 00:50:43,140 --> 00:50:48,100 Men hvis du tager den samme kode, og du hældte det over til en mobil applikation 726 00:50:48,100 --> 00:50:52,550 nu alle, der har at mobil Applikationen har adgang til at hardcodede nøgle, 727 00:50:52,550 --> 00:50:56,380 og vi faktisk ser dette en masse gange, og jeg har nogle statistikker 728 00:50:56,380 --> 00:51:00,920 på, hvor ofte vi ser dette ske. 729 00:51:00,920 --> 00:51:04,940 Det var faktisk i eksempel kode, som MasterCard offentliggjort 730 00:51:04,940 --> 00:51:06,850 om, hvordan du bruger deres service. 731 00:51:06,850 --> 00:51:11,860 Eksemplet kode viste, hvordan du bare ville tage adgangskode 732 00:51:11,860 --> 00:51:14,850 og sætte det i en hardcodede snor lige der, 733 00:51:14,850 --> 00:51:19,380 og vi ved, hvordan udviklerne elsker at kopiere og indsætte kodestumper 734 00:51:19,380 --> 00:51:22,360 når de forsøger at gøre noget, så du kopiere og indsætte kodestykket 735 00:51:22,360 --> 00:51:28,450 at de gav som eksempel kode, og du har en usikker program. 736 00:51:28,450 --> 00:51:31,490 >> Og her har vi nogle eksempler. 737 00:51:31,490 --> 00:51:35,840 Denne første er en vi ser en masse, hvor de hardcode 738 00:51:35,840 --> 00:51:40,510 data lige ind i en URL-adresse, der bliver sendt. 739 00:51:40,510 --> 00:51:45,120 Nogle gange ser vi string password = password. 740 00:51:45,120 --> 00:51:49,060 Det er temmelig let at opdage, eller snor password på BlackBerry og Android. 741 00:51:49,060 --> 00:51:53,680 Det er faktisk temmelig nemt at kontrollere, fordi næsten altid 742 00:51:53,680 --> 00:51:57,030 udvikleren navne den variabel, der holder adgangskoden 743 00:51:57,030 --> 00:52:02,290 nogle variation af password. 744 00:52:02,290 --> 00:52:05,200 Jeg nævnte, at vi gør statisk analyse på Veracode, 745 00:52:05,200 --> 00:52:11,790 så vi har analyseret flere hundrede Android og iOS-applikationer. 746 00:52:11,790 --> 00:52:15,160 Vi har bygget komplette modeller for dem, og vi er i stand til at scanne dem 747 00:52:15,160 --> 00:52:19,280 for forskellige sårbarheder, især de sårbarheder jeg talte om, 748 00:52:19,280 --> 00:52:21,050 og jeg har nogle data her. 749 00:52:21,050 --> 00:52:24,320 68,5% af de Android apps vi kiggede på 750 00:52:24,320 --> 00:52:28,590 havde brudt kryptografisk kode, 751 00:52:28,590 --> 00:52:33,240 som for os, kan vi ikke opdage, hvis du har lavet din egen krypto rutine, 752 00:52:33,240 --> 00:52:38,980 ikke, at det er en god ide, men det er faktisk at bruge de offentliggjorte API'er 753 00:52:38,980 --> 00:52:42,530 der er på platformen, men gør dem på en sådan måde, 754 00:52:42,530 --> 00:52:46,680 at krypto vil være sårbare, 68,5. 755 00:52:46,680 --> 00:52:49,870 Og det er for folk, der sender os deres ansøgninger faktisk fordi 756 00:52:49,870 --> 00:52:53,730 de tror det er en god ide at gøre sikkerhedstest. 757 00:52:53,730 --> 00:52:56,960 Disse er allerede folk, der tænker sikkert sikkert, 758 00:52:56,960 --> 00:52:59,540 så det er nok endnu værre. 759 00:52:59,540 --> 00:53:02,690 >> Jeg talte ikke om kontrol linjeskift injektion. 760 00:53:02,690 --> 00:53:07,640 Det er noget, vi søger efter, men det er ikke så risikabelt et problem. 761 00:53:07,640 --> 00:53:15,390 Information lækage, dette er, hvor følsomme data bliver sendt fra enheden. 762 00:53:15,390 --> 00:53:19,270 Vi fandt, at i 40% af ansøgningerne. 763 00:53:19,270 --> 00:53:23,540 Tid og stat, de er race condition typen spørgsmål, typisk temmelig svært at udnytte, 764 00:53:23,540 --> 00:53:26,170 så jeg ikke tale om det, men vi kiggede på det. 765 00:53:26,170 --> 00:53:28,750 23% havde SQL-injektion spørgsmål. 766 00:53:28,750 --> 00:53:32,020 En masse mennesker ikke ved, at en masse ansøgninger 767 00:53:32,020 --> 00:53:35,880 bruge en lille smule SQL database på ryggen ende til at gemme data. 768 00:53:35,880 --> 00:53:40,430 Tja, hvis de data, du snuppe over netværket 769 00:53:40,430 --> 00:53:43,800 har SQL-injektion angreb strenge i det 770 00:53:43,800 --> 00:53:45,970 nogen kan kompromittere enheden gennem det, 771 00:53:45,970 --> 00:53:49,800 og så tror jeg, vi finder omkring 40% af web-applikationer har dette problem, 772 00:53:49,800 --> 00:53:52,840 der er et stort epidemi problem. 773 00:53:52,840 --> 00:53:55,740 Vi finder det 23% af tiden i mobile apps 774 00:53:55,740 --> 00:54:02,030 og det er sandsynligvis fordi mange flere web-applikationer bruger SQL end mobil. 775 00:54:02,030 --> 00:54:05,580 >> Og så har vi stadig se nogle cross-site scripting, spørgsmål om godkendelse, 776 00:54:05,580 --> 00:54:09,400 og derefter administration af legitimationsoplysninger, det er hvor du har din hardcodede adgangskode. 777 00:54:09,400 --> 00:54:14,540 I 5% af ansøgningerne vi se, at. 778 00:54:14,540 --> 00:54:17,970 Og så har vi nogle data på iOS. 779 00:54:17,970 --> 00:54:20,180 81% havde fejlhåndtering spørgsmål. 780 00:54:20,180 --> 00:54:23,130 Dette er mere af en kode kvalitet problem, 781 00:54:23,130 --> 00:54:28,010 men 67% havde kryptografiske problemer, så ikke helt så slemt som Android. 782 00:54:28,010 --> 00:54:32,440 Måske API'er er en lille smule lettere, eksemplet koder lidt bedre på iOS. 783 00:54:32,440 --> 00:54:35,420 Men stadig en meget høj procentdel. 784 00:54:35,420 --> 00:54:39,040 Vi havde 54% med information lækage, 785 00:54:39,040 --> 00:54:42,080 omkring 30% med buffer management fejl. 786 00:54:42,080 --> 00:54:45,930 Det er steder, hvor der potentielt kan være et problem med beskadiget hukommelse. 787 00:54:45,930 --> 00:54:50,350 Det viser sig, der er ikke så meget af et problem for udnyttelse 788 00:54:50,350 --> 00:54:56,450 på iOS fordi al koden skal underskrives, 789 00:54:56,450 --> 00:55:02,210 så det er svært for en angriber at udføre vilkårlig kode på iOS. 790 00:55:02,210 --> 00:55:07,880 Kode kvalitet, mappegennemløb, men så legitimationsoplysninger ledelse her på 14,6%, 791 00:55:07,880 --> 00:55:09,250 så værre end på Android. 792 00:55:09,250 --> 00:55:13,240 Vi har folk ikke håndtere passwords korrekt. 793 00:55:13,240 --> 00:55:15,790 Og så de numeriske fejl og buffer overflow, 794 00:55:15,790 --> 00:55:22,680 de er mere kommer til at være problemer kode kvalitet på iOS. 795 00:55:22,680 --> 00:55:26,110 >> Det var det for min præsentation. Jeg ved ikke, om vi er ude af tid eller ej. 796 00:55:26,110 --> 00:55:29,540 Jeg ved ikke, om der er nogen spørgsmål. 797 00:55:29,540 --> 00:55:33,220 [Mand] En hurtig spørgsmål omkring fragmentering og Android Market. 798 00:55:33,220 --> 00:55:36,240 Apple mindst ejer patching. 799 00:55:36,240 --> 00:55:40,780 De gør et godt stykke arbejde for at få det derude mens mindre så i Android rum. 800 00:55:40,780 --> 00:55:44,280 Du næsten nødt til at jailbreake din telefon til at holde dig opdateret 801 00:55:44,280 --> 00:55:46,660 med den aktuelle version af Android. 802 00:55:46,660 --> 00:55:50,960 Ja, det er et kæmpe problem, og så hvis du tænker over- 803 00:55:50,960 --> 00:55:52,280 [Mand] Hvorfor kan du ikke gentage det? 804 00:55:52,280 --> 00:55:55,610 >> Åh, til højre, så spørgsmålet var, hvad omkring fragmentering 805 00:55:55,610 --> 00:56:00,410 af operativsystemet på Android-platformen? 806 00:56:00,410 --> 00:56:05,890 Hvordan kan det påvirke risikoen i disse enheder? 807 00:56:05,890 --> 00:56:09,700 Og det er faktisk et stort problem, fordi hvad der sker, er 808 00:56:09,700 --> 00:56:15,110 de ældre enheder, når nogen kommer op med et jailbreak for denne enhed, 809 00:56:15,110 --> 00:56:19,960 væsentlige, det er privilegium optrapning, og indtil det operativsystem er opdateret 810 00:56:19,960 --> 00:56:25,350 enhver malware kan derefter bruge denne sårbarhed til helt kompromittere enheden 811 00:56:25,350 --> 00:56:30,200 og hvad vi ser på Android er i orden at få et nyt operativsystem 812 00:56:30,200 --> 00:56:34,690 Google har til at sætte ud operativsystemet, og derefter hardwareproducenten 813 00:56:34,690 --> 00:56:39,390 har til at tilpasse det, og derefter transportøren har for at tilpasse det og levere det. 814 00:56:39,390 --> 00:56:43,070 Du har grundlæggende 3 bevægelige dele her, 815 00:56:43,070 --> 00:56:47,210 og det er at dreje ud af, at de luftfartsselskaber, ligeglad, 816 00:56:47,210 --> 00:56:50,400 og hardwareproducenter ligeglade, og Google er ikke puffede dem nok 817 00:56:50,400 --> 00:56:54,430 at gøre noget, så det væsentlige over halvdelen af ​​enhederne derude 818 00:56:54,430 --> 00:57:00,590 har operativsystemer, der har disse rettighedsforøgelse sårbarheder i dem, 819 00:57:00,590 --> 00:57:08,440 og så hvis du får malware på din Android-enhed er det meget mere af et problem. 820 00:57:08,440 --> 00:57:10,350 >> Okay, mange tak. 821 00:57:10,350 --> 00:57:12,310 [Bifald] 822 00:57:12,310 --> 00:57:14,310 [CS50.TV]