1 00:00:00,000 --> 00:00:02,610 >> [Seminar] [Defending Behind the 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 ettermiddag. Mitt navn er Chris Wysopal. 5 00:00:10,360 --> 00:00:13,360 Jeg er CTO og co-grunnlegger av Veracode. 6 00:00:13,360 --> 00:00:15,880 Veracode er et program sikkerhetsselskap. 7 00:00:15,880 --> 00:00:18,230 Vi tester alle slags forskjellige applikasjoner, 8 00:00:18,230 --> 00:00:25,060 og hva jeg skal snakke om i dag er mobile applikasjonssikkerhet. 9 00:00:25,060 --> 00:00:28,630 Min bakgrunn er at jeg har drevet med sikkerhetsforskning 10 00:00:28,630 --> 00:00:31,970 for en veldig lang tid, sannsynligvis omtrent like lenge som noen. 11 00:00:31,970 --> 00:00:35,000 Jeg startet på midten av 90-tallet, 12 00:00:35,000 --> 00:00:37,370 og det var en tid som var ganske interessant fordi 13 00:00:37,370 --> 00:00:39,220 vi hadde et paradigmeskifte på midten av 90-tallet. 14 00:00:39,220 --> 00:00:43,520 Plutselig alles datamaskin ble koblet opp til internett, 15 00:00:43,520 --> 00:00:46,550 og da hadde vi begynnelsen på web-applikasjoner, 16 00:00:46,550 --> 00:00:49,330 og det er det jeg fokuserer på mye da. 17 00:00:49,330 --> 00:00:51,160 Det er interessant. 18 00:00:51,160 --> 00:00:53,930 Nå har vi en annen paradigmeskifte skjer med databehandling, 19 00:00:53,930 --> 00:00:58,710 som er overgangen til mobile applikasjoner. 20 00:00:58,710 --> 00:01:03,680 >> Jeg føler det er litt av en lignende tid da det var i slutten av 90-tallet 21 00:01:03,680 --> 00:01:07,650 når vi undersøker webapplikasjoner og finne feil som 22 00:01:07,650 --> 00:01:11,800 økt styringsfeil og SQL-injeksjon 23 00:01:11,800 --> 00:01:14,940 som egentlig ikke eksisterte før, og plutselig var de overalt 24 00:01:14,940 --> 00:01:19,360 i web-applikasjoner, og nå mye av tiden jeg tilbringer 25 00:01:19,360 --> 00:01:27,950 ser på mobile applikasjoner, og ser på hva som skjer der ute i naturen. 26 00:01:27,950 --> 00:01:32,060 Mobile applikasjoner er virkelig kommer til å være den dominerende dataplattform, 27 00:01:32,060 --> 00:01:35,060 slik at vi virkelig trenger å bruke mye tid hvis du er i sikkerhetsbransjen 28 00:01:35,060 --> 00:01:39,280 med fokus på web-applikasjoner. 29 00:01:39,280 --> 00:01:43,420 Det var 29000 millioner mobile apps lastet ned i 2011. 30 00:01:43,420 --> 00:01:47,920 Det er spådd til å være sammen 76 milliarder apps innen 2014. 31 00:01:47,920 --> 00:01:54,040 Det er 686 millioner enheter som kommer til å bli kjøpt i år, 32 00:01:54,040 --> 00:01:57,060 så dette er hvor folk kommer til å være å gjøre 33 00:01:57,060 --> 00:01:59,600  mesteparten av sin klient databehandling fremover. 34 00:01:59,600 --> 00:02:04,220 >> Jeg snakket med en visepresident i Fidelity Investments 35 00:02:04,220 --> 00:02:08,780 et par måneder siden, og han sa at de bare fikk mer trafikk 36 00:02:08,780 --> 00:02:12,610 gjør finansielle transaksjoner fra deres kundebase 37 00:02:12,610 --> 00:02:16,230 på deres mobilapplikasjon enn på deres hjemmeside, 38 00:02:16,230 --> 00:02:20,610 så en vanlig bruk for nettet i det siste har vært 39 00:02:20,610 --> 00:02:23,800 sjekke aksjekurser, administrere din portefølje, 40 00:02:23,800 --> 00:02:28,060 og vi er faktisk å se at i 2012 bytte over 41 00:02:28,060 --> 00:02:30,960 å være mer dominerende på den mobile plattform. 42 00:02:30,960 --> 00:02:34,530 Gjerne om det kommer til å være noen kriminell aktivitet, 43 00:02:34,530 --> 00:02:38,900 noen ondsinnet aktivitet, det kommer til å begynne å være fokusert på den mobile plattformen 44 00:02:38,900 --> 00:02:44,210 over tid som folk bytte over til det. 45 00:02:44,210 --> 00:02:48,320 Hvis du ser på den mobile plattformen, 46 00:02:48,320 --> 00:02:54,380 å se på risikoen for plattformen er det nyttig å bryte det ned i de forskjellige lag, 47 00:02:54,380 --> 00:02:59,010 akkurat som du ville gjort det på en stasjonær datamaskin, 48 00:02:59,010 --> 00:03:02,860 og du tenker på de forskjellige lagene, programvare, operativsystem, 49 00:03:02,860 --> 00:03:07,730 nettverkslaget, hardware lag, og selvfølgelig, det er sårbarheter på alle disse lagene. 50 00:03:07,730 --> 00:03:10,510 >> Det samme skjer på mobil. 51 00:03:10,510 --> 00:03:14,880 Men mobil, virker det som om noen av disse lagene er verre stilt. 52 00:03:14,880 --> 00:03:19,840 For en, er mer problematisk på mobil nettverkslaget 53 00:03:19,840 --> 00:03:25,650 fordi mange mennesker har i sitt kontor eller hjemme 54 00:03:25,650 --> 00:03:30,780 kablet tilkobling eller de har sikre Wi-Fi-tilkoblinger, 55 00:03:30,780 --> 00:03:36,530 og med mye av mobile enheter du er åpenbart utenfor hjemmet 56 00:03:36,530 --> 00:03:40,520 eller utenfor kontoret mye, og hvis du bruker Wi-Fi der 57 00:03:40,520 --> 00:03:42,820 du kanskje bruker en usikker Wi-Fi-tilkobling, 58 00:03:42,820 --> 00:03:45,570 noe som er en offentlig Wi-Fi-tilkobling, 59 00:03:45,570 --> 00:03:48,840 så når vi tenker på mobile apps må vi ta hensyn 60 00:03:48,840 --> 00:03:53,770 at nettverksmiljøet er mer risikofylt for de programmene 61 00:03:53,770 --> 00:03:57,640 når Wi-Fi blir brukt. 62 00:03:57,640 --> 00:04:02,410 Og når jeg får inn mer av den mobile applikasjonen risiko 63 00:04:02,410 --> 00:04:04,910 vil du se hvorfor det er mer viktig. 64 00:04:04,910 --> 00:04:09,710 Det er risiko på hardware nivå på mobile enheter. 65 00:04:09,710 --> 00:04:11,670 Dette er et område med pågående forskning. 66 00:04:11,670 --> 00:04:15,910 Folk kaller disse bredbånds angrep eller baseband-angrep 67 00:04:15,910 --> 00:04:21,870 Ønsker du å angripe firmware som lytter på radio. 68 00:04:21,870 --> 00:04:25,430 >> Dette er virkelig skremmende angrep fordi 69 00:04:25,430 --> 00:04:27,280 brukeren trenger ikke å gjøre noe. 70 00:04:27,280 --> 00:04:30,760 Du kan treffe mange enheter innenfor RF-området 71 00:04:30,760 --> 00:04:36,690 på en gang, og det virker som når denne forskningen bobler opp 72 00:04:36,690 --> 00:04:40,750 det raskt blir klassifisert der 73 00:04:40,750 --> 00:04:46,600 folk slå inn rundt og si: "Her, fortell oss om det, og kan du slutte å snakke om det." 74 00:04:46,600 --> 00:04:49,460 Det er noen undersøkelser som skjer i bredbåndsområdet, 75 00:04:49,460 --> 00:04:51,980 men det ser ut til å være veldig hysj hysj. 76 00:04:51,980 --> 00:04:56,910 Jeg tror det er mer av en nasjonalstat type forskning som skjer. 77 00:04:56,910 --> 00:05:02,140 Et område med aktiv forskning, skjønt, er operativsystemet lag, 78 00:05:02,140 --> 00:05:08,910 og igjen, dette er annerledes enn i den stasjonære dataverdenen 79 00:05:08,910 --> 00:05:14,840 fordi i mobilen du har disse lagene av mennesker kalt Jailbreakers, 80 00:05:14,840 --> 00:05:18,670 og Jailbreakers er annerledes enn vanlige sårbarhetsforskere. 81 00:05:18,670 --> 00:05:21,970 De prøver å finne sårbarheter i operativsystemet, 82 00:05:21,970 --> 00:05:27,000 men grunnen til at de prøver å finne sårbarheter er ikke å 83 00:05:27,000 --> 00:05:31,810 bryte seg inn i en annens maskin og kompromiss. 84 00:05:31,810 --> 00:05:34,280 Det er å bryte seg inn i sin egen datamaskin. 85 00:05:34,280 --> 00:05:38,820 >> De ønsker å bryte seg inn i sin egen mobil, endre sin egen mobile operativsystem 86 00:05:38,820 --> 00:05:41,050 slik at de kan kjøre applikasjoner etter eget ønske 87 00:05:41,050 --> 00:05:44,510 og endre ting med fulle administrative rettigheter, 88 00:05:44,510 --> 00:05:49,050 og de ønsker ikke å fortelle leverandøren om dette. 89 00:05:49,050 --> 00:05:52,960 De er ikke som en sikkerhetsforsker som er en hvit lue sikkerhetsforsker 90 00:05:52,960 --> 00:05:56,600 som kommer til å gjøre begrenset offentliggjøring og fortelle leverandøren om det. 91 00:05:56,600 --> 00:06:01,270 De ønsker å gjøre denne forskningen, og de ønsker å faktisk publisere det 92 00:06:01,270 --> 00:06:06,400 i en utnytte eller et rootkit eller en jailbreak-kode, 93 00:06:06,400 --> 00:06:10,010 og de ønsker å gjøre det strategisk, som rett etter 94 00:06:10,010 --> 00:06:13,570 leverandør skip det nye operativsystemet. 95 00:06:13,570 --> 00:06:16,350 Du har denne motstandere forholdet 96 00:06:16,350 --> 00:06:19,000 med OS-nivå sårbarheter på mobil, 97 00:06:19,000 --> 00:06:23,150 som jeg synes er ganske interessant, og ett sted vi ser det 98 00:06:23,150 --> 00:06:29,210 er det som gjør det slik at det er godt publisert skadelig kode der ute 99 00:06:29,210 --> 00:06:31,750 for kernel-nivå sårbarheter, 100 00:06:31,750 --> 00:06:35,040 og vi har sett dem som faktisk brukes av malware forfattere. 101 00:06:35,040 --> 00:06:38,450 Det er litt annerledes enn PC-verdenen. 102 00:06:38,450 --> 00:06:42,530 Og da det endelige laget er det øverste laget, applikasjonslaget. 103 00:06:42,530 --> 00:06:45,250 Det er det jeg skal snakke om i dag. 104 00:06:45,250 --> 00:06:48,970 >> De andre lagene finnes, og de andre lagene spille inn i det, 105 00:06:48,970 --> 00:06:53,310 men jeg er stort sett kommer til å snakke om hva som skjer i applikasjonslaget 106 00:06:53,310 --> 00:06:55,560 der koden kjøres i sandkassen. 107 00:06:55,560 --> 00:06:58,670 Det har ikke administratorrettigheter. 108 00:06:58,670 --> 00:07:02,170 Det har å bruke API-er av enheten, 109 00:07:02,170 --> 00:07:06,970 men fortsatt kan mye av ondsinnet aktivitet og mye risiko skje ved at lag 110 00:07:06,970 --> 00:07:09,220 fordi det er det laget der all informasjon er. 111 00:07:09,220 --> 00:07:12,330 Apps kan få tilgang til all informasjon på enheten 112 00:07:12,330 --> 00:07:15,390 hvis de har de riktige tillatelsene, 113 00:07:15,390 --> 00:07:17,540 og de får tilgang til de ulike sensorene på enheten, 114 00:07:17,540 --> 00:07:23,950 GPS sensor, mikrofon, kamera, hva har du. 115 00:07:23,950 --> 00:07:27,380 Selv om vi bare snakker om i applikasjonslaget 116 00:07:27,380 --> 00:07:33,700 vi har mye risiko der. 117 00:07:33,700 --> 00:07:38,450 Den andre tingen som er annerledes med det mobile miljøet 118 00:07:38,450 --> 00:07:45,060 er alle operativsystem spillere, det være seg Blackberry eller Android 119 00:07:45,060 --> 00:07:53,410 eller iOS eller Windows mobile, de har alle en finkornet tillatelse modell, 120 00:07:53,410 --> 00:07:56,990 og dette er en av måtene som de bygget inn i operativsystemet 121 00:07:56,990 --> 00:08:01,230 ideen om at det er ikke så risikabelt som du tror. 122 00:08:01,230 --> 00:08:04,550 Selv om du har alle dine kontakter på det, all din personlige informasjon, 123 00:08:04,550 --> 00:08:09,080 du har bildene dine, har du din posisjon på det, 124 00:08:09,080 --> 00:08:14,820 du lagrer din bank pin for automatisk innlogging på det, er det trygt fordi 125 00:08:14,820 --> 00:08:19,430 apps må ha visse rettigheter til å få på visse deler 126 00:08:19,430 --> 00:08:25,080 av informasjonen på enheten, og brukeren må bli presentert med 127 00:08:25,080 --> 00:08:29,230 disse tillatelsene og si greit. 128 00:08:29,230 --> 00:08:32,590 >> Problemet med det er at brukeren alltid sier greit. 129 00:08:32,590 --> 00:08:35,240 Som en sikkerhet person, jeg vet at du kan spørre brukeren, 130 00:08:35,240 --> 00:08:40,100 si noe ille kommer til å skje, vil du at det skal skje? 131 00:08:40,100 --> 00:08:44,680 Og hvis de er i et rush eller det er noe virkelig fristende på den andre siden av det, 132 00:08:44,680 --> 00:08:47,760 som et spill kommer til å bli installert på at de har ventet på, 133 00:08:47,760 --> 00:08:50,860 de kommer til å klikke OK. 134 00:08:50,860 --> 00:08:56,630 Det er derfor jeg sier på min lysbildet her bare la meg slenge fugler på griser allerede, 135 00:08:56,630 --> 00:09:03,150 og du kan se på lysbildet her er det eksempler på en Blackberry tillatelse boks. 136 00:09:03,150 --> 00:09:05,990 Det står "Vennligst angi Blackberry reisesøknads tillatelser 137 00:09:05,990 --> 00:09:09,720 etter å ha klikket knappen nedenfor, "og i utgangspunktet brukeren er bare kommer til å si 138 00:09:09,720 --> 00:09:12,240 sette rettighetene og lagre. 139 00:09:12,240 --> 00:09:18,010 Her er en Android teksten der det viser ting, 140 00:09:18,010 --> 00:09:20,260 og det faktisk setter noe som ser nesten ut som en advarsel. 141 00:09:20,260 --> 00:09:25,090 Det fikk en slags avkastning skilt der sier nettverkskommunikasjon, telefonsamtale, 142 00:09:25,090 --> 00:09:28,120 men brukeren skal klikke installere, ikke sant? 143 00:09:28,120 --> 00:09:32,940 Og da Apple man er helt ufarlige. 144 00:09:32,940 --> 00:09:34,300 Den gir ikke noen form for advarsel. 145 00:09:34,300 --> 00:09:37,380 Det er bare Apple ønsker å bruke din nåværende plassering. 146 00:09:37,380 --> 00:09:39,670 Selvfølgelig er du kommer til å klikke OK. 147 00:09:39,670 --> 00:09:42,260 >> Det er dette finkornet tillatelse modell, 148 00:09:42,260 --> 00:09:45,890 og apps må ha et manifest fil hvor de erklærer 149 00:09:45,890 --> 00:09:49,410 tillatelsene de trenger, og som vil bli vist til brukeren, 150 00:09:49,410 --> 00:09:53,480 og brukeren må si jeg gi disse tillatelsene. 151 00:09:53,480 --> 00:09:55,080 Men la oss være ærlige. 152 00:09:55,080 --> 00:09:58,400 Brukerne er bare kommer til å alltid si okay. 153 00:09:58,400 --> 00:10:04,460 La oss ta en rask titt på de tillatelsene som disse programmene ber om 154 00:10:04,460 --> 00:10:06,850 og noen av de tillatelser som er der. 155 00:10:06,850 --> 00:10:09,950 Dette selskapet Praetorian gjorde en undersøkelse i fjor 156 00:10:09,950 --> 00:10:14,170 53.000 søknader analysert i Android Market og tredje parts markeder, 157 00:10:14,170 --> 00:10:16,770 så dette er alle Android. 158 00:10:16,770 --> 00:10:19,670 Og den gjennomsnittlige app ba tre tillatelser. 159 00:10:19,670 --> 00:10:23,370 Noen apps bedt 117 tillatelser, 160 00:10:23,370 --> 00:10:27,480 så åpenbart disse er svært finkornet og altfor komplisert for en bruker å forstå 161 00:10:27,480 --> 00:10:31,600 hvis de er presentert med denne app som trenger disse 117 tillatelser. 162 00:10:31,600 --> 00:10:37,270 Det er som den lisensavtalen for sluttbrukere som er 45 sider lang. 163 00:10:37,270 --> 00:10:40,240 Kanskje snart de vil ha et alternativ der det er som 164 00:10:40,240 --> 00:10:43,100 skrive ut tillatelser og send meg en e-post. 165 00:10:43,100 --> 00:10:45,480 >> Men hvis du ser på noen av de beste interessante tillatelser 166 00:10:45,480 --> 00:10:50,840 24% av apps som de lastet ned ut av 53000 167 00:10:50,840 --> 00:10:57,230 bedt om GPS-informasjon fra enheten. 168 00:10:57,230 --> 00:10:59,810 8% lese kontakter. 169 00:10:59,810 --> 00:11:03,770 4% sendte SMS, og 3% mottatt SMS. 170 00:11:03,770 --> 00:11:07,730 2% innspilt lyd. 171 00:11:07,730 --> 00:11:11,210 1% behandlet utgående samtaler. 172 00:11:11,210 --> 00:11:13,140 Jeg vet ikke. 173 00:11:13,140 --> 00:11:17,520 Jeg tror ikke 4% av apps i App Store virkelig trenger å sende SMS-meldinger, 174 00:11:17,520 --> 00:11:21,410 så jeg tror det er et hint om at noe uheldig skjer. 175 00:11:21,410 --> 00:11:24,350 8% av apps trenger å lese i kontaktlisten. 176 00:11:24,350 --> 00:11:26,510 Det er sannsynligvis ikke nødvendig. 177 00:11:26,510 --> 00:11:30,990 En av de andre interessante ting om tillatelser er 178 00:11:30,990 --> 00:11:36,740 hvis du kobler i delte biblioteker i din søknad 179 00:11:36,740 --> 00:11:39,780 de som arver tillatelsene til søknaden, 180 00:11:39,780 --> 00:11:46,570 så hvis din app trenger kontaktlisten eller trenger GPS-posisjonen for å fungere 181 00:11:46,570 --> 00:11:49,940 og du kobler i en reklame bibliotek, for eksempel, 182 00:11:49,940 --> 00:11:53,170 at annonsen bibliotek vil også være i stand til å få tilgang til kontaktene 183 00:11:53,170 --> 00:11:57,630 og også være i stand til å få tilgang til GPS-posisjon, 184 00:11:57,630 --> 00:12:01,990 og utvikleren av programmet vet ingenting om den koden som kjører i annonsen biblioteket. 185 00:12:01,990 --> 00:12:05,370 De er bare å koble det inn fordi de ønsker å tjene penger på deres app. 186 00:12:05,370 --> 00:12:09,820 >> Det er her-og jeg skal snakke om noen eksempler på dette med 187 00:12:09,820 --> 00:12:13,930 et program som heter Pandora, hvor en programutvikler 188 00:12:13,930 --> 00:12:18,910 kan uforvarende bli lekker informasjon 189 00:12:18,910 --> 00:12:24,580 fra sine brukere på grunn av bibliotekene de har knyttet i. 190 00:12:24,580 --> 00:12:30,110 Kartlegging av landskapet der ute, ser på alle de forskjellige apps 191 00:12:30,110 --> 00:12:34,310 som har blitt rapportert i nyhetene som ondsinnede eller gjøre noe brukerne ikke ønsket 192 00:12:34,310 --> 00:12:39,360 og deretter inspisere en rekke apps-vi gjør en mye statisk binære analyse på mobile apps, 193 00:12:39,360 --> 00:12:42,010 så vi har inspisert dem og så på selve koden- 194 00:12:42,010 --> 00:12:49,640 vi kom opp med det vi kaller vår topp ti liste over risikofylt atferd i applikasjoner. 195 00:12:49,640 --> 00:12:54,180 Og det er brutt ned i to seksjoner, ondsinnet kode, 196 00:12:54,180 --> 00:12:57,600 så disse er dårlige ting at apps kan være å gjøre som 197 00:12:57,600 --> 00:13:06,520 er sannsynlig å være noe som en ondsinnet individ 198 00:13:06,520 --> 00:13:10,060 har spesielt satt i søknaden, men det er litt uklar. 199 00:13:10,060 --> 00:13:13,300 Det kan være noe som en utbygger mener er greit, 200 00:13:13,300 --> 00:13:16,350 men det ender opp med å bli tenkt på som ondsinnet av brukeren. 201 00:13:16,350 --> 00:13:19,830 >> Og så den andre delen er det vi kaller koding sårbarheter, 202 00:13:19,830 --> 00:13:24,600 og dette er ting der utbygger i utgangspunktet er å gjøre feil 203 00:13:24,600 --> 00:13:27,200 eller bare ikke forstår hvordan å skrive app sikkert, 204 00:13:27,200 --> 00:13:30,260  og det er å sette app brukeren i fare. 205 00:13:30,260 --> 00:13:34,060 Jeg kommer til å gå gjennom disse i detalj og gi noen eksempler. 206 00:13:34,060 --> 00:13:39,620 For referanse, ønsket jeg å sette opp OWASP mobile topp 10-listen. 207 00:13:39,620 --> 00:13:43,590 Dette er de 10 spørsmålene som en gruppe på OWASP, 208 00:13:43,590 --> 00:13:48,900 Open Web Application Security Project, har de en arbeidsgruppe 209 00:13:48,900 --> 00:13:50,620 jobber med en mobil topp 10-listen. 210 00:13:50,620 --> 00:13:54,600 De har en veldig berømt web topp 10 liste, som er topp 10 211 00:13:54,600 --> 00:13:57,180 risikable ting du kan ha i en web-applikasjon. 212 00:13:57,180 --> 00:13:59,090 De gjør det samme for mobil, 213 00:13:59,090 --> 00:14:01,750 og deres liste er litt annerledes enn vår. 214 00:14:01,750 --> 00:14:03,670 6 ut av det 10 er de samme. 215 00:14:03,670 --> 00:14:06,020 De har fire som er forskjellige. 216 00:14:06,020 --> 00:14:10,550 Jeg tror de har en liten bit av en annen ta på 217 00:14:10,550 --> 00:14:14,490 risiko i mobile apps der mye av sine problemer 218 00:14:14,490 --> 00:14:20,490 er egentlig hvordan programmet kommuniserer til en back-end server 219 00:14:20,490 --> 00:14:23,100 eller hva som skjer på back-end server, 220 00:14:23,100 --> 00:14:29,220 ikke så mye apps som har risikoatferd som er like enkle klient apps. 221 00:14:29,220 --> 00:14:36,640 >> De i rødt her er forskjellene mellom de to listene. 222 00:14:36,640 --> 00:14:40,740 Og noen av mine forskerteam har faktisk bidratt til dette prosjektet, 223 00:14:40,740 --> 00:14:44,570 så vi får se hva som skjer over tid, men jeg tror det takeaway her er 224 00:14:44,570 --> 00:14:47,550 Vi vet egentlig ikke hva topp 10-listen er i mobile apps fordi 225 00:14:47,550 --> 00:14:50,510 de har egentlig bare eksistert i to eller tre år nå, 226 00:14:50,510 --> 00:14:57,750 og det har ikke vært nok tid til å virkelig forskning operativsystemene 227 00:14:57,750 --> 00:15:00,450 og hva de er i stand til, og det har ikke vært nok tid 228 00:15:00,450 --> 00:15:06,870 for den skadelige samfunnet, om du vil, å ha tilbrakt nok tid 229 00:15:06,870 --> 00:15:12,910 prøver å angripe brukere gjennom mobile apps, så jeg forventer at disse listene til å endre litt. 230 00:15:12,910 --> 00:15:18,720 Men for nå, disse er de beste 10 ting å bekymre seg for. 231 00:15:18,720 --> 00:15:24,150 Du lurer kanskje på mobilsiden hvor kommer den ondsinnede mobil kode- 232 00:15:24,150 --> 00:15:28,880 hvordan det kommer til enheten? 233 00:15:28,880 --> 00:15:35,210 North Carolina State har et prosjekt kalt Mobile Malware Genome Project 234 00:15:35,210 --> 00:15:39,520 hvor de er å samle så mye mobil malware som de kan, og analysere det, 235 00:15:39,520 --> 00:15:45,270 og de har brutt ned injeksjons vektorer at den mobile malware bruker, 236 00:15:45,270 --> 00:15:51,490 og 86% bruker en teknikk som kalles ompakking, 237 00:15:51,490 --> 00:15:54,160 og dette er bare på Android-plattformen 238 00:15:54,160 --> 00:15:56,720 kan du virkelig gjøre dette ompakking. 239 00:15:56,720 --> 00:16:03,100 >> Årsaken er Android kode er bygget med 240 00:16:03,100 --> 00:16:08,130 en Java bytekode som kalles Dalvik som er lett decompilable. 241 00:16:08,130 --> 00:16:12,460 Hva skurken kan gjøre er 242 00:16:12,460 --> 00:16:16,590 ta en Android-applikasjon, dekompilere det, 243 00:16:16,590 --> 00:16:20,120 setter sin ondsinnet kode, rekompilere det, 244 00:16:20,120 --> 00:16:28,070 og deretter sette den opp i App Store påstås å være en ny versjon av programmet, 245 00:16:28,070 --> 00:16:30,330 eller bare kanskje endre navnet på programmet. 246 00:16:30,330 --> 00:16:35,140 Hvis det var en slags lek, endre navnet litt, 247 00:16:35,140 --> 00:16:42,860 og så dette ompakking er hvordan 86% av mobile malware blir distribuert. 248 00:16:42,860 --> 00:16:45,810 Det er en annen teknikk som kalles oppdatering som er 249 00:16:45,810 --> 00:16:50,030 svært lik ompakking, men du faktisk ikke sette den ondsinnede koden i. 250 00:16:50,030 --> 00:16:52,870 Det du gjør er at du satt i et lite oppdateringsmekanismen. 251 00:16:52,870 --> 00:16:56,660 Du dekompilere, sette deg i en oppdatering mekanisme, og du rekompilere det, 252 00:16:56,660 --> 00:17:02,360 og deretter når programmet kjører det trekker ned malware på enheten. 253 00:17:02,360 --> 00:17:06,300 >> Langt de fleste er de to teknikkene. 254 00:17:06,300 --> 00:17:12,710 Det er egentlig ikke mye nedlasting drive-bys eller drive-by downloads på mobiler, 255 00:17:12,710 --> 00:17:15,890 som kan være som et phishing-angrep. 256 00:17:15,890 --> 00:17:18,200 Hei, sjekk ut dette virkelig kul nettside, 257 00:17:18,200 --> 00:17:21,020 eller må du gå til denne nettsiden og fylle ut dette skjemaet 258 00:17:21,020 --> 00:17:24,420 å holde fortsetter å gjøre noe. 259 00:17:24,420 --> 00:17:26,230 De er phishing-angrep. 260 00:17:26,230 --> 00:17:28,160 Det samme kan skje på den mobile plattformen der de 261 00:17:28,160 --> 00:17:33,830 peke på en mobil app å laste ned, si "Hei, dette er Bank of America." 262 00:17:33,830 --> 00:17:36,070 "Vi ser at du bruker dette programmet." 263 00:17:36,070 --> 00:17:38,540 "Du bør laste ned denne annen applikasjon." 264 00:17:38,540 --> 00:17:41,170 Teoretisk sett, som kunne jobbe. 265 00:17:41,170 --> 00:17:48,610 Kanskje det bare ikke blir brukt nok til å avgjøre om det er vellykket eller ikke, 266 00:17:48,610 --> 00:17:51,680 men de har funnet at mindre enn 1% av den tid som teknikken er brukt. 267 00:17:51,680 --> 00:17:56,130 Flertallet av tiden det er virkelig en ompakket kode. 268 00:17:56,130 --> 00:17:58,710 >> Det er en annen kategori som heter stående 269 00:17:58,710 --> 00:18:01,420 der noen bare bygger en helt ny søknad. 270 00:18:01,420 --> 00:18:04,020 De bygger et program som gir seg ut for å være noe. 271 00:18:04,020 --> 00:18:07,360 Det er ikke en ompakking av noe annet, og som har den ondsinnede koden. 272 00:18:07,360 --> 00:18:11,230 Det er brukt 14% av tiden. 273 00:18:11,230 --> 00:18:17,880 Nå ønsker jeg å snakke om hva som er den ondsinnede koden gjør? 274 00:18:17,880 --> 00:18:23,070 En av de første malware der ute 275 00:18:23,070 --> 00:18:25,490 du kan vurdere en spyware. 276 00:18:25,490 --> 00:18:27,620 Det spioner utgangspunktet på brukeren. 277 00:18:27,620 --> 00:18:30,470 Den samler e-postmeldinger, SMS-meldinger. 278 00:18:30,470 --> 00:18:32,340 Det viser på mikrofonen. 279 00:18:32,340 --> 00:18:37,330 Det høster kontakten boken, og det sender det til noen andre. 280 00:18:37,330 --> 00:18:40,870 Denne typen spyware finnes på PC, 281 00:18:40,870 --> 00:18:46,200 så det gir mening for folk å prøve å gjøre dette på mobile enheter. 282 00:18:46,200 --> 00:18:53,230 >> En av de første eksemplene på dette var et program som heter 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 ideen var hvis du hadde tilgang til noens Android-telefon 285 00:18:59,960 --> 00:19:03,450 at du ønsket å spionere på, så kanskje det er din ektefelle 286 00:19:03,450 --> 00:19:07,600 eller signifikante andre, og du ønsker å spionere på sine tekstmeldinger, 287 00:19:07,600 --> 00:19:11,200 du kan laste ned dette programmet og installere det og konfigurere den 288 00:19:11,200 --> 00:19:16,540 å sende en SMS-melding til deg med en kopi 289 00:19:16,540 --> 00:19:21,710 av hver SMS-melding de fikk. 290 00:19:21,710 --> 00:19:27,220 Dette er åpenbart i brudd av App Store når det gjelder service, 291 00:19:27,220 --> 00:19:32,040 og dette ble fjernet fra Android Marketplace innen 18 timer av det å være der, 292 00:19:32,040 --> 00:19:36,760 så et svært lite antall personer var i fare på grunn av dette. 293 00:19:36,760 --> 00:19:42,510 Nå tror jeg, dersom programmet ble kalt noe kanskje litt mindre provoserende 294 00:19:42,510 --> 00:19:48,690 som Secret SMS Replicator det sannsynligvis ville ha fungert mye bedre. 295 00:19:48,690 --> 00:19:52,870 Men det var litt opplagt. 296 00:19:52,870 --> 00:19:58,680 >> En av de tingene vi kan gjøre for å finne ut om apps har dette atferd som vi ikke vil ha 297 00:19:58,680 --> 00:20:01,410 er å inspisere koden. 298 00:20:01,410 --> 00:20:06,250 Dette er faktisk veldig lett å gjøre på Android fordi vi kan dekompilere apps. 299 00:20:06,250 --> 00:20:11,050 På iOS kan du bruke en disassembler som IDA Pro 300 00:20:11,050 --> 00:20:17,190 å se på hva APIer app som ringer og hva det gjør. 301 00:20:17,190 --> 00:20:20,680 Vi skrev vår egen binær statisk analysator for vår kode 302 00:20:20,680 --> 00:20:24,940 og vi gjør dette, og så hva du kan gjøre er at du kan si 303 00:20:24,940 --> 00:20:30,490 vil enheten gjør noe som er utgangspunktet spionere på meg eller sporer meg? 304 00:20:30,490 --> 00:20:33,360 Og jeg har noen eksempler her på iPhone. 305 00:20:33,360 --> 00:20:41,440 Denne første eksempel er hvordan man skal få tilgang til UUID på telefonen. 306 00:20:41,440 --> 00:20:47,060 Dette er faktisk noe som Apple har nettopp utestengt for nye applikasjoner, 307 00:20:47,060 --> 00:20:52,540 men gamle programmer som du kan ha som kjører på telefonen kan fortsatt gjøre dette, 308 00:20:52,540 --> 00:20:56,500 og slik at unike identifikatoren kan brukes til å spore dere 309 00:20:56,500 --> 00:21:00,440 på tvers av mange ulike programmer. 310 00:21:00,440 --> 00:21:07,180 >> På Android, har jeg et eksempel her for å få enhetens plassering. 311 00:21:07,180 --> 00:21:10,310 Du kan se at hvis at API-kall er det at app er sporing, 312 00:21:10,310 --> 00:21:15,000 og du kan se om det blir fint sted eller grov plassering. 313 00:21:15,000 --> 00:21:18,860 Og så på bunnen her, har jeg et eksempel på hvordan på Blackberry 314 00:21:18,860 --> 00:21:25,130 en søknad kan få tilgang til e-postmeldinger i innboksen din. 315 00:21:25,130 --> 00:21:27,660 Dette er den type ting du kan inspisere å se 316 00:21:27,660 --> 00:21:32,360 hvis programmet er å gjøre disse tingene. 317 00:21:32,360 --> 00:21:38,320 Den andre store kategorien av ondsinnet atferd, og dette er trolig den største kategorien nå, 318 00:21:38,320 --> 00:21:43,950 er uautorisert oppringing, uautorisert premium SMS tekstmeldinger 319 00:21:43,950 --> 00:21:46,080 eller uautoriserte betalinger. 320 00:21:46,080 --> 00:21:48,930 En annen ting som er unikt med telefonen 321 00:21:48,930 --> 00:21:52,700 er at enheten er koblet til en faktureringskonto, 322 00:21:52,700 --> 00:21:55,960 og når aktiviteter skjer på telefonen 323 00:21:55,960 --> 00:21:58,510 det kan skape kostnader. 324 00:21:58,510 --> 00:22:00,700 Du kan kjøpe ting over telefon, 325 00:22:00,700 --> 00:22:04,390 og når du sender en premium SMS tekstmelding du faktisk gir penger 326 00:22:04,390 --> 00:22:11,590 til konto innehaveren av telefonnummeret på den andre siden. 327 00:22:11,590 --> 00:22:17,420 Disse ble satt opp for å få aksjekurser eller få din daglige horoskop eller andre ting, 328 00:22:17,420 --> 00:22:21,680 men de kan settes opp til å bestille et produkt ved å sende en SMS. 329 00:22:21,680 --> 00:22:26,970 Folk gir penger til Røde Kors ved å sende en tekstmelding. 330 00:22:26,970 --> 00:22:30,650 Du kan gi $ 10 på den måten. 331 00:22:30,650 --> 00:22:34,190 >> Angriperne, hva de har gjort er de satt opp 332 00:22:34,190 --> 00:22:38,750 kontoer i utlandet, og de bygger inn i malware 333 00:22:38,750 --> 00:22:42,840 at telefonen vil sende en premium SMS tekstmelding, 334 00:22:42,840 --> 00:22:47,700 si, et par ganger om dagen, og på slutten av den måneden du oppdager at du har brukt 335 00:22:47,700 --> 00:22:52,090 titalls eller kanskje hundrevis av dollar, og de går unna med pengene. 336 00:22:52,090 --> 00:22:57,280 Dette ble så ille at dette var den aller første som Android 337 00:22:57,280 --> 00:23:00,760 Market eller Google sted-det var Android Marketplace på den tiden, 338 00:23:00,760 --> 00:23:04,430 og det er nå Google Play-det første som Google begynte å sjekke etter. 339 00:23:04,430 --> 00:23:08,700 Da Google startet med å distribuere Android-apps i sin App Store 340 00:23:08,700 --> 00:23:11,350 de sa de ikke skulle se etter noe. 341 00:23:11,350 --> 00:23:15,630 Vi vil trekke apps når vi har fått beskjed om at de har brutt våre vilkår for tjenesten, 342 00:23:15,630 --> 00:23:17,520 men vi kommer ikke til å se etter noe. 343 00:23:17,520 --> 00:23:24,350 Vel, om et år siden det ble så ille med denne premium SMS malware 344 00:23:24,350 --> 00:23:28,030 at dette er den aller første de begynte å sjekke etter. 345 00:23:28,030 --> 00:23:31,770 Hvis en app kan sende SMS-meldinger 346 00:23:31,770 --> 00:23:34,750 de videre manuelt granske det programmet. 347 00:23:34,750 --> 00:23:38,770 De ser for APIer som kaller dette, 348 00:23:38,770 --> 00:23:40,580 og nå siden da Google har utvidet, 349 00:23:40,580 --> 00:23:46,900 men dette var den første tingen som de begynte å se etter. 350 00:23:46,900 --> 00:23:50,690 >> Noen andre apps som gjorde noen SMS-tekstmeldinger, 351 00:23:50,690 --> 00:23:56,980 denne Android Qicsomos, tror jeg det kalles. 352 00:23:56,980 --> 00:24:02,670 Det var denne aktuelle hendelsen på mobilen hvor dette CarrierIQ kom ut 353 00:24:02,670 --> 00:24:07,720 som spyware satt på enheten ved bærere, 354 00:24:07,720 --> 00:24:10,820 slik at folk ville vite om deres telefon ble utsatt for dette, 355 00:24:10,820 --> 00:24:13,890 og dette var en gratis app som testet det. 356 00:24:13,890 --> 00:24:17,520 Vel, selvfølgelig, hva dette programmet gjorde var det sendt premium SMS tekstmeldinger, 357 00:24:17,520 --> 00:24:20,090 så ved å teste for å se om du er infisert med spyware 358 00:24:20,090 --> 00:24:24,930 du lastet malware på enheten din. 359 00:24:24,930 --> 00:24:27,310 Vi så det samme skje i siste Super Bowl. 360 00:24:27,310 --> 00:24:33,180 Det var en falsk versjon av Madden fotballkamp 361 00:24:33,180 --> 00:24:38,320 som sendte premium SMS tekstmeldinger. 362 00:24:38,320 --> 00:24:45,750 Det faktisk forsøkt å lage en bot nettverk også på enheten. 363 00:24:45,750 --> 00:24:48,090 Her har jeg noen eksempler. 364 00:24:48,090 --> 00:24:52,640 Interessant nok, Apple var ganske smart, 365 00:24:52,640 --> 00:24:58,470 og de ikke tillater programmer å sende SMS-meldinger i det hele tatt. 366 00:24:58,470 --> 00:25:00,350 Ingen app kan gjøre det. 367 00:25:00,350 --> 00:25:03,530 Det er en flott måte å bli kvitt en hel klasse av sårbarhet, 368 00:25:03,530 --> 00:25:09,040 men på Android kan du gjøre det, og selvfølgelig, på Blackberry kan du gjøre det også. 369 00:25:09,040 --> 00:25:13,060 Det er interessant at på Blackberry alt du trenger er internett-tillatelser 370 00:25:13,060 --> 00:25:18,370 å sende en SMS-melding. 371 00:25:18,370 --> 00:25:21,580 >> Den andre tingen virkelig at vi ser etter 372 00:25:21,580 --> 00:25:24,780 når vi er ute etter å se om noe er skadelig er bare noen form for 373 00:25:24,780 --> 00:25:28,100 uautorisert nettverksaktivitet, som ser på nettverksaktivitet 374 00:25:28,100 --> 00:25:31,570 app er ment til å ha sin funksjonalitet, 375 00:25:31,570 --> 00:25:35,380 og se på denne annen nettverksaktivitet. 376 00:25:35,380 --> 00:25:43,380 Kanskje en app, for å jobbe, må få data over HTTP, 377 00:25:43,380 --> 00:25:47,500 men hvis det gjør ting via e-post eller SMS eller Bluetooth eller noe sånt 378 00:25:47,500 --> 00:25:52,890 nå som app kan potensielt være skadelig, så dette er en annen ting du kan inspisere for. 379 00:25:52,890 --> 00:26:00,430 Og på dette lysbildet her jeg har noen eksempler på det. 380 00:26:00,430 --> 00:26:05,950 En annen interessant ting vi så med malware som skjedde tilbake i 2009, 381 00:26:05,950 --> 00:26:07,600 og det skjedde på en ny måte. 382 00:26:07,600 --> 00:26:11,390 Jeg vet ikke om det har skjedd så mye siden den gang, men det var en app 383 00:26:11,390 --> 00:26:15,140 som etterlignet en annen applikasjon. 384 00:26:15,140 --> 00:26:21,700 Det var et sett med programmer, og det ble kalt 09Droid angrep, 385 00:26:21,700 --> 00:26:29,770 og noen bestemte seg for at det var mange små, regionale, mellomstore banker 386 00:26:29,770 --> 00:26:32,260 som ikke har nettbank-applikasjoner, 387 00:26:32,260 --> 00:26:36,870 så hva de gjorde var at de bygget ca 50 nettbankapplikasjoner 388 00:26:36,870 --> 00:26:39,410 at alt de gjorde var å ta inn brukernavn og passord 389 00:26:39,410 --> 00:26:42,190 og omdirigere deg til nettsiden. 390 00:26:42,190 --> 00:26:47,470 Og så satte de alle disse opp i Google Marketplace, 391 00:26:47,470 --> 00:26:51,530 i Android Marketplace, og når noen søkte for å se om deres bank 392 00:26:51,530 --> 00:26:56,000 hadde et program de ville finne den falske applikasjonen, 393 00:26:56,000 --> 00:27:01,230 som samlet sine akkreditiver og deretter omdirigert dem til deres hjemmeside. 394 00:27:01,230 --> 00:27:06,640 Måten dette faktisk ble-apps var der oppe for et par uker, 395 00:27:06,640 --> 00:27:09,050 og det var tusenvis av nedlastinger. 396 00:27:09,050 --> 00:27:12,910 >> Måten dette kom frem i lyset var noen hadde et problem 397 00:27:12,910 --> 00:27:15,740 med ett av programmene, og de kalte sin bank, 398 00:27:15,740 --> 00:27:18,390 og de kalte sin banks kundeservice linje og sa, 399 00:27:18,390 --> 00:27:21,180 "Jeg har et problem med mobilbankapplikasjon." 400 00:27:21,180 --> 00:27:23,460 "Kan du hjelpe meg?" 401 00:27:23,460 --> 00:27:26,540 Og de sa: "Vi har en mobilbankapplikasjon." 402 00:27:26,540 --> 00:27:28,120 Det startet etterforskningen. 403 00:27:28,120 --> 00:27:31,200 At banken heter Google, og deretter Google så og sa, 404 00:27:31,200 --> 00:27:37,220 "Wow, har samme forfatter skrevet 50 bankapplikasjoner," og tok dem alle ned. 405 00:27:37,220 --> 00:27:43,410 Men sikkert dette kunne skje igjen. 406 00:27:43,410 --> 00:27:51,790 Det er en liste over alle de forskjellige bankene her 407 00:27:51,790 --> 00:27:55,870 som var en del av denne svindelen. 408 00:27:55,870 --> 00:28:02,050 Den andre tingen en app kan gjøre er å presentere UI av et annet program. 409 00:28:02,050 --> 00:28:06,430 Mens det kjører det kunne dukke opp på Facebook-UI. 410 00:28:06,430 --> 00:28:09,540 Det står at du må sette inn ditt brukernavn og passord for å fortsette 411 00:28:09,540 --> 00:28:15,090 eller sette opp noe brukernavn og passord UI for et nettsted 412 00:28:15,090 --> 00:28:18,420 at kanskje brukeren benytter bare for å prøve å lure brukeren 413 00:28:18,420 --> 00:28:21,340 til å sette sine akkreditiver i. 414 00:28:21,340 --> 00:28:25,590 Dette er virkelig en rett parallell av e-phishing-angrep 415 00:28:25,590 --> 00:28:28,210 der noen sender deg en e-postmelding 416 00:28:28,210 --> 00:28:33,050 og gir deg i utgangspunktet en falsk UI for et nettsted 417 00:28:33,050 --> 00:28:37,320 at du har tilgang til. 418 00:28:37,320 --> 00:28:41,590 >> Den andre tingen vi ser etter i ondsinnet kode er system modifikasjon. 419 00:28:41,590 --> 00:28:48,160 Du kan se etter alle API-kall som krever root privilegium 420 00:28:48,160 --> 00:28:50,870 å utføre riktig. 421 00:28:50,870 --> 00:28:56,160 Endre enhetens web proxy ville være noe som en søknad 422 00:28:56,160 --> 00:28:59,530 bør ikke være i stand til å gjøre. 423 00:28:59,530 --> 00:29:03,030 Men hvis programmet har kode i det å gjøre det 424 00:29:03,030 --> 00:29:05,960 du vet at det er nok en ondsinnet applikasjon 425 00:29:05,960 --> 00:29:09,620 eller svært stor sannsynlighet for å være et skadelig program, 426 00:29:09,620 --> 00:29:13,910 og så hva som ville skje er at app ville ha noen måte å eskalere privilegium. 427 00:29:13,910 --> 00:29:17,200 Det ville ha noen opptrapping av privilegier utnytte 428 00:29:17,200 --> 00:29:20,730 i søknaden, og deretter når det eskalerte privilegier 429 00:29:20,730 --> 00:29:23,800 det ville gjøre disse system modifikasjoner. 430 00:29:23,800 --> 00:29:28,010 Du kan finne malware som har privilegieopptrapping 431 00:29:28,010 --> 00:29:32,550 i det selv uten å vite hvordan det privilegium opptrapping 432 00:29:32,550 --> 00:29:37,960 utnytte kommer til å skje, og det er en fin og enkel måte 433 00:29:37,960 --> 00:29:41,220 å lete etter malware. 434 00:29:41,220 --> 00:29:46,030 DroidDream var trolig den mest berømte stykke Android malware. 435 00:29:46,030 --> 00:29:50,530 Jeg tror det påvirket om lag 250.000 brukere i løpet av noen få dager 436 00:29:50,530 --> 00:29:52,810 før den ble funnet. 437 00:29:52,810 --> 00:29:56,890 De pakket 50 falske søknader, 438 00:29:56,890 --> 00:30:00,370 sette dem i Android app store, 439 00:30:00,370 --> 00:30:10,940 og i hovedsak er det brukt Android jailbreak-kode for å eskalere rettigheter 440 00:30:10,940 --> 00:30:16,380 og deretter installere en kommando og kontroll og slå alle ofrene 441 00:30:16,380 --> 00:30:20,690 inn i en bot net, men du kunne ha oppdaget dette 442 00:30:20,690 --> 00:30:24,170 hvis du skannet søknaden og bare leter etter 443 00:30:24,170 --> 00:30:32,230 API-kall som krevde root tillatelse til å utføre riktig. 444 00:30:32,230 --> 00:30:40,150 >> Og det er et eksempel her jeg har som er å endre proxy, 445 00:30:40,150 --> 00:30:46,380 og dette faktisk er kun tilgjengelig på Android. 446 00:30:46,380 --> 00:30:49,070 Du kan se jeg gir deg en masse eksempler på Android 447 00:30:49,070 --> 00:30:53,990 fordi det er der de mest aktive malware økosystem er 448 00:30:53,990 --> 00:30:58,690 fordi det er veldig lett for en angriper å få ondsinnet kode 449 00:30:58,690 --> 00:31:01,470 inn i Android Marketplace. 450 00:31:01,470 --> 00:31:06,480 Det er ikke så lett å gjøre det i Apple App Store 451 00:31:06,480 --> 00:31:10,250 fordi Apple krever utviklere å identifisere seg 452 00:31:10,250 --> 00:31:12,790 og registrere koden. 453 00:31:12,790 --> 00:31:20,340 De faktisk sjekke hvem du er, og Apple er faktisk saumfarer søknadene. 454 00:31:20,340 --> 00:31:27,450 Vi ser ikke mye ekte malware der enheten blir kompromittert. 455 00:31:27,450 --> 00:31:32,250 Jeg vil snakke om noen eksempler der det er virkelig personvern som begynner å bli kompromittert, 456 00:31:32,250 --> 00:31:38,460 og det er det som egentlig skjer på Apple-enheten. 457 00:31:38,460 --> 00:31:44,090 En annen ting å se etter ondsinnet kode, risikabelt kode i enheter 458 00:31:44,090 --> 00:31:50,300 er logiske eller tidsinnstilte bomber, og tidsinnstilte bomber er trolig 459 00:31:50,300 --> 00:31:53,370 mye lettere å se etter enn logiske bomber. 460 00:31:53,370 --> 00:31:57,030 Men med tidsinnstilte bomber, hva du kan gjøre er at du kan se etter 461 00:31:57,030 --> 00:32:04,760 stedene i koden hvor tiden blir testet eller en absolutt tid er sett for 462 00:32:04,760 --> 00:32:08,190 før visse funksjoner i appen som skjer. 463 00:32:08,190 --> 00:32:14,200 Og dette kan gjøres for å skjule at aktivitet fra brukeren, 464 00:32:14,200 --> 00:32:17,510 så det skjer sent på kvelden. 465 00:32:17,510 --> 00:32:24,350 DroidDream gjorde all sin aktivitet mellom 23:00 og 8 AM lokal tid 466 00:32:24,350 --> 00:32:30,650 å prøve å gjøre det mens brukeren ikke kan bruke sin enhet. 467 00:32:30,650 --> 00:32:38,680 >> En annen grunn til å gjøre dette på er hvis folk bruker atferdsanalyse av et program, 468 00:32:38,680 --> 00:32:43,430 kjører programmet i en sandkasse for å se hva den virkemåten til programmet er, 469 00:32:43,430 --> 00:32:51,090 de kan bruke tidsbasert logikk for å gjøre aktiviteten 470 00:32:51,090 --> 00:32:54,640 når programmet er ikke i sandkassen. 471 00:32:54,640 --> 00:33:01,520 For eksempel, en App Store som Apple 472 00:33:01,520 --> 00:33:07,940 kjører programmet, men de sannsynligvis ikke kjøre hver applikasjon for, si, 30 dager 473 00:33:07,940 --> 00:33:10,550 før godkjenne det, slik at du kan sette 474 00:33:10,550 --> 00:33:14,120 logikken i applikasjonen som sa, ok, bare gjør det dårlig ting 475 00:33:14,120 --> 00:33:20,490 etter 30 dager har gått av eller etter 30 dager etter publiseringsdato av søknaden, 476 00:33:20,490 --> 00:33:27,020 og som kan bidra til at ondsinnet kode skjul fra folk inspeksjon for det. 477 00:33:27,020 --> 00:33:30,050 Hvis anti-virus selskaper kjører ting i sandkasser 478 00:33:30,050 --> 00:33:36,370 eller app butikker selv er dette kan hjelpe 479 00:33:36,370 --> 00:33:39,260 skjule at fra det inspeksjon. 480 00:33:39,260 --> 00:33:43,020 Nå, baksiden av det er det er lett å finne med statisk analyse, 481 00:33:43,020 --> 00:33:46,170 så faktisk inspisere koden du kan se etter alle steder 482 00:33:46,170 --> 00:33:54,010 der programmet tester tid og inspisere den måten. 483 00:33:54,010 --> 00:33:58,850 Og her har jeg noen eksempler på disse tre forskjellige plattformer 484 00:33:58,850 --> 00:34:05,640 hvordan tiden kan bli sjekket for av app maker 485 00:34:05,640 --> 00:34:10,520 slik at du vet hva du skal se etter hvis du inspisere app statisk. 486 00:34:10,520 --> 00:34:14,570 >> Jeg bare gikk gjennom en hel haug med forskjellige ondsinnede aktiviteter 487 00:34:14,570 --> 00:34:18,969 som vi har sett i naturen, men hvilke som er mest utbredt? 488 00:34:18,969 --> 00:34:23,940 Samme studie fra North Carolina State Mobile Genome Project 489 00:34:23,940 --> 00:34:28,560 publisert noen data, og det var i utgangspunktet fire områder 490 00:34:28,560 --> 00:34:32,850 at de så hvor det var mye aktivitet. 491 00:34:32,850 --> 00:34:35,370 37% av apps gjorde opptrapping av privilegier, 492 00:34:35,370 --> 00:34:38,429 så de hadde noen form for jailbreak-kode i det 493 00:34:38,429 --> 00:34:42,070 hvor de prøvde å eskalere privilegier, slik at de kunne 494 00:34:42,070 --> 00:34:48,360 gjør API-kommandoer som kjører som operativsystem. 495 00:34:48,360 --> 00:34:52,520 45% av apps der ute gjorde premium SMS, 496 00:34:52,520 --> 00:34:57,260 så det er en stor prosentandel som prøver å direkte tjene penger. 497 00:34:57,260 --> 00:35:02,640 93% gjorde fjernkontroll, slik at de forsøkte å sette opp en bot net, en mobil bot net. 498 00:35:02,640 --> 00:35:08,990 Og 45% høstet identifiseringsinformasjon 499 00:35:08,990 --> 00:35:16,230 som telefonnumre, UUID, GPS-posisjon, brukerkontoer, 500 00:35:16,230 --> 00:35:22,870 og dette legger opp til mer enn 100 fordi de fleste malware prøver å gjøre noen av disse tingene. 501 00:35:22,870 --> 00:35:27,070 >> Jeg kommer til å bytte til den andre halvparten og snakke om kode sårbarheter. 502 00:35:27,070 --> 00:35:29,480 Dette er den andre halvdelen av risikofylt aktivitet. 503 00:35:29,480 --> 00:35:33,450 Det er her i hovedsak utvikleren er å gjøre feil. 504 00:35:33,450 --> 00:35:37,210 En legitim utvikler skrive en legitim app 505 00:35:37,210 --> 00:35:41,830 gjør feil eller er uvitende om risikoen ved den mobile plattformen. 506 00:35:41,830 --> 00:35:44,780 De vet bare ikke hvordan å lage en sikker mobil app, 507 00:35:44,780 --> 00:35:47,700 eller noen ganger utvikleren ikke bryr seg om å sette brukeren i fare. 508 00:35:47,700 --> 00:35:50,850 Noen ganger en del av sin forretningsmodell kan være 509 00:35:50,850 --> 00:35:54,610 høsting brukerens personlige informasjon. 510 00:35:54,610 --> 00:35:58,090 Det er liksom den andre kategorien, og det er derfor noe av dette ondsinnet 511 00:35:58,090 --> 00:36:03,200 versus legitime begynner å blø over fordi det er forskjell på meninger 512 00:36:03,200 --> 00:36:10,440 mellom hva brukeren ønsker og hva brukeren anser risikabelt 513 00:36:10,440 --> 00:36:13,050 og hva programutvikleren anser risikabelt. 514 00:36:13,050 --> 00:36:18,380 Selvfølgelig er det ikke søknaden utbyggers data i de fleste tilfeller. 515 00:36:18,380 --> 00:36:22,030 >> Og så til slutt, er en utvikler kan koble på en annen måte dette skjer 516 00:36:22,030 --> 00:36:28,600 et felles bibliotek som har sårbarheter eller denne risikoatferd i det 517 00:36:28,600 --> 00:36:32,480 Uvisst dem. 518 00:36:32,480 --> 00:36:37,060 Den første kategorien er sensitive lekkasje data, 519 00:36:37,060 --> 00:36:40,030 og dette er når programmet samler inn informasjon 520 00:36:40,030 --> 00:36:44,980 som plassering, adressebok informasjon, eierinformasjon 521 00:36:44,980 --> 00:36:48,000 og sender det av enheten. 522 00:36:48,000 --> 00:36:53,050 Og når den er av enheten, vet vi ikke hva som skjer med denne informasjonen. 523 00:36:53,050 --> 00:36:57,170 Det kan lagres usikret av programutvikleren. 524 00:36:57,170 --> 00:37:02,070 Vi har sett programutviklere bli kompromittert, 525 00:37:02,070 --> 00:37:05,820 og dataene som de er lagring blir tatt. 526 00:37:05,820 --> 00:37:10,970 Dette skjedde for noen måneder siden til en utvikler ned i Florida 527 00:37:10,970 --> 00:37:21,660 hvor et stort antall-det var iPad UUID og enhetsnavn 528 00:37:21,660 --> 00:37:25,270 ble lekket fordi noen, jeg tror det var anonym, 529 00:37:25,270 --> 00:37:29,460 hevdet å gjøre dette, brøt seg inn i denne utviklerens servere 530 00:37:29,460 --> 00:37:34,920 og stjal millioner av iPad UUID 531 00:37:34,920 --> 00:37:37,390 og datamaskinnavn. 532 00:37:37,390 --> 00:37:40,260 Ikke den mest risikable informasjon, 533 00:37:40,260 --> 00:37:46,820 men hva hvis det var lagring av brukernavn og passord 534 00:37:46,820 --> 00:37:48,170 og privatadresser? 535 00:37:48,170 --> 00:37:51,100 Det er mange apps som lagrer den slags informasjon. 536 00:37:51,100 --> 00:37:53,230 Risikoen er der. 537 00:37:53,230 --> 00:37:56,620 >> En annen ting som kan skje er hvis utbygger ikke tar vare 538 00:37:56,620 --> 00:38:01,370 å sikre datakanalen, og det er en annen stor sårbarhet Jeg kommer til å snakke om, 539 00:38:01,370 --> 00:38:05,160 at data sendes i klartekst. 540 00:38:05,160 --> 00:38:09,040 Hvis brukeren er på et offentlig Wi-Fi-nettverk 541 00:38:09,040 --> 00:38:12,330 eller noen er sniffing internett et sted 542 00:38:12,330 --> 00:38:19,260 langs den bane som data blir utsatt for. 543 00:38:19,260 --> 00:38:23,790 En svært kjent sak av denne informasjonen lekkasje skjedde med Pandora, 544 00:38:23,790 --> 00:38:27,250 og dette er noe vi forsket på Veracode. 545 00:38:27,250 --> 00:38:33,200 Vi hørte at det var en-Jeg tror det var en Federal Trade Commission 546 00:38:33,200 --> 00:38:35,310 Undersøkelsen skjer med Pandora. 547 00:38:35,310 --> 00:38:39,830 Vi sa, "Hva skjer der? La oss begynne å grave i Pandora program." 548 00:38:39,830 --> 00:38:46,690 Og hva vi bestemt var Pandora-programmet samlet 549 00:38:46,690 --> 00:38:51,270 kjønn og alder, 550 00:38:51,270 --> 00:38:56,660 og det har også vist GPS-posisjonen din, og Pandora søknad 551 00:38:56,660 --> 00:39:00,200 gjorde dette for det de sa var legitime grunner. 552 00:39:00,200 --> 00:39:05,360 Musikken som de skulle spille-Pandora er en musikkstreaming app- 553 00:39:05,360 --> 00:39:07,530 musikken de spilte var bare lisensiert i USA, 554 00:39:07,530 --> 00:39:13,020 så de måtte sjekke for å overholde sine lisensavtaler som de hadde 555 00:39:13,020 --> 00:39:17,240 for musikken at brukeren var i USA. 556 00:39:17,240 --> 00:39:25,070 De ønsket også å være i samsvar med foreldrerådgivende 557 00:39:25,070 --> 00:39:33,790 rundt voksent språk i musikk, 558 00:39:33,790 --> 00:39:37,500 og så det er et frivillig program, men de ønsket å være i samsvar med det 559 00:39:37,500 --> 00:39:43,010 og ikke spille eksplisitte tekster til barn 13 og under. 560 00:39:43,010 --> 00:39:46,280 >> De hadde legitime grunner for å samle inn disse dataene. 561 00:39:46,280 --> 00:39:49,160 Deres app hadde tillatelse til å gjøre det. 562 00:39:49,160 --> 00:39:52,000 Brukere trodde dette var lovlig. Men hva skjedde? 563 00:39:52,000 --> 00:39:55,810 De knyttet sammen i tre eller fire ulike annonsebiblioteker. 564 00:39:55,810 --> 00:39:59,140 Nå plutselig alle disse annonsebibliotekene 565 00:39:59,140 --> 00:40:02,970 får tilgang til den samme informasjonen. 566 00:40:02,970 --> 00:40:05,830 Annonse biblioteker, hvis du ser på koden i annonse bibliotekene 567 00:40:05,830 --> 00:40:08,430 hva de gjør er hver annonse bibliotek sier 568 00:40:08,430 --> 00:40:11,340 "Har min app har tillatelse til å få GPS-posisjon?" 569 00:40:11,340 --> 00:40:14,890 "Å, det gjør? Ok, fortell meg GPS-posisjonen." 570 00:40:14,890 --> 00:40:16,620 Hver eneste annonse biblioteket gjør det, 571 00:40:16,620 --> 00:40:19,740 og hvis programmet ikke har GPS tillatelse 572 00:40:19,740 --> 00:40:23,460 det vil ikke være i stand til å få det, men hvis den gjør det, vil det bli det. 573 00:40:23,460 --> 00:40:26,240 Dette er hvor forretningsmodellen av annonse bibliotekene 574 00:40:26,240 --> 00:40:31,160 er i motsetning til personvernet til brukeren. 575 00:40:31,160 --> 00:40:34,980 Og det har vært studier der ute som vil si at hvis du kjenner alderen 576 00:40:34,980 --> 00:40:38,430 av en person, og du vet hvor de befinner seg 577 00:40:38,430 --> 00:40:42,530 hvor de sover om natten, fordi du har sine GPS-koordinater 578 00:40:42,530 --> 00:40:46,030 mens de kanskje sover, vet du nøyaktig hvem denne personen er 579 00:40:46,030 --> 00:40:50,230 fordi du kan bestemme hvilke medlem av denne husstanden er den personen. 580 00:40:50,230 --> 00:40:54,780 Virkelig dette er å identifisere til annonsører 581 00:40:54,780 --> 00:40:59,530 nøyaktig hvem du er, og det ser ut som det var legitimt. 582 00:40:59,530 --> 00:41:02,800 Jeg vil bare ha min streaming av musikk, og dette er den eneste måten å få det. 583 00:41:02,800 --> 00:41:05,370 >> Vel, vi utsatt dette. 584 00:41:05,370 --> 00:41:08,030 Vi skrev dette opp i flere blogginnlegg, 585 00:41:08,030 --> 00:41:13,280 og det viste seg at noen fra Rolling Stone magazine 586 00:41:13,280 --> 00:41:18,810 lese en av våre blogginnlegg, og skrev sin egen blogg i Rolling Stone om det, 587 00:41:18,810 --> 00:41:22,120 og allerede neste dag Pandora trodde det var en god idé 588 00:41:22,120 --> 00:41:27,600 å fjerne annonse bibliotekene fra sitt program. 589 00:41:27,600 --> 00:41:31,270 Så vidt jeg vet de er de eneste, de skal commended. 590 00:41:31,270 --> 00:41:35,770 Jeg tror de er den eneste freemium type app som har gjort dette. 591 00:41:35,770 --> 00:41:38,660 Alle de andre Freemium apps har denne samme atferd, 592 00:41:38,660 --> 00:41:41,780 så du er nødt til å tenke på hva slags data du gir 593 00:41:41,780 --> 00:41:48,330 disse Freemium applikasjoner fordi det er alt kommer til annonsører. 594 00:41:48,330 --> 00:41:53,390 Praetorian også gjorde en studie om delte biblioteker og sa, 595 00:41:53,390 --> 00:41:57,100 "La oss se på hva som delte biblioteker er de beste delte biblioteker", og dette var dataene. 596 00:41:57,100 --> 00:41:59,420 >> De analyserte 53 000 apps, 597 00:41:59,420 --> 00:42:01,900 og nummer en delt bibliotek var Admob. 598 00:42:01,900 --> 00:42:06,060 Det var faktisk i 38% av søknadene der ute, 599 00:42:06,060 --> 00:42:08,800 så 38% av søknadene du bruker 600 00:42:08,800 --> 00:42:11,250 er trolig høste dine personlige opplysninger 601 00:42:11,250 --> 00:42:16,650 og sende det til annonsenettverk. 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 de ned på bunnen, Google Ads, Flurry, 604 00:42:22,960 --> 00:42:26,600 Mob City og Millennial Media, 605 00:42:26,600 --> 00:42:30,500 disse er alle annonseselskaper, og deretter, interessant nok, 606 00:42:30,500 --> 00:42:33,500 4% knyttet i Facebook-biblioteket 607 00:42:33,500 --> 00:42:38,870 sannsynligvis å gjøre autentisering via Facebook 608 00:42:38,870 --> 00:42:40,810 slik app kan autentisere Facebook. 609 00:42:40,810 --> 00:42:44,660 Men det betyr også aksjeselskap Facebook kontrollerer koden 610 00:42:44,660 --> 00:42:49,010 som kjører i 4% av Android mobile apps der ute, 611 00:42:49,010 --> 00:42:53,490 og de har tilgang til alle data som at programmet har tillatelse til å få på. 612 00:42:53,490 --> 00:42:57,170 Facebook hovedsak prøver å selge annonseplass. 613 00:42:57,170 --> 00:43:00,120 Det er deres forretningsmodell. 614 00:43:00,120 --> 00:43:02,920 >> Hvis du ser på hele dette økosystemet med disse tillatelsene 615 00:43:02,920 --> 00:43:07,740 og delte biblioteker du begynner å se at 616 00:43:07,740 --> 00:43:13,850 du har mye risiko i en tilsynelatende legitimt program. 617 00:43:13,850 --> 00:43:19,360 Det samme lignende ting som har skjedd med Pandora 618 00:43:19,360 --> 00:43:22,340 skjedde med et program som heter Path, 619 00:43:22,340 --> 00:43:27,660 og bane trodde de var å være hjelpsomme, vennlige utviklere. 620 00:43:27,660 --> 00:43:32,160 De var bare prøver å gi deg en god brukeropplevelse, 621 00:43:32,160 --> 00:43:37,810 og det viste seg at uten å spørre brukeren eller fortelle brukeren noe- 622 00:43:37,810 --> 00:43:40,400 og dette skjedde 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 banen søknaden var flytte hele adresseboken 625 00:43:48,890 --> 00:43:52,830 og sender den til bane bare når du installerte og kjørte programmet, 626 00:43:52,830 --> 00:43:55,840 og de ikke fortelle deg om dette. 627 00:43:55,840 --> 00:43:58,750 De syntes det var veldig nyttig for deg 628 00:43:58,750 --> 00:44:04,040 å være i stand til å dele med alle menneskene i adresseboken din 629 00:44:04,040 --> 00:44:06,920 at du bruker Sti søknaden. 630 00:44:06,920 --> 00:44:09,490 >> Vel, tydeligvis Sti trodde dette var bra for deres bedrift. 631 00:44:09,490 --> 00:44:13,510 Ikke så stor for brukeren. 632 00:44:13,510 --> 00:44:19,020 Du må tenke at det er én ting om kanskje en tenåring 633 00:44:19,020 --> 00:44:23,700 bruker dette programmet, og deres mange venner er der inne, 634 00:44:23,700 --> 00:44:29,360 men hva hvis det er administrerende direktør i et selskap som installerer Sti 635 00:44:29,360 --> 00:44:33,170 og deretter plutselig sin helhet adresseboken er der oppe? 636 00:44:33,170 --> 00:44:38,310 Du kommer til å få mye potensielt verdifull kontaktinformasjon 637 00:44:38,310 --> 00:44:40,920 for mange mennesker. 638 00:44:40,920 --> 00:44:44,500 En reporter fra New York Times, kan du være i stand til å få telefonnummeret 639 00:44:44,500 --> 00:44:47,380 for ex presidenter fra sin adressebok, 640 00:44:47,380 --> 00:44:54,780 så åpenbart mye sensitiv informasjon blir overført med noe sånt som dette. 641 00:44:54,780 --> 00:44:58,090 Det var slik en stor klaff om dette at Sti beklaget. 642 00:44:58,090 --> 00:45:01,610 De endret sin app, og det enda påvirket Apple. 643 00:45:01,610 --> 00:45:06,950 Apple sa: "Vi kommer til å tvinge app-leverandører til å be brukere 644 00:45:06,950 --> 00:45:12,650 hvis de kommer til å samle hele sin adressebok. " 645 00:45:12,650 --> 00:45:15,360 >> Det ser ut som det som skjer her er 646 00:45:15,360 --> 00:45:19,430 når det er ett stort brudd på personvern, og det gjør pressen 647 00:45:19,430 --> 00:45:21,680 vi ser en endring der ute. 648 00:45:21,680 --> 00:45:23,230 Men selvfølgelig, det er andre ting der ute. 649 00:45:23,230 --> 00:45:27,440 Linkedin-program høster kalenderoppføringer, 650 00:45:27,440 --> 00:45:34,530 men Apple gjør ikke brukeren bedt om det. 651 00:45:34,530 --> 00:45:38,030 Kalenderoppføringer kan ha sensitiv informasjon på dem også. 652 00:45:38,030 --> 00:45:40,000 Hvor har du tenkt å trekke linjen? 653 00:45:40,000 --> 00:45:43,960 Dette er virkelig slags et utviklende sted 654 00:45:43,960 --> 00:45:47,640 hvor det er egentlig ingen god standard der ute 655 00:45:47,640 --> 00:45:51,990 for brukerne å forstå når deres informasjon kommer til å være i faresonen 656 00:45:51,990 --> 00:45:57,820 og når de kommer til å vite det blir tatt. 657 00:45:57,820 --> 00:46:03,040 Vi skrev en app på Veracode kalt Adios, 658 00:46:03,040 --> 00:46:08,350 og egentlig tillot det deg å peke app på din iTunes-katalogen 659 00:46:08,350 --> 00:46:12,550 og se på alle de programmene som ble høsting din fulle adressebok. 660 00:46:12,550 --> 00:46:19,760 Og som du kan se på denne listen 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 trenger adresseboken? 663 00:46:24,050 --> 00:46:29,160 Jeg vet ikke, men det gjør liksom. 664 00:46:29,160 --> 00:46:32,310 >> Dette er noe som mange, mange programmer gjør. 665 00:46:32,310 --> 00:46:34,780 Du kan inspisere koden for dette. 666 00:46:34,780 --> 00:46:38,660 Det er veldefinerte APIer for iPhone, Android og Blackberry 667 00:46:38,660 --> 00:46:42,120 å komme på adresseboken. 668 00:46:42,120 --> 00:46:48,520 Du kan virkelig enkelt kontrollere for dette, og dette er hva vi gjorde i vår Adios søknad. 669 00:46:48,520 --> 00:46:52,320 Den neste kategorien, Unsafe Sensitive Data Storage, 670 00:46:52,320 --> 00:46:55,670 er noe der utviklere ta noe som en pinne eller et kontonummer 671 00:46:55,670 --> 00:46:58,530 eller et passord og oppbevare det i klartekst på enheten. 672 00:46:58,530 --> 00:47:02,310 Enda verre, de kan lagre det i et område på telefonen 673 00:47:02,310 --> 00:47:06,820 som er globalt tilgjengelig, som SD-kortet. 674 00:47:06,820 --> 00:47:11,320 Du ser dette oftere på Android fordi Android åpner for et SD-kort. 675 00:47:11,320 --> 00:47:13,200 IPhone-enheter ikke. 676 00:47:13,200 --> 00:47:17,900 Men vi engang så dette skje i en Citigroup-program. 677 00:47:17,900 --> 00:47:25,450 Deres online bankapplikasjon lagret kontonumrene usikker, 678 00:47:25,450 --> 00:47:28,120 bare i den klare, så hvis du mistet din enhet, 679 00:47:28,120 --> 00:47:30,670 egentlig du mistet din bankkonto. 680 00:47:30,670 --> 00:47:36,000 Dette er grunnen til at jeg personlig ikke gjør banking på min iPhone. 681 00:47:36,000 --> 00:47:43,710 Jeg tror det er for risikabelt akkurat nå til å gjøre disse typer 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 saldo, et brukernavn og et passord 684 00:47:49,870 --> 00:47:51,030 som tilgang til denne balansen. 685 00:47:51,030 --> 00:48:00,080 De ble lagring av all denne informasjonen i klartekst på den mobile enheten. 686 00:48:00,080 --> 00:48:05,760 Jeg har noen eksempler her for å lage filer 687 00:48:05,760 --> 00:48:10,310 som ikke har de riktige tillatelsene eller skrive til disk 688 00:48:10,310 --> 00:48:17,260 og ikke har noen kryptering skje for det. 689 00:48:17,260 --> 00:48:20,190 Det neste området, Unsafe Sensitive Dataoverføring, 690 00:48:20,190 --> 00:48:24,450 Jeg har antydet dette et par ganger, og på grunn av offentlige Wi-Fi 691 00:48:24,450 --> 00:48:27,770 dette er noe som apps absolutt trenger å gjøre, 692 00:48:27,770 --> 00:48:31,250 og dette er sannsynligvis det vi ser gå galt mest. 693 00:48:31,250 --> 00:48:34,920 Jeg vil si-faktisk, tror jeg at jeg har de faktiske dataene, 694 00:48:34,920 --> 00:48:38,120 men det er nær halvparten av mobile applikasjoner 695 00:48:38,120 --> 00:48:41,780 skru opp med å gjøre SSL. 696 00:48:41,780 --> 00:48:43,910 De bare ikke bruke APIene riktig. 697 00:48:43,910 --> 00:48:47,970 Jeg mener, er alt du har å gjøre er å følge instruksjonene og bruke APIer, 698 00:48:47,970 --> 00:48:54,720 men de gjør ting som ikke sjekke om det er et ugyldig sertifikat i den andre enden, 699 00:48:54,720 --> 00:49:02,120 ikke sjekke om den andre enden prøver å gjøre en protokoll nedgradering angrep. 700 00:49:02,120 --> 00:49:07,200 >> Utviklerne, ønsker de å få avkrysnings deres, ikke sant? 701 00:49:07,200 --> 00:49:11,910 Deres krav er å bruke dette til å selge. De har brukt dette for å selge. 702 00:49:11,910 --> 00:49:14,800 Kravet er ikke til å bruke dette for å selge trygt, 703 00:49:14,800 --> 00:49:19,680 og så dette er grunnen til at alle programmer som bruker SSL for å sikre data 704 00:49:19,680 --> 00:49:23,470 som det blir overført av enheten virkelig trenger å bli inspisert 705 00:49:23,470 --> 00:49:28,950 å sørge for at ble implementert riktig. 706 00:49:28,950 --> 00:49:32,850 Og her har jeg noen eksempler hvor du kan se et program 707 00:49:32,850 --> 00:49:37,400 kanskje bruker HTTP i stedet for HTTPS. 708 00:49:37,400 --> 00:49:40,510 I noen tilfeller apps vil falle tilbake 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 en annen samtale her på Android, hvor de har deaktivert sertifikatsjekk, 711 00:49:49,070 --> 00:49:51,700 så et man-in-the-middle-angrep kan skje. 712 00:49:51,700 --> 00:49:56,370 Et ugyldig sertifikat vil bli akseptert. 713 00:49:56,370 --> 00:50:01,920 Disse er alle tilfeller der angripere kommer til å være i stand til å komme på 714 00:50:01,920 --> 00:50:07,150 det samme Wi-Fi-tilkobling som bruker og tilgang til alle data 715 00:50:07,150 --> 00:50:11,650 som blir sendt over internett. 716 00:50:11,650 --> 00:50:15,970 >> Og til slutt, den siste kategorien jeg har her er hardkodet passord og nøkler. 717 00:50:15,970 --> 00:50:21,470 Vi faktisk se en masse utviklere bruker samme koding stil 718 00:50:21,470 --> 00:50:25,900 som de gjorde da de var å bygge web server-applikasjoner, 719 00:50:25,900 --> 00:50:29,700 slik at de bygger en Java server applikasjon, og de er hardcoding nøkkelen. 720 00:50:29,700 --> 00:50:31,940 Vel, når du bygger et serverprogram, ja, 721 00:50:31,940 --> 00:50:34,240 hardcoding nøkkelen er ikke en god idé. 722 00:50:34,240 --> 00:50:36,290 Det gjør det vanskelig å endre. 723 00:50:36,290 --> 00:50:40,700 Men det er ikke så ille på serversiden, fordi hvem som har tilgang til serversiden? 724 00:50:40,700 --> 00:50:43,140 Bare administratorer. 725 00:50:43,140 --> 00:50:48,100 Men hvis du tar den samme koden, og du helte den over til en mobilapplikasjon 726 00:50:48,100 --> 00:50:52,550 nå alle som har den mobile applikasjonen har tilgang til denne hardkodet nøkkel, 727 00:50:52,550 --> 00:50:56,380 og vi faktisk se dette en rekke ganger, og jeg har noen statistikk 728 00:50:56,380 --> 00:51:00,920 på hvor ofte vi ser dette skje. 729 00:51:00,920 --> 00:51:04,940 Det faktisk var i eksempelet kode som MasterCard publisert 730 00:51:04,940 --> 00:51:06,850 på hvordan du skal bruke deres tjeneste. 731 00:51:06,850 --> 00:51:11,860 Eksempelet kode viste hvordan du ville bare ta passord 732 00:51:11,860 --> 00:51:14,850 og legg den i en hardkodet streng rett der, 733 00:51:14,850 --> 00:51:19,380 og vi vet hvordan utviklerne elsker å kopiere og lime inn kodesnutter 734 00:51:19,380 --> 00:51:22,360 når de prøver å gjøre noe, så du kopiere og lime inn kodebiten 735 00:51:22,360 --> 00:51:28,450 at de ga som eksempel kode, og du har en usikker applikasjon. 736 00:51:28,450 --> 00:51:31,490 >> Og her har vi noen eksempler. 737 00:51:31,490 --> 00:51:35,840 Denne første er en vi ser mange der de hardcode 738 00:51:35,840 --> 00:51:40,510 dataene rett inn i en URL som blir sendt. 739 00:51:40,510 --> 00:51:45,120 Noen ganger ser vi streng passord = passordet. 740 00:51:45,120 --> 00:51:49,060 Det er ganske lett å oppdage, eller streng passord på Blackberry og Android. 741 00:51:49,060 --> 00:51:53,680 Det er faktisk ganske lett å sjekke for grunn nesten alltid 742 00:51:53,680 --> 00:51:57,030 utvikler navngir variable som holder passordet 743 00:51:57,030 --> 00:52:02,290 annen variant av passord. 744 00:52:02,290 --> 00:52:05,200 Jeg nevnte at vi gjør statisk analyse på Veracode, 745 00:52:05,200 --> 00:52:11,790 så vi har analysert flere hundre Android-og iOS-applikasjoner. 746 00:52:11,790 --> 00:52:15,160 Vi har bygget fulle modeller av dem, og vi er i stand til å skanne dem 747 00:52:15,160 --> 00:52:19,280 for ulike sårbarheter, spesielt sikkerhetsproblemene jeg snakket om, 748 00:52:19,280 --> 00:52:21,050 og jeg har noen data her. 749 00:52:21,050 --> 00:52:24,320 68.5% av Android-apps vi så på 750 00:52:24,320 --> 00:52:28,590 hadde brutt kryptografisk kode, 751 00:52:28,590 --> 00:52:33,240 som for oss, kan vi ikke oppdage om du har gjort din egen krypto rutine, 752 00:52:33,240 --> 00:52:38,980 ikke at det er en god idé, men dette er faktisk bruker de publiserte APIer 753 00:52:38,980 --> 00:52:42,530 som finnes på plattformen, men gjør dem på en slik måte 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 dette er for folk som sender oss sine søknader faktisk fordi 756 00:52:49,870 --> 00:52:53,730 de tror det er en god idé å gjøre sikkerhetstesting. 757 00:52:53,730 --> 00:52:56,960 Disse er allerede folk som er sannsynligvis tenker sikkert, 758 00:52:56,960 --> 00:52:59,540 så det er nok enda verre. 759 00:52:59,540 --> 00:53:02,690 >> Jeg ikke snakke om kontroll linjeskift injeksjon. 760 00:53:02,690 --> 00:53:07,640 Det er noe vi sjekker for, men det er ikke så risikabelt et problem. 761 00:53:07,640 --> 00:53:15,390 Informasjonslekkasje, dette er hvor sensitive data blir sendt av enheten. 762 00:53:15,390 --> 00:53:19,270 Vi fant at i 40% av søknadene. 763 00:53:19,270 --> 00:53:23,540 Tid og stat, de er rase tilstand typen saker, vanligvis ganske vanskelig å utnytte, 764 00:53:23,540 --> 00:53:26,170 så jeg ikke snakke om det, men vi så på det. 765 00:53:26,170 --> 00:53:28,750 23% hadde SQL-injeksjon problemer. 766 00:53:28,750 --> 00:53:32,020 Mange vet ikke at mange programmer 767 00:53:32,020 --> 00:53:35,880 bruke en liten liten SQL database på sin back end til å lagre data. 768 00:53:35,880 --> 00:53:40,430 Vel, hvis dataene som du gripe tak over nettverket 769 00:53:40,430 --> 00:53:43,800 har SQL-injeksjon angrep strenger i det 770 00:53:43,800 --> 00:53:45,970 noen kan kompromittere enheten gjennom det, 771 00:53:45,970 --> 00:53:49,800 og så tror jeg vi finner om 40% av web-applikasjoner har dette problemet, 772 00:53:49,800 --> 00:53:52,840 som er et stort problem epidemi. 773 00:53:52,840 --> 00:53:55,740 Vi synes det er 23% av tiden i mobile apps 774 00:53:55,740 --> 00:54:02,030 og det er sannsynligvis fordi mange flere web-applikasjoner bruker SQL enn mobil. 775 00:54:02,030 --> 00:54:05,580 >> Og da vi fortsatt se noen cross-site scripting, autorisasjonsspørsmål, 776 00:54:05,580 --> 00:54:09,400 og deretter legitimasjonsadministrasjon, det er der du har din hardkodet passord. 777 00:54:09,400 --> 00:54:14,540 I 5% av søknadene ser vi at. 778 00:54:14,540 --> 00:54:17,970 Og så har vi noen data på iOS. 779 00:54:17,970 --> 00:54:20,180 81% hadde feilhåndteringen. 780 00:54:20,180 --> 00:54:23,130 Denne er fortrinnsvis av en kodekvaliteten, 781 00:54:23,130 --> 00:54:28,010 men 67% hadde kryptografiske problemer, så ikke fullt så ille som Android. 782 00:54:28,010 --> 00:54:32,440 Kanskje APIene er litt enklere, er eksempelkoder litt bedre på iOS. 783 00:54:32,440 --> 00:54:35,420 Men fortsatt en svært høy prosentandel. 784 00:54:35,420 --> 00:54:39,040 Vi hadde 54% med informasjonslekkasje, 785 00:54:39,040 --> 00:54:42,080 om lag 30% med buffer styringsfeil. 786 00:54:42,080 --> 00:54:45,930 Det er steder hvor det kan potensielt være et problem med minnekorrupsjon. 787 00:54:45,930 --> 00:54:50,350 Det viser seg at det er ikke så mye av et problem for utnyttelse 788 00:54:50,350 --> 00:54:56,450 på iOS fordi all koden må være signert, 789 00:54:56,450 --> 00:55:02,210 så det er vanskelig for en angriper å kjøre vilkårlig kode på iOS. 790 00:55:02,210 --> 00:55:07,880 Kodekvalitet, katalog traversering, men da legitimasjon ledelsen her på 14,6%, 791 00:55:07,880 --> 00:55:09,250 så verre enn på Android. 792 00:55:09,250 --> 00:55:13,240 Vi har folk ikke håndterer passord riktig. 793 00:55:13,240 --> 00:55:15,790 Og da de numeriske feil og buffer overflow, 794 00:55:15,790 --> 00:55:22,680 de er mer kommer til å være kodekvaliteten på iOS. 795 00:55:22,680 --> 00:55:26,110 >> Det var det for min presentasjon. Jeg vet ikke om vi er ute av tid eller ikke. 796 00:55:26,110 --> 00:55:29,540 Jeg vet ikke om det er noen spørsmål. 797 00:55:29,540 --> 00:55:33,220 [Mann] En rask spørsmål rundt fragmentering og Android Market. 798 00:55:33,220 --> 00:55:36,240 Apple minst eier patching. 799 00:55:36,240 --> 00:55:40,780 De gjør en god jobb med å få den ut der, mens mindre så i Android plass. 800 00:55:40,780 --> 00:55:44,280 Du trenger nesten å jailbreak telefonen for å holde deg oppdatert 801 00:55:44,280 --> 00:55:46,660 med den nåværende versjonen av Android. 802 00:55:46,660 --> 00:55:50,960 Ja, det er et stort problem, og så hvis du tenker på- 803 00:55:50,960 --> 00:55:52,280 [Mann] Hvorfor kan ikke du gjenta det? 804 00:55:52,280 --> 00:55:55,610 >> Å, akkurat, så spørsmålet var hva om fragmentering 805 00:55:55,610 --> 00:56:00,410 av operativsystemet på Android-plattformen? 806 00:56:00,410 --> 00:56:05,890 Hvordan påvirker risikoen ved disse enhetene? 807 00:56:05,890 --> 00:56:09,700 Og det faktisk er et stort problem fordi det som skjer er 808 00:56:09,700 --> 00:56:15,110 de eldre enheter, når noen kommer opp med en jailbreak på den enheten, 809 00:56:15,110 --> 00:56:19,960 egentlig det er opptrapping av privilegier, og til at operativsystemet er oppdatert 810 00:56:19,960 --> 00:56:25,350 noen malware kan deretter bruke denne sårbarheten til helt kompromittere enheten, 811 00:56:25,350 --> 00:56:30,200 og hva vi ser på Android er for å få et nytt operativsystem 812 00:56:30,200 --> 00:56:34,690 Google har til å sette ut operativsystemet, og deretter maskinvareprodusenten 813 00:56:34,690 --> 00:56:39,390 har til å tilpasse den, og deretter transportøren har å tilpasse den og levere den. 814 00:56:39,390 --> 00:56:43,070 Du har i utgangspunktet tre bevegelige deler her, 815 00:56:43,070 --> 00:56:47,210 og det er å snu seg at bærere ikke bryr seg, 816 00:56:47,210 --> 00:56:50,400 og maskinvareprodusenter ikke bryr seg, og Google er ikke prodding dem nok 817 00:56:50,400 --> 00:56:54,430 å gjøre noe, så egentlig over halvparten av enhetene der ute 818 00:56:54,430 --> 00:57:00,590 har operativsystemer som har disse privilegieopptrapping sårbarheter i dem, 819 00:57:00,590 --> 00:57:08,440 og så hvis du får malware på din Android-enhet er det mye mer av et problem. 820 00:57:08,440 --> 00:57:10,350 >> Ok, tusen takk. 821 00:57:10,350 --> 00:57:12,310 [Applaus] 822 00:57:12,310 --> 00:57:14,310 [CS50.TV]