1 00:00:00,000 --> 00:00:02,610 >> [Seminarium] [Försvar Bakom 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 [Det här är CS50.] [CS50.TV] 4 00:00:07,830 --> 00:00:10,360 >> God eftermiddag. Mitt namn är Chris Wysopal. 5 00:00:10,360 --> 00:00:13,360 Jag är CTO och medgrundare av Veracode. 6 00:00:13,360 --> 00:00:15,880 Veracode är ett program säkerhetsföretag. 7 00:00:15,880 --> 00:00:18,230 Vi testar alla typer av olika applikationer, 8 00:00:18,230 --> 00:00:25,060 och vad jag ska prata om idag är mobil applikation säkerhet. 9 00:00:25,060 --> 00:00:28,630 Min bakgrund är att jag har gjort säkerhetsforskning 10 00:00:28,630 --> 00:00:31,970 under mycket lång tid, förmodligen ungefär lika länge som vem som helst. 11 00:00:31,970 --> 00:00:35,000 Jag började i mitten av 90-talet, 12 00:00:35,000 --> 00:00:37,370 och det var en tid som var ganska intressant eftersom 13 00:00:37,370 --> 00:00:39,220 Vi hade ett paradigmskifte i mitten av 90-talet. 14 00:00:39,220 --> 00:00:43,520 Helt plötsligt allas dator var ansluten till Internet, 15 00:00:43,520 --> 00:00:46,550 och sedan hade vi början till webbapplikationer, 16 00:00:46,550 --> 00:00:49,330 och det är vad jag fokuserade på en hel del då. 17 00:00:49,330 --> 00:00:51,160 Det är intressant. 18 00:00:51,160 --> 00:00:53,930 Nu har vi en annan paradigmskifte sker med datorer, 19 00:00:53,930 --> 00:00:58,710 vilket är övergången till mobila applikationer. 20 00:00:58,710 --> 00:01:03,680 >> Jag tycker att det är lite av en liknande tid då det var i slutet av 90-talet 21 00:01:03,680 --> 00:01:07,650 När vi undersökte webbapplikationer och hitta defekter som 22 00:01:07,650 --> 00:01:11,800 sessionshantering fel och SQL-injektion 23 00:01:11,800 --> 00:01:14,940 som egentligen inte existerade tidigare, och helt plötsligt var de överallt 24 00:01:14,940 --> 00:01:19,360 i webbapplikationer, och nu en hel del av den tid jag tillbringar 25 00:01:19,360 --> 00:01:27,950 tittar på mobila applikationer och tittar på vad som händer där ute i det vilda. 26 00:01:27,950 --> 00:01:32,060 Mobila applikationer är verkligen kommer att bli den dominerande datorplattform, 27 00:01:32,060 --> 00:01:35,060 så vi verkligen behöver spendera mycket tid om du är i säkerhetsbranschen 28 00:01:35,060 --> 00:01:39,280 med fokus på webbapplikationer. 29 00:01:39,280 --> 00:01:43,420 Det fanns 29 miljarder mobilappar ner under 2011. 30 00:01:43,420 --> 00:01:47,920 Det spås bli 76 miljarder appar 2014. 31 00:01:47,920 --> 00:01:54,040 Det finns 686 miljoner enheter som kommer att köpa i år, 32 00:01:54,040 --> 00:01:57,060 så det är där människor kommer att göra 33 00:01:57,060 --> 00:01:59,600  merparten av sin klient datorer framöver. 34 00:01:59,600 --> 00:02:04,220 >> Jag pratade med en vice vd på Fidelity Investments 35 00:02:04,220 --> 00:02:08,780 ett par månader sedan, och han sa att de bara såg mer trafik 36 00:02:08,780 --> 00:02:12,610 göra ekonomiska transaktioner från sin kundbas 37 00:02:12,610 --> 00:02:16,230 på sin mobil applikation än på deras hemsida, 38 00:02:16,230 --> 00:02:20,610 så en vanlig användning för webben i det förflutna har varit 39 00:02:20,610 --> 00:02:23,800 kontrollera dina aktiekurser, hantera din portfölj, 40 00:02:23,800 --> 00:02:28,060 och vi faktiskt se att under 2012 omkoppling 41 00:02:28,060 --> 00:02:30,960 att vara mer dominerande på den mobila plattformen. 42 00:02:30,960 --> 00:02:34,530 Visst, om det inte kommer att bli någon brottslig verksamhet, 43 00:02:34,530 --> 00:02:38,900 all skadlig aktivitet, det kommer att börja vara fokuserad på den mobila plattformen 44 00:02:38,900 --> 00:02:44,210 med tiden som folk byta till det. 45 00:02:44,210 --> 00:02:48,320 Om du tittar på den mobila plattformen, 46 00:02:48,320 --> 00:02:54,380 att titta på riskerna med plattformen är det lämpligt att dela upp det i olika lager, 47 00:02:54,380 --> 00:02:59,010 precis som du skulle göra det på en stationär dator, 48 00:02:59,010 --> 00:03:02,860 och du tycker om de olika lagren, mjukvara, operativsystem, 49 00:03:02,860 --> 00:03:07,730 nätverkslagret, hårdvara lager, och naturligtvis, det finns sårbarheter på alla dessa lager. 50 00:03:07,730 --> 00:03:10,510 >> Samma sak händer på mobilen. 51 00:03:10,510 --> 00:03:14,880 Men mobil, verkar det som om en del av dessa lager är sämre. 52 00:03:14,880 --> 00:03:19,840 För en, är mer problematisk på mobil nätverkslagret 53 00:03:19,840 --> 00:03:25,650 eftersom många människor har i sitt kontor eller hemma 54 00:03:25,650 --> 00:03:30,780 kabelanslutningar eller de har säkra Wi-Fi-anslutningar, 55 00:03:30,780 --> 00:03:36,530 och med en hel del mobila enheter du är uppenbarligen utanför hemmet 56 00:03:36,530 --> 00:03:40,520 eller utanför kontoret en hel del, och om du använder Wi-Fi finns 57 00:03:40,520 --> 00:03:42,820 Du kanske använder en osäker Wi-Fi-anslutning, 58 00:03:42,820 --> 00:03:45,570 något som är en Wi-Fi-anslutning, 59 00:03:45,570 --> 00:03:48,840 så när vi tänker på mobila appar som vi måste ta hänsyn till 60 00:03:48,840 --> 00:03:53,770 att nätverksmiljön är mer riskfyllda för de tillämpningar 61 00:03:53,770 --> 00:03:57,640 När Wi-Fi används. 62 00:03:57,640 --> 00:04:02,410 Och när jag kommer in i flera av de risker mobila applikations 63 00:04:02,410 --> 00:04:04,910 ser du varför det är viktigare. 64 00:04:04,910 --> 00:04:09,710 Det finns risker på hårdvarunivå på mobila enheter. 65 00:04:09,710 --> 00:04:11,670 Detta är ett område med pågående forskning. 66 00:04:11,670 --> 00:04:15,910 Folk kallar dessa bredbandsattacker eller baseband attacker 67 00:04:15,910 --> 00:04:21,870 där du attackerar den fasta programvaran som lyssnar på radion. 68 00:04:21,870 --> 00:04:25,430 >> Dessa är verkligen skrämmande attacker eftersom 69 00:04:25,430 --> 00:04:27,280 användaren behöver inte göra någonting. 70 00:04:27,280 --> 00:04:30,760 Du kan träffa massor av enheter inom RF intervall 71 00:04:30,760 --> 00:04:36,690 på en gång, och det verkar som om varje gång denna forskning bubblar upp 72 00:04:36,690 --> 00:04:40,750 det snabbt blir klassificerat där 73 00:04:40,750 --> 00:04:46,600 folk susa in och säga: "Här, berätta om det, och snälla sluta prata om det." 74 00:04:46,600 --> 00:04:49,460 Det finns en del forskning som pågår inom bredbandsområdet, 75 00:04:49,460 --> 00:04:51,980 men det verkar vara mycket hysch hysch. 76 00:04:51,980 --> 00:04:56,910 Jag tycker det är mer av en nationalstat typ av forskning som pågår. 77 00:04:56,910 --> 00:05:02,140 Ett område med aktiv forskning, dock är operativsystemet lagret, 78 00:05:02,140 --> 00:05:08,910 och återigen, detta är annorlunda än i den stationära datorvärlden 79 00:05:08,910 --> 00:05:14,840 grund i den mobila rymden du har dessa grupper av människor som kallas jailbreakers, 80 00:05:14,840 --> 00:05:18,670 och jailbreakers är annorlunda än vanliga forskare sårbarhets. 81 00:05:18,670 --> 00:05:21,970 De försöker hitta sårbarheter i operativsystemet, 82 00:05:21,970 --> 00:05:27,000 men anledningen till att de försöker hitta sårbarheter är inte 83 00:05:27,000 --> 00:05:31,810 bryta sig in i någon annans maskin och äventyra den. 84 00:05:31,810 --> 00:05:34,280 Det är att bryta sig in i sin egen dator. 85 00:05:34,280 --> 00:05:38,820 >> De vill bryta sig in i sin egen mobil, ändra sina egna mobila operativsystem 86 00:05:38,820 --> 00:05:41,050 så att de kan köra de program som de själva väljer 87 00:05:41,050 --> 00:05:44,510 och byta saker med fulla administrativa rättigheter, 88 00:05:44,510 --> 00:05:49,050 och att de inte vill berätta säljaren om detta. 89 00:05:49,050 --> 00:05:52,960 De är inte som en säkerhetsforskare som är en vit hatt säkerhetsforskare 90 00:05:52,960 --> 00:05:56,600 som kommer att göra ansvarsfull avslöjande och berättar säljaren om det. 91 00:05:56,600 --> 00:06:01,270 De vill göra denna forskning, och de vill faktiskt publicera den 92 00:06:01,270 --> 00:06:06,400 i en utnyttja eller ett rootkit eller en jailbreak-kod, 93 00:06:06,400 --> 00:06:10,010 och de vill göra det strategiskt, som direkt efter 94 00:06:10,010 --> 00:06:13,570 skeppen leverantörs det nya operativsystemet. 95 00:06:13,570 --> 00:06:16,350 Du har denna kontradiktoriska relation 96 00:06:16,350 --> 00:06:19,000 med OS-nivå sårbarheter på mobilen, 97 00:06:19,000 --> 00:06:23,150 vilket jag tycker är ganska intressant, och ett ställe som vi ser det 98 00:06:23,150 --> 00:06:29,210 det gör det så att det är bra publiceras utnyttja koden där ute 99 00:06:29,210 --> 00:06:31,750 för kernel-nivå sårbarheter, 100 00:06:31,750 --> 00:06:35,040 och vi har sett de som faktiskt utnyttjas av malware författare. 101 00:06:35,040 --> 00:06:38,450 Det är lite annorlunda än i PC-världen. 102 00:06:38,450 --> 00:06:42,530 Och sedan det sista skiktet är det övre skiktet, applikationsskiktet. 103 00:06:42,530 --> 00:06:45,250 Det är vad jag ska prata om idag. 104 00:06:45,250 --> 00:06:48,970 >> De andra skikten föreligger, och de andra skikten spela in i det, 105 00:06:48,970 --> 00:06:53,310 men jag är oftast att tala om vad som händer på applikationslagret 106 00:06:53,310 --> 00:06:55,560 där koden körs i sandlådan. 107 00:06:55,560 --> 00:06:58,670 Det behöver inte ha administratörsbehörighet. 108 00:06:58,670 --> 00:07:02,170 Det har att använda API: er i anordningen, 109 00:07:02,170 --> 00:07:06,970 men ändå, kan en hel del skadlig aktivitet och en hel del risk att hända på det lagret 110 00:07:06,970 --> 00:07:09,220 eftersom det är det lager där all information finns. 111 00:07:09,220 --> 00:07:12,330 Apps kan komma åt all information på enheten 112 00:07:12,330 --> 00:07:15,390 om de har rätt behörigheter, 113 00:07:15,390 --> 00:07:17,540 och de kan få tillgång till olika sensorer på enheten, 114 00:07:17,540 --> 00:07:23,950 GPS-sensor, mikrofon, kamera, vad har du. 115 00:07:23,950 --> 00:07:27,380 Även om vi bara pratar om på applikationslagret 116 00:07:27,380 --> 00:07:33,700 vi har en hel del risker där. 117 00:07:33,700 --> 00:07:38,450 Den andra saken som är annorlunda med den mobila miljön 118 00:07:38,450 --> 00:07:45,060 är alla operativsystem spelarna, oavsett om det är BlackBerry eller Android 119 00:07:45,060 --> 00:07:53,410 eller iOS eller Windows Mobile, de har alla en finkornig tillstånd modell, 120 00:07:53,410 --> 00:07:56,990 och detta är ett av de sätt som de inbyggda i operativsystemet 121 00:07:56,990 --> 00:08:01,230 tanken att det är inte så riskabelt som du tror. 122 00:08:01,230 --> 00:08:04,550 Även om du har alla dina kontakter på det, all din personliga information, 123 00:08:04,550 --> 00:08:09,080 du har dina bilder, har du din plats på det, 124 00:08:09,080 --> 00:08:14,820 du lagrar din bank pin för automatisk inloggning på det, det är säkert eftersom 125 00:08:14,820 --> 00:08:19,430 apps måste ha vissa behörigheter för att komma åt vissa delar 126 00:08:19,430 --> 00:08:25,080 av informationen på enheten, och användaren måste presenteras med 127 00:08:25,080 --> 00:08:29,230 dessa behörigheter och säga okej. 128 00:08:29,230 --> 00:08:32,590 >> Problemet med det är att användaren alltid säger okej. 129 00:08:32,590 --> 00:08:35,240 Som en person som säkerhet, jag vet att du kan uppmana användaren, 130 00:08:35,240 --> 00:08:40,100 säga något riktigt dåligt kommer att hända, du vill att det ska hända? 131 00:08:40,100 --> 00:08:44,680 Och om de har bråttom eller är det något riktigt lockande på andra sidan av det, 132 00:08:44,680 --> 00:08:47,760 som ett spel kommer att installeras som de har väntat på, 133 00:08:47,760 --> 00:08:50,860 de ska klicka okej. 134 00:08:50,860 --> 00:08:56,630 Det är därför jag säger på mitt bildspel här låt mig kasta fåglar på grisar redan, 135 00:08:56,630 --> 00:09:03,150 och du kan se på bilden här finns det exempel på en BlackBerry tillstånd låda. 136 00:09:03,150 --> 00:09:05,990 Det står "Var god ange BlackBerry Travel applikationsbehörigheter 137 00:09:05,990 --> 00:09:09,720 efter att ha klickat på knappen nedan, "och i princip användaren är bara att säga 138 00:09:09,720 --> 00:09:12,240 ställa in behörigheter och spara. 139 00:09:12,240 --> 00:09:18,010 Här är en Android-prompt där den visar saker, 140 00:09:18,010 --> 00:09:20,260 och faktiskt satt något som nästan ser ut som en varning. 141 00:09:20,260 --> 00:09:25,090 Det har fått en sorts avkastnings skylt där säger nätverkskommunikation, telefonsamtal, 142 00:09:25,090 --> 00:09:28,120 men användaren ska klicka på installera, eller hur? 143 00:09:28,120 --> 00:09:32,940 Och sedan Apple man är helt ofarlig. 144 00:09:32,940 --> 00:09:34,300 Det ger inte någon form av varning. 145 00:09:34,300 --> 00:09:37,380 Det är bara Apple vill använda din nuvarande plats. 146 00:09:37,380 --> 00:09:39,670 Visst du kommer att klicka okej. 147 00:09:39,670 --> 00:09:42,260 >> Det är finkornig tillstånd modell, 148 00:09:42,260 --> 00:09:45,890 och program måste ha en manifest-fil där de förklarar 149 00:09:45,890 --> 00:09:49,410 de behörigheter som de behöver, och som kommer att få visas för användaren, 150 00:09:49,410 --> 00:09:53,480 och användaren måste säga att jag ger dessa behörigheter. 151 00:09:53,480 --> 00:09:55,080 Men låt oss vara ärliga. 152 00:09:55,080 --> 00:09:58,400 Användarna är bara att alltid säga okej. 153 00:09:58,400 --> 00:10:04,460 Låt oss ta en snabb titt på de behörigheter som dessa program ber om 154 00:10:04,460 --> 00:10:06,850 och några av de behörigheter som finns där. 155 00:10:06,850 --> 00:10:09,950 Detta företag Praetorian gjorde en undersökning förra året 156 00:10:09,950 --> 00:10:14,170 av 53.000 ansökningar som analyserats i Android Market och 3: e parts marknaderna, 157 00:10:14,170 --> 00:10:16,770 så detta är alla Android. 158 00:10:16,770 --> 00:10:19,670 Och den genomsnittliga app begärt 3 behörigheter. 159 00:10:19,670 --> 00:10:23,370 Vissa program begärde 117 behörigheter, 160 00:10:23,370 --> 00:10:27,480 så uppenbart dessa är mycket finkornig och alldeles för komplicerat för en användare att förstå 161 00:10:27,480 --> 00:10:31,600 om de är presenteras med denna app som behöver dessa 117 tillstånd. 162 00:10:31,600 --> 00:10:37,270 Det är som det licensavtal för slutanvändare som är 45 sidor lång. 163 00:10:37,270 --> 00:10:40,240 Kanske snart kommer de att ha ett alternativ där det är som 164 00:10:40,240 --> 00:10:43,100 skriva ut behörigheter och skicka mig ett mail. 165 00:10:43,100 --> 00:10:45,480 >> Men om man tittar på några av de bästa intressanta behörigheter 166 00:10:45,480 --> 00:10:50,840 24% av de program som de ner ut ur 53.000 167 00:10:50,840 --> 00:10:57,230 begärda GPS-information från enheten. 168 00:10:57,230 --> 00:10:59,810 8% läser kontakterna. 169 00:10:59,810 --> 00:11:03,770 4% skickade SMS och 3% mottaget SMS. 170 00:11:03,770 --> 00:11:07,730 2% inspelat ljud. 171 00:11:07,730 --> 00:11:11,210 1% bearbetats utgående samtal. 172 00:11:11,210 --> 00:11:13,140 Jag vet inte. 173 00:11:13,140 --> 00:11:17,520 Jag tror inte att 4% av de program i App Store måste verkligen skicka SMS-meddelanden, 174 00:11:17,520 --> 00:11:21,410 så jag tror det är en antydan om att något oförutsett som händer. 175 00:11:21,410 --> 00:11:24,350 8% av de apps behöver läsa din kontaktlista. 176 00:11:24,350 --> 00:11:26,510 Det är nog inte nödvändigt. 177 00:11:26,510 --> 00:11:30,990 En av de andra intressanta saker om behörigheter är 178 00:11:30,990 --> 00:11:36,740 om du länkar i delade bibliotek i din ansökan 179 00:11:36,740 --> 00:11:39,780 de ärver behörigheterna för ansökan, 180 00:11:39,780 --> 00:11:46,570 så om din app behöver kontaktlistan eller behöver GPS-position för att fungera 181 00:11:46,570 --> 00:11:49,940 och du länkar i en reklam-bibliotek, till exempel, 182 00:11:49,940 --> 00:11:53,170 att annonsbiblioteket kommer också att kunna komma åt kontakterna 183 00:11:53,170 --> 00:11:57,630 och också kunna få tillgång till GPS-position, 184 00:11:57,630 --> 00:12:01,990 och utvecklaren av appen vet ingenting om den kod som körs i annonsbiblioteket. 185 00:12:01,990 --> 00:12:05,370 De är bara att koppla det i att de vill tjäna pengar på sin app. 186 00:12:05,370 --> 00:12:09,820 >> Det är här-och jag ska tala om några exempel på detta med 187 00:12:09,820 --> 00:12:13,930 ett program som heter Pandora där en ansökan utvecklare 188 00:12:13,930 --> 00:12:18,910 kanske omedvetet att läcka information 189 00:12:18,910 --> 00:12:24,580 från sina användare på grund av biblioteken som de har länkat i. 190 00:12:24,580 --> 00:12:30,110 Lantmäteri landskapet där ute, titta på alla olika apps 191 00:12:30,110 --> 00:12:34,310 som har rapporterats i nyheterna som skadliga eller gör något som användaren inte ville 192 00:12:34,310 --> 00:12:39,360 och sedan inspektera en massa appar-Vi gör en hel del statisk binär analys på mobila applikationer, 193 00:12:39,360 --> 00:12:42,010 så vi har inspekterat dem och tittade på själva koden- 194 00:12:42,010 --> 00:12:49,640 vi kom fram till det vi kallar vår 10 topp lista över riskfyllda beteenden i applikationer. 195 00:12:49,640 --> 00:12:54,180 Och det är uppdelat i två sektioner, skadlig kod, 196 00:12:54,180 --> 00:12:57,600 så dessa är dåliga saker som apps kanske gör att 197 00:12:57,600 --> 00:13:06,520 kommer sannolikt att vara något som en illvillig individ 198 00:13:06,520 --> 00:13:10,060 har särskilt lagt i ansökan, men det är lite suddig. 199 00:13:10,060 --> 00:13:13,300 Det kan vara något som en utvecklare tycker är bra, 200 00:13:13,300 --> 00:13:16,350 men det slutar som betraktas som skadliga för användaren. 201 00:13:16,350 --> 00:13:19,830 >> Och sedan den andra delen är vad vi kallar kodning sårbarheter, 202 00:13:19,830 --> 00:13:24,600 och det är saker där utvecklaren princip är att göra misstag 203 00:13:24,600 --> 00:13:27,200 eller bara inte förstår hur man skriver appen ordentligt, 204 00:13:27,200 --> 00:13:30,260  och det är att sätta appen användare i riskzonen. 205 00:13:30,260 --> 00:13:34,060 Jag kommer att gå igenom dessa i detalj och ge några exempel. 206 00:13:34,060 --> 00:13:39,620 För referens, jag ville sätta upp den OWASP mobil topp 10 listan. 207 00:13:39,620 --> 00:13:43,590 Dessa är de 10 frågor som en grupp på OWASP, 208 00:13:43,590 --> 00:13:48,900 Open Web Application Security Project, de har en arbetsgrupp 209 00:13:48,900 --> 00:13:50,620 arbetar på en mobil topp 10 listan. 210 00:13:50,620 --> 00:13:54,600 De har en mycket berömd webb topp 10 listan, som är topp 10 211 00:13:54,600 --> 00:13:57,180 mest riskfyllda saker kan man ha i en webbapplikation. 212 00:13:57,180 --> 00:13:59,090 De gör samma sak för mobilen, 213 00:13:59,090 --> 00:14:01,750 och deras lista är lite annorlunda än vår. 214 00:14:01,750 --> 00:14:03,670 6 ut ur 10 är desamma. 215 00:14:03,670 --> 00:14:06,020 De har 4 som är olika. 216 00:14:06,020 --> 00:14:10,550 Jag tror att de har lite av en annorlunda syn på 217 00:14:10,550 --> 00:14:14,490 risk i mobila appar där en hel del av sina frågor 218 00:14:14,490 --> 00:14:20,490 är verkligen hur programmet kommunicerar med en back-end server 219 00:14:20,490 --> 00:14:23,100 eller vad som händer på back-end server, 220 00:14:23,100 --> 00:14:29,220 inte så mycket program som har riskbeteende som är bara enkla klient apps. 221 00:14:29,220 --> 00:14:36,640 >> De i rött här är skillnaderna mellan de två listorna. 222 00:14:36,640 --> 00:14:40,740 Och en del av min forskargrupp har faktiskt bidragit till det här projektet, 223 00:14:40,740 --> 00:14:44,570 så vi får se vad som händer med tiden, men jag tror att takeaway här är 224 00:14:44,570 --> 00:14:47,550 Vi vet inte riktigt vad det topp 10 listan är i mobilappar eftersom 225 00:14:47,550 --> 00:14:50,510 de har egentligen bara funnits i 2 eller 3 år nu, 226 00:14:50,510 --> 00:14:57,750 och det har inte funnits tillräckligt med tid att verkligen forska i operativsystem 227 00:14:57,750 --> 00:15:00,450 och vad de är kapabla till, och det inte har funnits tillräckligt med tid 228 00:15:00,450 --> 00:15:06,870 för skadliga samhället, om man så vill, att ha spenderat tillräckligt med tid 229 00:15:06,870 --> 00:15:12,910 försöker attackera användare genom mobila applikationer, så jag räknar med dessa listor för att ändra lite. 230 00:15:12,910 --> 00:15:18,720 Men för nu, dessa är de 10 saker att oroa sig för. 231 00:15:18,720 --> 00:15:24,150 Du kanske undrar på mobilsidan där gör skadlig mobil kod- 232 00:15:24,150 --> 00:15:28,880 hur går det få på enheten? 233 00:15:28,880 --> 00:15:35,210 North Carolina State har ett projekt som heter Mobile Malware Genome Project 234 00:15:35,210 --> 00:15:39,520 där de samlar så mycket mobil skadlig kod som de kan och analysera det, 235 00:15:39,520 --> 00:15:45,270 och de har brutit ner injektionsvektor att den mobila skadlig kod använder, 236 00:15:45,270 --> 00:15:51,490 och 86% använder en teknik som kallas ompackning, 237 00:15:51,490 --> 00:15:54,160 och detta är bara på Android-plattformen 238 00:15:54,160 --> 00:15:56,720 kan du verkligen göra det här ompackning. 239 00:15:56,720 --> 00:16:03,100 >> Anledningen är Android-kod är byggd med 240 00:16:03,100 --> 00:16:08,130 en Java byte-kod som heter Dalvik som är lätt decompilable. 241 00:16:08,130 --> 00:16:12,460 Vad den onde kan göra är 242 00:16:12,460 --> 00:16:16,590 ta en Android-applikation, dekompilera den, 243 00:16:16,590 --> 00:16:20,120 sätter sina skadlig kod, kompilera det, 244 00:16:20,120 --> 00:16:28,070 och sedan lägga upp den i App Store som utger sig för att vara en ny version av denna ansökan, 245 00:16:28,070 --> 00:16:30,330 eller bara kanske ändra namnet på programmet. 246 00:16:30,330 --> 00:16:35,140 Om det var någon sorts spel, ändra namnet en aning, 247 00:16:35,140 --> 00:16:42,860 och så denna ompaketering är hur 86% av mobil skadlig kod blir fördelade. 248 00:16:42,860 --> 00:16:45,810 Det finns en annan teknik som kallas uppdatering som är 249 00:16:45,810 --> 00:16:50,030 mycket lik ompackning, men du faktiskt inte sätta den skadliga koden i. 250 00:16:50,030 --> 00:16:52,870 Vad du gör är att du lägger in en liten uppdatering mekanism. 251 00:16:52,870 --> 00:16:56,660 Du dekompilera, sätta dig i en uppdateringsmekanism, och du kompilera det, 252 00:16:56,660 --> 00:17:02,360 och sedan när programmet körs det drar ner skadlig kod på enheten. 253 00:17:02,360 --> 00:17:06,300 >> De allra flesta är dessa två tekniker. 254 00:17:06,300 --> 00:17:12,710 Det är egentligen inte mycket nedladdning drive-bys eller drive-by downloads på mobiler, 255 00:17:12,710 --> 00:17:15,890 vilket skulle kunna vara som en nätfiskeattack. 256 00:17:15,890 --> 00:17:18,200 Hej, kolla in denna riktigt cool hemsida, 257 00:17:18,200 --> 00:17:21,020 eller du behöver gå till denna webbplats och fyll i formuläret 258 00:17:21,020 --> 00:17:24,420 att hålla fortsatt att göra något. 259 00:17:24,420 --> 00:17:26,230 De är phishing-attacker. 260 00:17:26,230 --> 00:17:28,160 Samma sak kan hända på den mobila plattformen där de 261 00:17:28,160 --> 00:17:33,830 pekar på en mobil app att ladda ner, säga "Hej, det här är Bank of America." 262 00:17:33,830 --> 00:17:36,070 "Vi ser att du använder det här programmet." 263 00:17:36,070 --> 00:17:38,540 "Du bör ladda ner andra program." 264 00:17:38,540 --> 00:17:41,170 Teoretiskt skulle det fungera. 265 00:17:41,170 --> 00:17:48,610 Kanske är det bara inte används tillräckligt för att avgöra om det är lyckat eller inte, 266 00:17:48,610 --> 00:17:51,680 men de fann att mindre än 1% av tiden som teknik används. 267 00:17:51,680 --> 00:17:56,130 Merparten av tiden är det verkligen en ompaketerade kod. 268 00:17:56,130 --> 00:17:58,710 >> Det finns en annan kategori som kallas fristående 269 00:17:58,710 --> 00:18:01,420 där någon bara bygger en helt ny applikation. 270 00:18:01,420 --> 00:18:04,020 De bygger ett program som utger sig för att vara något. 271 00:18:04,020 --> 00:18:07,360 Det är inte en ompaketering av något annat, och det har den skadliga koden. 272 00:18:07,360 --> 00:18:11,230 Det används 14% av tiden. 273 00:18:11,230 --> 00:18:17,880 Nu vill jag tala om vad som är den skadliga koden gör? 274 00:18:17,880 --> 00:18:23,070 En av de första malware där ute 275 00:18:23,070 --> 00:18:25,490 du kan överväga ett spionprogram. 276 00:18:25,490 --> 00:18:27,620 Det spionerar i grunden på användaren. 277 00:18:27,620 --> 00:18:30,470 Den samlar in e-post, SMS-meddelanden. 278 00:18:30,470 --> 00:18:32,340 Det visar på mikrofonen. 279 00:18:32,340 --> 00:18:37,330 Den skördar kontakt boken, och det skickar det till någon annan. 280 00:18:37,330 --> 00:18:40,870 Denna typ av spionprogram finns på datorn, 281 00:18:40,870 --> 00:18:46,200 så det verkar vettigt för människor att försöka göra detta på mobila enheter. 282 00:18:46,200 --> 00:18:53,230 >> Ett av de första exemplen på detta var ett program som heter Secret SMS Replicator. 283 00:18:53,230 --> 00:18:56,250 Det var i Android Marketplace för ett par år sedan, 284 00:18:56,250 --> 00:18:59,960 och tanken var om du hade tillgång till någons Android-telefon 285 00:18:59,960 --> 00:19:03,450 att du ville spionera på, så kanske det är din make 286 00:19:03,450 --> 00:19:07,600 eller din andra och du vill spionera på sina textmeddelanden, 287 00:19:07,600 --> 00:19:11,200 Du kan ladda ner den här appen och installera den och konfigurera den 288 00:19:11,200 --> 00:19:16,540 att skicka ett SMS till dig med en kopia 289 00:19:16,540 --> 00:19:21,710 för varje SMS-meddelande de fick. 290 00:19:21,710 --> 00:19:27,220 Detta är naturligtvis i kränkningar av App Store gäller service, 291 00:19:27,220 --> 00:19:32,040 och detta togs bort från Android Marketplace inom 18 timmar från det att vara där, 292 00:19:32,040 --> 00:19:36,760 så ett mycket litet antal människor var i riskzonen på grund av detta. 293 00:19:36,760 --> 00:19:42,510 Nu tror jag att programmet hette något kanske lite mindre provocerande 294 00:19:42,510 --> 00:19:48,690 som Secret SMS Replicator det förmodligen skulle ha fungerat mycket bättre. 295 00:19:48,690 --> 00:19:52,870 Men det var ganska självklart. 296 00:19:52,870 --> 00:19:58,680 >> En av de saker vi kan göra för att avgöra om apps har detta beteende som vi inte vill ha 297 00:19:58,680 --> 00:20:01,410 är att inspektera koden. 298 00:20:01,410 --> 00:20:06,250 Det här är faktiskt riktigt lätt att göra på Android eftersom vi kan dekompilera apps. 299 00:20:06,250 --> 00:20:11,050 På iOS kan du använda en disassembler som IDA Pro 300 00:20:11,050 --> 00:20:17,190 att titta på vad Apis appen ringer och vad den gör. 301 00:20:17,190 --> 00:20:20,680 Vi skrev vår egen binär statisk analysator för vår kod 302 00:20:20,680 --> 00:20:24,940 och det gör vi, och så vad du kan göra är att du kan säga 303 00:20:24,940 --> 00:20:30,490 inte enheten göra något som i grunden är spionerar på mig eller spåra mig? 304 00:20:30,490 --> 00:20:33,360 Och jag har några exempel här på iPhone. 305 00:20:33,360 --> 00:20:41,440 Det första exemplet är hur man kommer åt UUID på telefonen. 306 00:20:41,440 --> 00:20:47,060 Detta är faktiskt något som Apple just har förbjudit för nya tillämpningar, 307 00:20:47,060 --> 00:20:52,540 men gamla program som du kan ha som körs på telefonen kan fortfarande göra det här, 308 00:20:52,540 --> 00:20:56,500 och så att unika identifierare kan användas för att spåra dig 309 00:20:56,500 --> 00:21:00,440 i många olika applikationer. 310 00:21:00,440 --> 00:21:07,180 >> På Android, jag har ett exempel här för att få enhetens plats. 311 00:21:07,180 --> 00:21:10,310 Du kan se att om det API-anrop är där som app spårar, 312 00:21:10,310 --> 00:21:15,000 och du kan se om det blir fint läge eller grova plats. 313 00:21:15,000 --> 00:21:18,860 Och sedan på botten här, jag har ett exempel på hur på BlackBerry 314 00:21:18,860 --> 00:21:25,130 ett program kan komma åt e-postmeddelanden i inkorgen. 315 00:21:25,130 --> 00:21:27,660 Detta är den typ av saker som du kan kontrollera för att se 316 00:21:27,660 --> 00:21:32,360 Om appen gör dessa saker. 317 00:21:32,360 --> 00:21:38,320 Den andra stora kategorin av skadligt beteende, och detta är förmodligen den största kategorin nu, 318 00:21:38,320 --> 00:21:43,950 är obehörig uppringning, obehörig premium SMS-meddelanden 319 00:21:43,950 --> 00:21:46,080 eller obehöriga betalningar. 320 00:21:46,080 --> 00:21:48,930 En annan sak som är unikt med telefonen 321 00:21:48,930 --> 00:21:52,700 är att enheten är ansluten till ett faktureringskonto, 322 00:21:52,700 --> 00:21:55,960 och när verksamheten sker i telefon 323 00:21:55,960 --> 00:21:58,510 det kan skapa laddningar. 324 00:21:58,510 --> 00:22:00,700 Du kan köpa saker via telefon, 325 00:22:00,700 --> 00:22:04,390 och när du skickar ett premium SMS-meddelande du faktiskt ger pengar 326 00:22:04,390 --> 00:22:11,590 till kontohavaren i telefonnumret på den andra sidan. 327 00:22:11,590 --> 00:22:17,420 Dessa sattes upp för att få aktiekurser eller få din dagliga horoskop eller annat 328 00:22:17,420 --> 00:22:21,680 men de kan ställas in för att beställa en produkt genom att skicka ett SMS. 329 00:22:21,680 --> 00:22:26,970 Människor ger pengar till Röda Korset genom att skicka ett textmeddelande. 330 00:22:26,970 --> 00:22:30,650 Du kan ge 10 $ på det sättet. 331 00:22:30,650 --> 00:22:34,190 >> Angriparna, vad de har gjort är att de satt upp 332 00:22:34,190 --> 00:22:38,750 konton i utlandet, och de bädda i malware 333 00:22:38,750 --> 00:22:42,840 att telefonen kommer att skicka ett premium SMS-meddelande, 334 00:22:42,840 --> 00:22:47,700 säga, ett par gånger om dagen, och i slutet av månaden som du inser att du har spenderat 335 00:22:47,700 --> 00:22:52,090 tiotals eller kanske hundratals dollar, och de går iväg med pengarna. 336 00:22:52,090 --> 00:22:57,280 Det blev så illa att det var det allra första som Android 337 00:22:57,280 --> 00:23:00,760 Marketplace eller Googles plats-det var Android Marketplace på tiden, 338 00:23:00,760 --> 00:23:04,430 och det är nu Google Play-det första som Google började kolla efter. 339 00:23:04,430 --> 00:23:08,700 När Google började distribuera Android apps i deras App Store 340 00:23:08,700 --> 00:23:11,350 de sa att de inte skulle kontrollera om någonting. 341 00:23:11,350 --> 00:23:15,630 Vi ska dra appar när vi har anmälts att de har brutit våra användarvillkor, 342 00:23:15,630 --> 00:23:17,520 men vi kommer inte att leta efter något. 343 00:23:17,520 --> 00:23:24,350 Tja, ungefär ett år sedan blev det så illa med denna premium SMS-meddelande malware 344 00:23:24,350 --> 00:23:28,030 att detta är den allra första de började kolla efter. 345 00:23:28,030 --> 00:23:31,770 Om en app kan skicka SMS-meddelanden 346 00:23:31,770 --> 00:23:34,750 de kontrollera denna ansökan vidare manuellt. 347 00:23:34,750 --> 00:23:38,770 De letar efter de API: er som kallar detta, 348 00:23:38,770 --> 00:23:40,580 och nu sedan Google har expanderat, 349 00:23:40,580 --> 00:23:46,900 men detta var det första som de började leta efter. 350 00:23:46,900 --> 00:23:50,690 >> Några andra program som gjorde några SMS-meddelanden, 351 00:23:50,690 --> 00:23:56,980 denna Android Qicsomos, jag antar att det kallas. 352 00:23:56,980 --> 00:24:02,670 Det var en aktuell händelse på mobilen där denna CarrierIQ kom ut 353 00:24:02,670 --> 00:24:07,720 som spionprogram sätta på apparaten från transportörerna, 354 00:24:07,720 --> 00:24:10,820 så att folk ville veta om deras telefon var utsatta för detta, 355 00:24:10,820 --> 00:24:13,890 och detta var en gratis app som testade det. 356 00:24:13,890 --> 00:24:17,520 Jo, naturligtvis, vad denna app gjorde var det skickade premium SMS-meddelanden, 357 00:24:17,520 --> 00:24:20,090 så genom att testa för att se om du är infekterad med spionprogram 358 00:24:20,090 --> 00:24:24,930 du laddat skadliga program till din enhet. 359 00:24:24,930 --> 00:24:27,310 Vi såg samma sak hända i sista Super Bowl. 360 00:24:27,310 --> 00:24:33,180 Det var en falsk version av Madden fotbollsmatch 361 00:24:33,180 --> 00:24:38,320 som skickade premium SMS-meddelanden. 362 00:24:38,320 --> 00:24:45,750 Den försökte verkligen att skapa ett bot-nätverk också på enheten. 363 00:24:45,750 --> 00:24:48,090 Här har jag några exempel. 364 00:24:48,090 --> 00:24:52,640 Intressant nog, Apple var ganska smart, 365 00:24:52,640 --> 00:24:58,470 och de inte tillåter applikationer att skicka SMS-meddelanden alls. 366 00:24:58,470 --> 00:25:00,350 Ingen app kan göra det. 367 00:25:00,350 --> 00:25:03,530 Det är ett bra sätt att bli av med en hel klass av sårbarhet, 368 00:25:03,530 --> 00:25:09,040 men på Android kan du göra det, och naturligtvis på BlackBerry kan du göra det också. 369 00:25:09,040 --> 00:25:13,060 Det är intressant att på BlackBerry allt du behöver är Internet behörigheter 370 00:25:13,060 --> 00:25:18,370 att skicka ett SMS-meddelande. 371 00:25:18,370 --> 00:25:21,580 >> Den andra saken riktigt att vi söker 372 00:25:21,580 --> 00:25:24,780 När vi är ute efter att se om något är skadligt är bara någon form av 373 00:25:24,780 --> 00:25:28,100 obehörig nätverksaktivitet, liksom titta på nätverksaktivitet 374 00:25:28,100 --> 00:25:31,570 appen är tänkt att ha sin funktion, 375 00:25:31,570 --> 00:25:35,380 och titta på denna andra nätverksaktivitet. 376 00:25:35,380 --> 00:25:43,380 Kanske en app, för att arbeta, måste få data över HTTP, 377 00:25:43,380 --> 00:25:47,500 men om det är att göra saker via e-post eller SMS eller Bluetooth eller något liknande 378 00:25:47,500 --> 00:25:52,890 nu som app skulle kunna vara skadlig, så detta är en annan sak du kan kontrollera för. 379 00:25:52,890 --> 00:26:00,430 Och på denna bild här har jag några exempel på det. 380 00:26:00,430 --> 00:26:05,950 En annan intressant sak som vi såg med skadlig kod som hände under 2009, 381 00:26:05,950 --> 00:26:07,600 och det hände på ett bra sätt. 382 00:26:07,600 --> 00:26:11,390 Jag vet inte om det har hänt så mycket sedan dess, men det var en app 383 00:26:11,390 --> 00:26:15,140 som impersonated annat program. 384 00:26:15,140 --> 00:26:21,700 Det fanns en uppsättning program, och det dubbades 09Droid attacken, 385 00:26:21,700 --> 00:26:29,770 och någon bestämde att det fanns en hel del små, regionala, medelstora banker 386 00:26:29,770 --> 00:26:32,260 som inte har online-banktjänster, 387 00:26:32,260 --> 00:26:36,870 så vad de gjorde var att de byggde cirka 50 online-banktjänster 388 00:26:36,870 --> 00:26:39,410 att allt de gjorde var att ta det användarnamn och lösenord 389 00:26:39,410 --> 00:26:42,190 och omdirigera dig till webbplatsen. 390 00:26:42,190 --> 00:26:47,470 Och så de satte dem alla upp i Google Marketplace, 391 00:26:47,470 --> 00:26:51,530 i Android Marketplace, och när någon sökte för att se om deras bank 392 00:26:51,530 --> 00:26:56,000 hade ett program de skulle finna det falska programmet, 393 00:26:56,000 --> 00:27:01,230 som samlas in sina meriter och sedan omdirigeras dem till deras hemsida. 394 00:27:01,230 --> 00:27:06,640 Det sätt som detta faktiskt blev-apps var uppe för ett par veckor, 395 00:27:06,640 --> 00:27:09,050 och det fanns tusentals nedladdningar. 396 00:27:09,050 --> 00:27:12,910 >> Sättet det här uppdagades var någon hade ett problem 397 00:27:12,910 --> 00:27:15,740 med en av ansökningarna, och de kallade sin bank, 398 00:27:15,740 --> 00:27:18,390 och de kallade sin bank kundsupport linje och sa, 399 00:27:18,390 --> 00:27:21,180 "Jag har ett problem med din mobila bank applikation." 400 00:27:21,180 --> 00:27:23,460 "Kan du hjälpa mig?" 401 00:27:23,460 --> 00:27:26,540 De svarade: "Vi har inte en mobil bankapplikation." 402 00:27:26,540 --> 00:27:28,120 Det startade utredningen. 403 00:27:28,120 --> 00:27:31,200 Den bank som heter Google, och sedan Google tittade och sa, 404 00:27:31,200 --> 00:27:37,220 "Wow, har samma författare skrivit 50 bankapplikationer," och tog dem alla. 405 00:27:37,220 --> 00:27:43,410 Men visst det kan hända igen. 406 00:27:43,410 --> 00:27:51,790 Det finns en lista över alla olika banker här 407 00:27:51,790 --> 00:27:55,870 som var en del av denna bluff. 408 00:27:55,870 --> 00:28:02,050 Den andra saken som en app kan göra är närvarande UI i ett annat program. 409 00:28:02,050 --> 00:28:06,430 Även om det är igång kan det dyka upp på Facebook-UI. 410 00:28:06,430 --> 00:28:09,540 Den säger att du måste lägga in ditt användarnamn och lösenord för att fortsätta 411 00:28:09,540 --> 00:28:15,090 eller sätta upp något användarnamn och lösenord UI för en webbplats 412 00:28:15,090 --> 00:28:18,420 att kanske användaren använder bara för att försöka lura användaren 413 00:28:18,420 --> 00:28:21,340 till att sätta sina meriter i. 414 00:28:21,340 --> 00:28:25,590 Detta är verkligen en rak parallell av e nätfiskeattacker 415 00:28:25,590 --> 00:28:28,210 där någon skickar ett e-postmeddelande 416 00:28:28,210 --> 00:28:33,050 och ger i princip en falsk UI för en webbplats 417 00:28:33,050 --> 00:28:37,320 att du har tillgång till. 418 00:28:37,320 --> 00:28:41,590 >> Den andra saken vi söker i skadlig kod är systemet modifiering. 419 00:28:41,590 --> 00:28:48,160 Du kan söka efter alla API-anrop som kräver root-rättigheter 420 00:28:48,160 --> 00:28:50,870 att utföra fullständigt. 421 00:28:50,870 --> 00:28:56,160 Ändra enhetens webbproxy skulle vara något som en ansökan 422 00:28:56,160 --> 00:28:59,530 bör inte kunna göra. 423 00:28:59,530 --> 00:29:03,030 Men om programmet har koden in där för att göra det 424 00:29:03,030 --> 00:29:05,960 du vet att det är nog ett skadligt program 425 00:29:05,960 --> 00:29:09,620 eller mycket stor sannolikhet att vara ett skadligt program, 426 00:29:09,620 --> 00:29:13,910 och så vad som skulle hända är att app skulle ha något sätt att eskalerande privilegier. 427 00:29:13,910 --> 00:29:17,200 Det skulle ha några privilegier utnyttja 428 00:29:17,200 --> 00:29:20,730 i ansökan, och sedan när det eskalerade privilegier 429 00:29:20,730 --> 00:29:23,800 det skulle göra dessa systemförändringar. 430 00:29:23,800 --> 00:29:28,010 Du kan hitta skadlig kod som har privilegier 431 00:29:28,010 --> 00:29:32,550 i det även utan att veta hur privilegier 432 00:29:32,550 --> 00:29:37,960 utnyttja kommer att hända, och det är ett trevligt och enkelt sätt 433 00:29:37,960 --> 00:29:41,220 att söka efter skadlig kod. 434 00:29:41,220 --> 00:29:46,030 DroidDream var förmodligen den mest kända stycke Android malware. 435 00:29:46,030 --> 00:29:50,530 Jag tror att det påverkade omkring 250.000 användare över några dagar 436 00:29:50,530 --> 00:29:52,810 innan den hittades. 437 00:29:52,810 --> 00:29:56,890 De ompaketerade 50 falska applikationer, 438 00:29:56,890 --> 00:30:00,370 sätta dem i Android App Store, 439 00:30:00,370 --> 00:30:10,940 och i huvudsak används den Android jailbreak kod för att eskalera privilegier 440 00:30:10,940 --> 00:30:16,380 och sedan installera ett kommando och kontroll och vrid alla offer 441 00:30:16,380 --> 00:30:20,690 in i en bot nät, men du kunde ha upptäckt detta 442 00:30:20,690 --> 00:30:24,170 Om du skannar ansökan och bara letar efter 443 00:30:24,170 --> 00:30:32,230 API-anrop som krävs root behörighet att köra på rätt sätt. 444 00:30:32,230 --> 00:30:40,150 >> Och det finns ett exempel här har jag som ändrar proxy, 445 00:30:40,150 --> 00:30:46,380 och detta faktiskt är endast tillgänglig på Android. 446 00:30:46,380 --> 00:30:49,070 Du kan se Jag ger dig en hel del exempel på Android 447 00:30:49,070 --> 00:30:53,990 eftersom det är där de mest aktiva malware ekosystem är 448 00:30:53,990 --> 00:30:58,690 eftersom det är verkligen lätt för en angripare att få skadlig kod 449 00:30:58,690 --> 00:31:01,470 i Android Marketplace. 450 00:31:01,470 --> 00:31:06,480 Det är inte så lätt att göra det i Apple App Store 451 00:31:06,480 --> 00:31:10,250 eftersom Apple kräver utvecklare att identifiera sig 452 00:31:10,250 --> 00:31:12,790 och signera koden. 453 00:31:12,790 --> 00:31:20,340 De kontrollerar faktiskt vem du är, och Apple är faktiskt granska ansökningarna. 454 00:31:20,340 --> 00:31:27,450 Vi ser inte mycket av verklig malware där anordningen blir äventyras. 455 00:31:27,450 --> 00:31:32,250 Jag kommer att tala om några exempel där det är riktigt privatliv som börjar bli äventyras, 456 00:31:32,250 --> 00:31:38,460 och det är vad som verkligen händer på Apple-enheten. 457 00:31:38,460 --> 00:31:44,090 En annan sak att leta efter skadlig kod, riskabel kod i enheter 458 00:31:44,090 --> 00:31:50,300 är logiska eller tidsinställda bomber, och tidsinställda bomber är förmodligen 459 00:31:50,300 --> 00:31:53,370 mycket lättare att leta efter än logiska bomber. 460 00:31:53,370 --> 00:31:57,030 Men med tidsinställda bomber, vad du kan göra är att du kan leta efter 461 00:31:57,030 --> 00:32:04,760 ställen i koden där tiden testas eller en absolut tid sökt 462 00:32:04,760 --> 00:32:08,190 innan vissa funktioner i appen händer. 463 00:32:08,190 --> 00:32:14,200 Och detta kan göras för att dölja denna verksamhet från användaren, 464 00:32:14,200 --> 00:32:17,510 så det händer sent på natten. 465 00:32:17,510 --> 00:32:24,350 DroidDream gjorde all sin verksamhet från 11:00 till 08:00 lokal tid 466 00:32:24,350 --> 00:32:30,650 att försöka göra det samtidigt som användaren inte kanske använder sin enhet. 467 00:32:30,650 --> 00:32:38,680 >> Ett annat skäl för att göra detta är om folk använder beteendeanalys av en ansökan, 468 00:32:38,680 --> 00:32:43,430 kör appen i en sandlåda för att se vad beteendet av ansökan, 469 00:32:43,430 --> 00:32:51,090 de kan använda tidsbaserad logik för att göra verksamheten 470 00:32:51,090 --> 00:32:54,640 När appen är inte i sandlådan. 471 00:32:54,640 --> 00:33:01,520 Till exempel, en App Store som Apple 472 00:33:01,520 --> 00:33:07,940 kör programmet, men de förmodligen inte kör varje ansökan om, säg, 30 dagar 473 00:33:07,940 --> 00:33:10,550 innan du godkänner det, så kan du lägga 474 00:33:10,550 --> 00:33:14,120 logik i din applikation som sagt, okej, bara göra det dåliga 475 00:33:14,120 --> 00:33:20,490 efter 30 dagar har gått eller efter 30 dagar efter publiceringsdatum för ansökan, 476 00:33:20,490 --> 00:33:27,020 och som kan hjälpa den skadliga koden dölja från människor inspekterar för det. 477 00:33:27,020 --> 00:33:30,050 Om antivirusföretag kör saker i sandlådor 478 00:33:30,050 --> 00:33:36,370 eller app butiker själva är detta kan hjälpa 479 00:33:36,370 --> 00:33:39,260 dölja det från denna inspektion. 480 00:33:39,260 --> 00:33:43,020 Nu, den andra sidan av det är det är lätt att hitta med statisk analys, 481 00:33:43,020 --> 00:33:46,170 så faktiskt inspektera koden som du kan leta efter alla platser 482 00:33:46,170 --> 00:33:54,010 där ansökan testar tid och inspektera det sättet. 483 00:33:54,010 --> 00:33:58,850 Och här har jag några exempel på dessa tre olika plattformar 484 00:33:58,850 --> 00:34:05,640 hur kan kontrolleras tiden för den app maker 485 00:34:05,640 --> 00:34:10,520 så du vet vad du ska leta efter om du inspekterar appen statiskt. 486 00:34:10,520 --> 00:34:14,570 >> Jag gick bara igenom en hel massa olika skadliga aktiviteter 487 00:34:14,570 --> 00:34:18,969 som vi har sett i det vilda, men vilka som är de vanligaste? 488 00:34:18,969 --> 00:34:23,940 Samma studie från North Carolina State Mobile Genome Project 489 00:34:23,940 --> 00:34:28,560 publicerat några uppgifter, och det fanns i princip fyra områden 490 00:34:28,560 --> 00:34:32,850 att de såg där det fanns en hel del verksamhet. 491 00:34:32,850 --> 00:34:35,370 37% av de apps gjorde privilegier, 492 00:34:35,370 --> 00:34:38,429 så de hade någon typ av jailbreak-kod i det 493 00:34:38,429 --> 00:34:42,070 där de försökte att eskalera privilegier, så att de kunde 494 00:34:42,070 --> 00:34:48,360 gör API-kommandon körs som operativsystem. 495 00:34:48,360 --> 00:34:52,520 45% av de program där ute gjorde premium SMS, 496 00:34:52,520 --> 00:34:57,260 så det är en stor andel som försöker att direkt tjäna pengar. 497 00:34:57,260 --> 00:35:02,640 93% gjorde fjärrkontroll, så de försökte sätta upp en bot net, en mobil bot nät. 498 00:35:02,640 --> 00:35:08,990 Och 45% skördas identifieringsinformation 499 00:35:08,990 --> 00:35:16,230 som telefonnummer, UUID, GPS-position, användarkonton, 500 00:35:16,230 --> 00:35:22,870 och detta innebär att mer än 100 eftersom de flesta skadliga program försöker göra några av dessa saker. 501 00:35:22,870 --> 00:35:27,070 >> Jag kommer att byta till den andra halvan och prata om koden sårbarheter. 502 00:35:27,070 --> 00:35:29,480 Detta är den andra halvan av den riskfylld verksamhet. 503 00:35:29,480 --> 00:35:33,450 Det är här i huvudsak utvecklaren gör fel. 504 00:35:33,450 --> 00:35:37,210 En legitim utvecklare skriva en legitim app 505 00:35:37,210 --> 00:35:41,830 gör fel eller är okunniga om riskerna för den mobila plattformen. 506 00:35:41,830 --> 00:35:44,780 De vet bara inte hur man gör en säker mobil app, 507 00:35:44,780 --> 00:35:47,700 eller ibland utvecklaren inte bryr sig om att sätta användaren i riskzonen. 508 00:35:47,700 --> 00:35:50,850 Ibland är en del av deras affärsmodell kan vara 509 00:35:50,850 --> 00:35:54,610 skörd av användarens personliga information. 510 00:35:54,610 --> 00:35:58,090 Det blir liksom den andra kategorin, och det är därför en del av denna skadliga 511 00:35:58,090 --> 00:36:03,200 kontra legitima börjar blöda över eftersom det finns olika uppfattningar 512 00:36:03,200 --> 00:36:10,440 mellan vad användaren vill och vad användaren anser riskabelt 513 00:36:10,440 --> 00:36:13,050 och vad programutvecklaren anser riskabelt. 514 00:36:13,050 --> 00:36:18,380 Naturligtvis är det inte programmet utvecklarens uppgifter i de flesta fall. 515 00:36:18,380 --> 00:36:22,030 >> Och slutligen, är ett annat sätt detta sker en utvecklare kan länka in 516 00:36:22,030 --> 00:36:28,600 ett delat bibliotek som har sårbarheter eller detta riskbeteende i det 517 00:36:28,600 --> 00:36:32,480 okänt för dem. 518 00:36:32,480 --> 00:36:37,060 Den första kategorin är känslig dataläckage, 519 00:36:37,060 --> 00:36:40,030 och det är när appen samlar in information 520 00:36:40,030 --> 00:36:44,980 liknande plats, adressbok, ägarinformation 521 00:36:44,980 --> 00:36:48,000 och skickar det av enheten. 522 00:36:48,000 --> 00:36:53,050 Och när det är av enheten, vet vi inte vad som händer med den informationen. 523 00:36:53,050 --> 00:36:57,170 Det skulle kunna lagras på ett osäkert av programutvecklaren. 524 00:36:57,170 --> 00:37:02,070 Vi har sett applikationsutvecklare får äventyras, 525 00:37:02,070 --> 00:37:05,820 och de uppgifter som de ska förvara får tas. 526 00:37:05,820 --> 00:37:10,970 Detta hände för några månader sedan till en utvecklare i Florida 527 00:37:10,970 --> 00:37:21,660 där ett stort antal-det var iPad UUID och enhetsnamn 528 00:37:21,660 --> 00:37:25,270 läckte ut för att någon, jag tror det var anonym, 529 00:37:25,270 --> 00:37:29,460 hävdade att göra detta, bröt sig in i denna utvecklarens servrar 530 00:37:29,460 --> 00:37:34,920 och stal miljontals iPad UUID 531 00:37:34,920 --> 00:37:37,390 och datornamn. 532 00:37:37,390 --> 00:37:40,260 Inte den mest riskfyllda uppgifter, 533 00:37:40,260 --> 00:37:46,820 men tänk om det var lagring av användarnamn och lösenord 534 00:37:46,820 --> 00:37:48,170 och hemadresser? 535 00:37:48,170 --> 00:37:51,100 Det finns massor av program som lagrar den typen av information. 536 00:37:51,100 --> 00:37:53,230 Risken är där. 537 00:37:53,230 --> 00:37:56,620 >> Det andra som kan hända är om utvecklaren inte tar hand 538 00:37:56,620 --> 00:38:01,370 för att säkra datakanalen, och det är en annan stor sårbarhet jag ska prata om, 539 00:38:01,370 --> 00:38:05,160 att data skickas i klartext. 540 00:38:05,160 --> 00:38:09,040 Om användaren är på en Wi-Fi-nätverk 541 00:38:09,040 --> 00:38:12,330 eller någon sniffar på internet någonstans 542 00:38:12,330 --> 00:38:19,260 längs den väg som data exponeras. 543 00:38:19,260 --> 00:38:23,790 En mycket berömda fallet av denna informationsläckage hände med Pandora, 544 00:38:23,790 --> 00:38:27,250 och detta är något som vi forskat på Veracode. 545 00:38:27,250 --> 00:38:33,200 Vi hörde att det fanns en-Jag tror det var en Federal Trade Commission 546 00:38:33,200 --> 00:38:35,310 utredning pågår med Pandora. 547 00:38:35,310 --> 00:38:39,830 Vi sa, "Vad är det som händer där? Låt oss börja gräva i Pandora programmet." 548 00:38:39,830 --> 00:38:46,690 Och vad vi fastställt var Pandora programmet samlas 549 00:38:46,690 --> 00:38:51,270 ditt kön och din ålder, 550 00:38:51,270 --> 00:38:56,660 och det också åt din GPS-position, och Pandora ansökan 551 00:38:56,660 --> 00:39:00,200 gjorde detta för vad de sa var legitima skäl. 552 00:39:00,200 --> 00:39:05,360 Den musik som de spelade-Pandora är en musikstreaming app- 553 00:39:05,360 --> 00:39:07,530 musiken de spelade var bara licensierade i USA, 554 00:39:07,530 --> 00:39:13,020 så de var tvungna att kolla att uppfylla sina licensavtal som de hade 555 00:39:13,020 --> 00:39:17,240 för musiken som användaren var i USA. 556 00:39:17,240 --> 00:39:25,070 De ville också att följa föräldrarnas rådgivande 557 00:39:25,070 --> 00:39:33,790 runt vuxenspråk i musik, 558 00:39:33,790 --> 00:39:37,500 och så det är ett frivilligt program, men de ville följa det 559 00:39:37,500 --> 00:39:43,010 och inte spela explicita texter för barn 13 och under. 560 00:39:43,010 --> 00:39:46,280 >> De hade legitima skäl för att samla in dessa data. 561 00:39:46,280 --> 00:39:49,160 Deras app hade behörighet att göra det. 562 00:39:49,160 --> 00:39:52,000 Användare som tyckte detta var legitim. Men vad hände? 563 00:39:52,000 --> 00:39:55,810 De länkade i 3 eller 4 olika annonsbibliotek. 564 00:39:55,810 --> 00:39:59,140 Nu helt plötsligt alla dessa annons bibliotek 565 00:39:59,140 --> 00:40:02,970 får tillgång till denna samma information. 566 00:40:02,970 --> 00:40:05,830 Biblioteken ad, om man tittar på koden i biblioteken annons 567 00:40:05,830 --> 00:40:08,430 vad de gör är varje annons bibliotek säger 568 00:40:08,430 --> 00:40:11,340 "Har min app har tillåtelse att få GPS-position?" 569 00:40:11,340 --> 00:40:14,890 "Åh, det gör? Okej, säg mig den GPS-position." 570 00:40:14,890 --> 00:40:16,620 Varenda annonsbibliotek gör det, 571 00:40:16,620 --> 00:40:19,740 och om appen inte har GPS-tillstånd 572 00:40:19,740 --> 00:40:23,460 det kommer inte att kunna få det, men om det gör det, kommer det att få det. 573 00:40:23,460 --> 00:40:26,240 Det är där den affärsmodell av biblioteken annons 574 00:40:26,240 --> 00:40:31,160 motsätter sig privatlivet för användaren. 575 00:40:31,160 --> 00:40:34,980 Och det har varit studier där ute som kommer att säga om du känner till åldern 576 00:40:34,980 --> 00:40:38,430 av en person och du vet var de befinner 577 00:40:38,430 --> 00:40:42,530 där de sover på natten, eftersom du har deras GPS-koordinaterna 578 00:40:42,530 --> 00:40:46,030 medan de kanske sover, du vet exakt vem personen är 579 00:40:46,030 --> 00:40:50,230 eftersom du kan avgöra vilken medlem i det hushållet är den personen. 580 00:40:50,230 --> 00:40:54,780 Verkligen detta är att identifiera för annonsörer 581 00:40:54,780 --> 00:40:59,530 exakt vem du är, och det ser ut som det var legitimt. 582 00:40:59,530 --> 00:41:02,800 Jag vill bara ha min strömmande musik, och det är det enda sättet att få det. 583 00:41:02,800 --> 00:41:05,370 >> Tja, vi utsätts detta. 584 00:41:05,370 --> 00:41:08,030 Vi skrev upp i flera blogginlägg, 585 00:41:08,030 --> 00:41:13,280 och det visade sig att någon från Rolling Stone magazine 586 00:41:13,280 --> 00:41:18,810 läsa en av våra blogginlägg och skrev sin egen blogg i Rolling Stone om det, 587 00:41:18,810 --> 00:41:22,120 och redan nästa dag Pandora tyckte det var en bra idé 588 00:41:22,120 --> 00:41:27,600 att ta bort biblioteken annons från tillämpning. 589 00:41:27,600 --> 00:41:31,270 Såvitt jag vet att de är det enda-de bör berömmas. 590 00:41:31,270 --> 00:41:35,770 Jag tror att de är det enda freemium typ av app som har gjort detta. 591 00:41:35,770 --> 00:41:38,660 Alla andra Freemium apps har samma beteende, 592 00:41:38,660 --> 00:41:41,780 så du måste tänka på vilken typ av data du ger 593 00:41:41,780 --> 00:41:48,330 dessa Freemium applikationer eftersom det hela kommer att annonsörer. 594 00:41:48,330 --> 00:41:53,390 Praetorian gjorde också en studie om delade bibliotek och sade, 595 00:41:53,390 --> 00:41:57,100 "Låt oss titta på vad delade biblioteken är de delade bibliotek," och detta var datan. 596 00:41:57,100 --> 00:41:59,420 >> De analyserade 53.000 apps, 597 00:41:59,420 --> 00:42:01,900 och antalet 1 delade biblioteket var Admob. 598 00:42:01,900 --> 00:42:06,060 Det var faktiskt i 38% av ansökningarna där ute, 599 00:42:06,060 --> 00:42:08,800 så 38% av de program du använder 600 00:42:08,800 --> 00:42:11,250 är sannolikt att skörda din personliga information 601 00:42:11,250 --> 00:42:16,650 och skicka den till annonsnätverk. 602 00:42:16,650 --> 00:42:19,350 Apache och Android var 8% respektive 6%, 603 00:42:19,350 --> 00:42:22,960 och sedan de andra som ner i botten, Google-annonser, Flurry, 604 00:42:22,960 --> 00:42:26,600 Mob City och tusenåriga Media, 605 00:42:26,600 --> 00:42:30,500 dessa är alla annonsföretag, och sedan, intressant nog, 606 00:42:30,500 --> 00:42:33,500 4% länkad i Facebook biblioteket 607 00:42:33,500 --> 00:42:38,870 förmodligen att göra autentisering via Facebook 608 00:42:38,870 --> 00:42:40,810 så appen kan autentisera Facebook. 609 00:42:40,810 --> 00:42:44,660 Men det betyder också att företaget Facebook kontrollerar koden 610 00:42:44,660 --> 00:42:49,010 som kör i 4% av Android mobila apps där ute, 611 00:42:49,010 --> 00:42:53,490 och de har tillgång till alla de uppgifter som denna app har behörighet att komma åt. 612 00:42:53,490 --> 00:42:57,170 Facebook försöker i huvudsak att sälja reklamtid. 613 00:42:57,170 --> 00:43:00,120 Det är deras affärsmodell. 614 00:43:00,120 --> 00:43:02,920 >> Om du tittar på hela den här ekosystemet med dessa behörigheter 615 00:43:02,920 --> 00:43:07,740 och delade bibliotek som du börjar att se att 616 00:43:07,740 --> 00:43:13,850 du har en hel del risker i ett förment legitim applikation. 617 00:43:13,850 --> 00:43:19,360 Samma liknande sak som hände med Pandora 618 00:43:19,360 --> 00:43:22,340 hände med ett program som heter Path, 619 00:43:22,340 --> 00:43:27,660 och Path trodde att de var hjälpsamma och vänliga utvecklare. 620 00:43:27,660 --> 00:43:32,160 De försökte bara ge dig en bra användarupplevelse, 621 00:43:32,160 --> 00:43:37,810 och det visade sig att utan att fråga användaren eller berätta för användaren vad som helst- 622 00:43:37,810 --> 00:43:40,400 och detta hände på iPhone och på Android, 623 00:43:40,400 --> 00:43:44,420 Pandora app var på iPhone och Android- 624 00:43:44,420 --> 00:43:48,890 att Path ansökan greppa hela din adressbok 625 00:43:48,890 --> 00:43:52,830 och ladda upp den till Path precis när du installerat och sprang ansökan, 626 00:43:52,830 --> 00:43:55,840 och de inte berätta om detta. 627 00:43:55,840 --> 00:43:58,750 De tyckte det var riktigt bra för dig 628 00:43:58,750 --> 00:44:04,040 för att kunna dela med alla människor i din adressbok 629 00:44:04,040 --> 00:44:06,920 att du använder Path programmet. 630 00:44:06,920 --> 00:44:09,490 >> Tja, uppenbarligen Path tyckte detta var bra för deras företag. 631 00:44:09,490 --> 00:44:13,510 Inte så bra för användaren. 632 00:44:13,510 --> 00:44:19,020 Du måste tänka att det är en sak om kanske en tonåring 633 00:44:19,020 --> 00:44:23,700 använder denna ansökan och deras dussintals vänner är där inne, 634 00:44:23,700 --> 00:44:29,360 men tänk om det är VD för ett företag som installerar Path 635 00:44:29,360 --> 00:44:33,170 och sedan helt plötsligt hela sin adressbok är där uppe? 636 00:44:33,170 --> 00:44:38,310 Du kommer att få en hel del potentiellt värdefull kontaktinformation 637 00:44:38,310 --> 00:44:40,920 för många människor. 638 00:44:40,920 --> 00:44:44,500 En reporter från New York Times, kanske du kan få telefonnumret 639 00:44:44,500 --> 00:44:47,380 för före detta presidenter från sin adressbok, 640 00:44:47,380 --> 00:44:54,780 så uppenbarligen en hel del känslig information får överföras med något sånt här. 641 00:44:54,780 --> 00:44:58,090 Det var en så stor flik om detta att Path bad om ursäkt. 642 00:44:58,090 --> 00:45:01,610 De ändrade sin app, och det till och med påverkade Apple. 643 00:45:01,610 --> 00:45:06,950 Apple sade, "Vi kommer att tvinga app leverantörer att uppmana användarna 644 00:45:06,950 --> 00:45:12,650 om de kommer att samla hela sin adressbok. " 645 00:45:12,650 --> 00:45:15,360 >> Det ser ut som det som händer här är 646 00:45:15,360 --> 00:45:19,430 när det finns ett stort integritetsintrång och det gör pressen 647 00:45:19,430 --> 00:45:21,680 Vi ser en förändring där ute. 648 00:45:21,680 --> 00:45:23,230 Men naturligtvis, det finns andra saker där ute. 649 00:45:23,230 --> 00:45:27,440 Den Linkedin programmet skördar kalenderposter, 650 00:45:27,440 --> 00:45:34,530 men Apple inte gör användaren att bli tillfrågad om det. 651 00:45:34,530 --> 00:45:38,030 Kalenderposter kan ha känslig information i dem också. 652 00:45:38,030 --> 00:45:40,000 Vart ska du dra gränsen? 653 00:45:40,000 --> 00:45:43,960 Detta är verkligen typ av en framväxande plats 654 00:45:43,960 --> 00:45:47,640 där det finns egentligen ingen bra standard där ute 655 00:45:47,640 --> 00:45:51,990 för användarna att förstå när deras information kommer att vara i riskzonen 656 00:45:51,990 --> 00:45:57,820 och när de ska vet att det tas. 657 00:45:57,820 --> 00:46:03,040 Vi skrev en app på Veracode heter Adios, 658 00:46:03,040 --> 00:46:08,350 och i huvudsak det får dig att peka appen på iTunes-katalogen 659 00:46:08,350 --> 00:46:12,550 och titta på alla program som skördar hela din adressbok. 660 00:46:12,550 --> 00:46:19,760 Och som ni kan se på denna lista här, Angry Birds, 661 00:46:19,760 --> 00:46:21,590 AIM, AroundMe. 662 00:46:21,590 --> 00:46:24,050 Varför Angry Birds behöver din adressbok? 663 00:46:24,050 --> 00:46:29,160 Jag vet inte, men det gör det på något sätt. 664 00:46:29,160 --> 00:46:32,310 >> Detta är något som många, många applikationer gör. 665 00:46:32,310 --> 00:46:34,780 Du kan inspektera koden för detta. 666 00:46:34,780 --> 00:46:38,660 Det finns väldefinierade API: er för iPhone, Android och BlackBerry 667 00:46:38,660 --> 00:46:42,120 att komma åt adressboken. 668 00:46:42,120 --> 00:46:48,520 Du kan verkligen lätt att inspektera för detta, och det är vad vi gjorde i vår Adios applikation. 669 00:46:48,520 --> 00:46:52,320 Nästa kategori, Unsafe Känsliga datalagring, 670 00:46:52,320 --> 00:46:55,670 är något där utvecklare ta något som en nål eller ett kontonummer 671 00:46:55,670 --> 00:46:58,530 eller ett lösenord och förvara det på det klara på enheten. 672 00:46:58,530 --> 00:47:02,310 Ännu värre, kan de förvaras i ett område i telefon 673 00:47:02,310 --> 00:47:06,820 som är globalt tillgängliga, som SD-kortet. 674 00:47:06,820 --> 00:47:11,320 Du ser detta oftare på Android eftersom Android möjliggör ett SD-kort. 675 00:47:11,320 --> 00:47:13,200 IPhone-enheter inte. 676 00:47:13,200 --> 00:47:17,900 Men vi såg även detta hända i ett Citigroup applikation. 677 00:47:17,900 --> 00:47:25,450 Deras internet bank lagrad kontonumren osäkert, 678 00:47:25,450 --> 00:47:28,120 bara i det klara, så om du förlorat din enhet, 679 00:47:28,120 --> 00:47:30,670 i huvudsak du förlorat ditt bankkonto. 680 00:47:30,670 --> 00:47:36,000 Det är därför jag personligen inte gör bank på min iPhone. 681 00:47:36,000 --> 00:47:43,710 Jag tycker det är för riskabelt just nu för att göra dessa typer av aktiviteter. 682 00:47:43,710 --> 00:47:45,950 >> Skype gjorde samma sak. 683 00:47:45,950 --> 00:47:49,870 Skype, naturligtvis, har en kontobalans, ett användarnamn och lösenord 684 00:47:49,870 --> 00:47:51,030 att komma åt den balansen. 685 00:47:51,030 --> 00:48:00,080 De lagra all denna information i klartext på den mobila enheten. 686 00:48:00,080 --> 00:48:05,760 Jag har några exempel här för att skapa filer 687 00:48:05,760 --> 00:48:10,310 som inte har rätt behörigheter eller skriva till skivan 688 00:48:10,310 --> 00:48:17,260 och inte har någon kryptering hända för det. 689 00:48:17,260 --> 00:48:20,190 Denna nästa område, Unsafe Känslig Data Transmission, 690 00:48:20,190 --> 00:48:24,450 Jag har nämnt det några gånger, och på grund av Wi-Fi 691 00:48:24,450 --> 00:48:27,770 detta är något som apps absolut måste göra, 692 00:48:27,770 --> 00:48:31,250 och det är förmodligen det som vi ser går fel mest. 693 00:48:31,250 --> 00:48:34,920 Jag skulle säga-faktiskt, jag tror att jag har de faktiska uppgifterna, 694 00:48:34,920 --> 00:48:38,120 men det är nära till hälften av mobila applikationer 695 00:48:38,120 --> 00:48:41,780 skruva upp gör SSL. 696 00:48:41,780 --> 00:48:43,910 De bara inte använder API: er på rätt sätt. 697 00:48:43,910 --> 00:48:47,970 Jag menar, är allt du har att göra är att följa instruktionerna och använda API: er, 698 00:48:47,970 --> 00:48:54,720 men de saker som inte kontrollera om det finns ett ogiltigt certifikat i andra änden, 699 00:48:54,720 --> 00:49:02,120 inte kontrollera om den andra änden försöker göra ett protokoll nedgradering attack. 700 00:49:02,120 --> 00:49:07,200 >> Utvecklarna, de vill få sin kryssruta, eller hur? 701 00:49:07,200 --> 00:49:11,910 Deras krav är att använda detta för att sälja. De har använt denna för att sälja. 702 00:49:11,910 --> 00:49:14,800 Kravet är inte att använda detta för att sälja säkert, 703 00:49:14,800 --> 00:49:19,680 och så det är därför alla program som använder SSL för att säkra data 704 00:49:19,680 --> 00:49:23,470 som det sänds av enheten verkligen behöver inspekteras 705 00:49:23,470 --> 00:49:28,950 att se till att genomfördes korrekt. 706 00:49:28,950 --> 00:49:32,850 Och här har jag några exempel där du kan se ett program 707 00:49:32,850 --> 00:49:37,400 kanske använder HTTP istället för HTTPS. 708 00:49:37,400 --> 00:49:40,510 I vissa fall apps kommer att falla tillbaka till HTTP 709 00:49:40,510 --> 00:49:44,250 Om HTTPS inte fungerar. 710 00:49:44,250 --> 00:49:49,070 Jag har ett annat samtal här på Android där de har inaktivcertifikatkontroll, 711 00:49:49,070 --> 00:49:51,700 så en man-in-the-middle attack kan hända. 712 00:49:51,700 --> 00:49:56,370 Ett ogiltigt certifikat kommer att accepteras. 713 00:49:56,370 --> 00:50:01,920 Dessa är alla fall där angriparna kommer att kunna få på 714 00:50:01,920 --> 00:50:07,150 samma Wi-Fi-anslutning som användare och åtkomst alla data 715 00:50:07,150 --> 00:50:11,650 som är som skickas över internet. 716 00:50:11,650 --> 00:50:15,970 >> Och slutligen, den sista kategorin jag har här är hårdkodade lösenord och nycklar. 717 00:50:15,970 --> 00:50:21,470 Vi ser faktiskt en hel del utvecklare använder samma kodning stil 718 00:50:21,470 --> 00:50:25,900 som de gjorde när de byggde webbservrar, 719 00:50:25,900 --> 00:50:29,700 så de bygger en Java-serverprogram, och de är att hårdkoda nyckeln. 720 00:50:29,700 --> 00:50:31,940 Jo, när du bygger ett serverprogram, ja, 721 00:50:31,940 --> 00:50:34,240 hårdkoda nyckeln är inte en bra idé. 722 00:50:34,240 --> 00:50:36,290 Det gör det svårt att ändra. 723 00:50:36,290 --> 00:50:40,700 Men det är inte så illa på serversidan, eftersom vem som har tillgång till serversidan? 724 00:50:40,700 --> 00:50:43,140 Endast administratörer. 725 00:50:43,140 --> 00:50:48,100 Men om du tar samma kod och du hällde den över till en mobil applikation 726 00:50:48,100 --> 00:50:52,550 nu alla som har det mobila appen har åtkomst till den hårdkodade knapp, 727 00:50:52,550 --> 00:50:56,380 och vi faktiskt se den här många gånger, och jag har en del statistik 728 00:50:56,380 --> 00:51:00,920 om hur ofta vi ser detta hända. 729 00:51:00,920 --> 00:51:04,940 Det var faktiskt i exempelkod som Mastercard publicerade 730 00:51:04,940 --> 00:51:06,850 om hur man kan använda deras tjänst. 731 00:51:06,850 --> 00:51:11,860 Den exempelkod visade hur man bara skulle ta lösenordet 732 00:51:11,860 --> 00:51:14,850 och lägga den i en hårdkodad sträng just där, 733 00:51:14,850 --> 00:51:19,380 och vi vet hur utvecklare älskar att kopiera och klistra in kodsnuttar 734 00:51:19,380 --> 00:51:22,360 när de försöker göra något, så du kopiera och klistra in kodavsnittet 735 00:51:22,360 --> 00:51:28,450 att de gav som exempel kod, och du har ett osäkert program. 736 00:51:28,450 --> 00:51:31,490 >> Och här har vi några exempel. 737 00:51:31,490 --> 00:51:35,840 Det första är en som vi ser en hel del där de hårdkoda 738 00:51:35,840 --> 00:51:40,510 data rakt in i en URL som får skickas. 739 00:51:40,510 --> 00:51:45,120 Ibland ser vi sträng password = lösenord. 740 00:51:45,120 --> 00:51:49,060 Det är ganska lätt att upptäcka, eller sträng lösenord på BlackBerry och Android. 741 00:51:49,060 --> 00:51:53,680 Det är faktiskt ganska lätt att kontrollera eftersom nästan alltid 742 00:51:53,680 --> 00:51:57,030 utvecklaren namnger den variabel som är hållande lösenordet 743 00:51:57,030 --> 00:52:02,290 viss variation av lösenord. 744 00:52:02,290 --> 00:52:05,200 Jag nämnde att vi gör statisk analys på Veracode, 745 00:52:05,200 --> 00:52:11,790 så vi har analyserat flera hundra Android och iOS applikationer. 746 00:52:11,790 --> 00:52:15,160 Vi har byggt kompletta modeller av dem, och vi kan skanna dem 747 00:52:15,160 --> 00:52:19,280 för olika sårbarheter, speciellt de sårbarheter jag talade om, 748 00:52:19,280 --> 00:52:21,050 och jag har några uppgifter här. 749 00:52:21,050 --> 00:52:24,320 68,5% av Android apps som vi tittat på 750 00:52:24,320 --> 00:52:28,590 hade brutit krypteringskoden, 751 00:52:28,590 --> 00:52:33,240 som för oss, kan vi inte upptäcka om du gjort din egen krypto rutin, 752 00:52:33,240 --> 00:52:38,980 inte att det är en bra idé, men det är faktiskt använder de publicerade API: er 753 00:52:38,980 --> 00:52:42,530 som finns på plattformen, men gör dem på ett sådant sätt 754 00:52:42,530 --> 00:52:46,680 att krypto skulle vara sårbara, 68,5. 755 00:52:46,680 --> 00:52:49,870 Och det är för människor som skickar oss sina ansökningar faktiskt eftersom 756 00:52:49,870 --> 00:52:53,730 de tycker att det är en bra idé att göra säkerhetstestning. 757 00:52:53,730 --> 00:52:56,960 Det är redan folk som förmodligen tänker säkert, 758 00:52:56,960 --> 00:52:59,540 så det är förmodligen ännu värre. 759 00:52:59,540 --> 00:53:02,690 >> Jag inte tala om kontroll radmatning injektion. 760 00:53:02,690 --> 00:53:07,640 Det är något vi söker efter, men det är inte så riskabelt en fråga. 761 00:53:07,640 --> 00:53:15,390 Informationsläckage, det är där känsliga data skickas av enheten. 762 00:53:15,390 --> 00:53:19,270 Vi fann att i 40% av ansökningarna. 763 00:53:19,270 --> 00:53:23,540 Tid och stat, som är konkurrenstillstånd typ frågor, oftast ganska svårt att utnyttja, 764 00:53:23,540 --> 00:53:26,170 så jag inte prata om det, men vi såg på det. 765 00:53:26,170 --> 00:53:28,750 23% hade SQL injection frågor. 766 00:53:28,750 --> 00:53:32,020 Många människor vet inte att en hel del program 767 00:53:32,020 --> 00:53:35,880 Använd en liten liten SQL-databas på deras backend för att lagra data. 768 00:53:35,880 --> 00:53:40,430 Tja, om de data som du greppa över nätverket 769 00:53:40,430 --> 00:53:43,800 har SQL-injektion attack strängar i det 770 00:53:43,800 --> 00:53:45,970 någon som kan äventyra enhet genom att 771 00:53:45,970 --> 00:53:49,800 och så tror jag att vi hittar cirka 40% av webbapplikationer har detta problem, 772 00:53:49,800 --> 00:53:52,840 vilket är en stor epidemi problem. 773 00:53:52,840 --> 00:53:55,740 Vi tycker att det är 23% av tiden i mobilappar 774 00:53:55,740 --> 00:54:02,030 och det är förmodligen för att många fler webbapplikationer använder SQL än mobil. 775 00:54:02,030 --> 00:54:05,580 >> Och då vi fortfarande se några cross-site scripting, tillståndsfrågor, 776 00:54:05,580 --> 00:54:09,400 och sedan referens ledning, det är där du har din hårdkodade lösenord. 777 00:54:09,400 --> 00:54:14,540 Under 5% av ansökningarna ser vi att. 778 00:54:14,540 --> 00:54:17,970 Och sedan har vi några uppgifter om iOS. 779 00:54:17,970 --> 00:54:20,180 81% hade felhantering frågor. 780 00:54:20,180 --> 00:54:23,130 Detta är mer av en kod kvalitetsproblem, 781 00:54:23,130 --> 00:54:28,010 men 67% hade kryptografiska frågor, så inte riktigt så illa som Android. 782 00:54:28,010 --> 00:54:32,440 Kanske de API: er är lite lättare, exempelkoder lite bättre på iOS. 783 00:54:32,440 --> 00:54:35,420 Men fortfarande en mycket hög andel. 784 00:54:35,420 --> 00:54:39,040 Vi hade 54% med informationsläckage, 785 00:54:39,040 --> 00:54:42,080 omkring 30% med buffert management fel. 786 00:54:42,080 --> 00:54:45,930 Det är platser där det skulle kunna finnas ett minnesfel. 787 00:54:45,930 --> 00:54:50,350 Det visar sig att det är inte så mycket av ett problem för exploatering 788 00:54:50,350 --> 00:54:56,450 på iOS eftersom all kod måste undertecknas, 789 00:54:56,450 --> 00:55:02,210 så det är svårt för en angripare att köra godtycklig kod på iOS. 790 00:55:02,210 --> 00:55:07,880 Kod kvalitet, katalogtraverse, men då referenser management här på 14,6%, 791 00:55:07,880 --> 00:55:09,250 så värre än på Android. 792 00:55:09,250 --> 00:55:13,240 Vi har folk som inte hanterar lösenord på rätt sätt. 793 00:55:13,240 --> 00:55:15,790 Och sedan de numeriska fel och buffertspill, 794 00:55:15,790 --> 00:55:22,680 de som är mer att vara kod kvalitetsfrågor på iOS. 795 00:55:22,680 --> 00:55:26,110 >> Det var det för min presentation. Jag vet inte om vi är för sent eller inte. 796 00:55:26,110 --> 00:55:29,540 Jag vet inte om det finns några frågor. 797 00:55:29,540 --> 00:55:33,220 [Man] En snabb fråga runt fragmentering och Android marknaden. 798 00:55:33,220 --> 00:55:36,240 Apple åtminstone äger patchning. 799 00:55:36,240 --> 00:55:40,780 De gör ett bra jobb med att få ut det där, medan mindre så i Android utrymme. 800 00:55:40,780 --> 00:55:44,280 Du behöver nästan att jailbreaka din telefon för att hålla dig uppdaterad 801 00:55:44,280 --> 00:55:46,660 med den aktuella versionen av Android. 802 00:55:46,660 --> 00:55:50,960 Ja, det är ett stort problem, och så om du tycker om- 803 00:55:50,960 --> 00:55:52,280 [Man] Varför kan du upprepa det? 804 00:55:52,280 --> 00:55:55,610 >> Just det, så frågan var hur fragmentering 805 00:55:55,610 --> 00:56:00,410 av operativsystemet på Android-plattformen? 806 00:56:00,410 --> 00:56:05,890 Hur påverkar det risken i dessa enheter? 807 00:56:05,890 --> 00:56:09,700 Och det är faktiskt ett stort problem eftersom det som händer är 808 00:56:09,700 --> 00:56:15,110 de äldre enheter, när någon kommer upp med ett jailbreak för den enheten, 809 00:56:15,110 --> 00:56:19,960 i huvudsak det är utökning av privilegier, och till dess att operativsystemet är uppdaterat 810 00:56:19,960 --> 00:56:25,350 alla skadliga program kan sedan använda denna sårbarhet att helt kompromissa enheten, 811 00:56:25,350 --> 00:56:30,200 och vad vi ser på Android är för att få ett nytt operativsystem 812 00:56:30,200 --> 00:56:34,690 Google har att lägga ut operativsystemet, och sedan maskinvarutillverkaren 813 00:56:34,690 --> 00:56:39,390 måste anpassa den och sedan transportören har att anpassa den och leverera den. 814 00:56:39,390 --> 00:56:43,070 Du har i princip tre rörliga delar här, 815 00:56:43,070 --> 00:56:47,210 och det har visat sig att de transportörer som inte bryr sig, 816 00:56:47,210 --> 00:56:50,400 och hårdvarutillverkare inte bryr sig, och Google är inte petade dem tillräckligt 817 00:56:50,400 --> 00:56:54,430 att göra något, så i huvudsak över hälften av enheterna ute 818 00:56:54,430 --> 00:57:00,590 har operativsystem som har dessa privilegier sårbarheter i dem, 819 00:57:00,590 --> 00:57:08,440 och så om du får skadlig kod på din Android-enhet är det mycket mer av ett problem. 820 00:57:08,440 --> 00:57:10,350 >> Okej, tack så mycket. 821 00:57:10,350 --> 00:57:12,310 [Applåder] 822 00:57:12,310 --> 00:57:14,310 [CS50.TV]