1 00:00:00,000 --> 00:00:02,610 >> [Seminário] [Defender Atrás do dispositivo: Segurança de Aplicações Mobile] 2 00:00:02,610 --> 00:00:04,380 [Chris Wysopal] [Universidade de Harvard] 3 00:00:04,380 --> 00:00:07,830 [Isto é CS50.] [CS50.TV] 4 00:00:07,830 --> 00:00:10,360 >> Boa tarde. Meu nome é Chris Wysopal. 5 00:00:10,360 --> 00:00:13,360 Eu sou o CTO e co-fundador da Veracode. 6 00:00:13,360 --> 00:00:15,880 Veracode é uma empresa de segurança do aplicativo. 7 00:00:15,880 --> 00:00:18,230 Testamos todos os tipos de aplicações diferentes, 8 00:00:18,230 --> 00:00:25,060 eo que eu vou falar hoje é a segurança de aplicativos móveis. 9 00:00:25,060 --> 00:00:28,630 Minha experiência é que eu venho fazendo pesquisa de segurança 10 00:00:28,630 --> 00:00:31,970 por um tempo muito longo, provavelmente quase tão longo quanto qualquer um. 11 00:00:31,970 --> 00:00:35,000 I começou em meados dos anos 90, 12 00:00:35,000 --> 00:00:37,370 e foi um tempo que foi muito interessante porque 13 00:00:37,370 --> 00:00:39,220 tivemos uma mudança de paradigma em meados dos anos 90. 14 00:00:39,220 --> 00:00:43,520 Todas computador repente de todos estava ligado à internet, 15 00:00:43,520 --> 00:00:46,550 e, em seguida, tivemos o início de aplicações web, 16 00:00:46,550 --> 00:00:49,330 e é isso que eu me concentrei em muito, então. 17 00:00:49,330 --> 00:00:51,160 É interessante. 18 00:00:51,160 --> 00:00:53,930 Agora temos uma outra mudança de paradigma acontecendo com a computação, 19 00:00:53,930 --> 00:00:58,710 que é a mudança para aplicações móveis. 20 00:00:58,710 --> 00:01:03,680 >> Eu sinto que é uma espécie de tempo similar, em seguida, foi no final dos anos 90 21 00:01:03,680 --> 00:01:07,650 quando estávamos investigando aplicações web e encontrar defeitos como 22 00:01:07,650 --> 00:01:11,800 erros de gestão sessão e injeção de SQL 23 00:01:11,800 --> 00:01:14,940 que realmente não existia antes, e de repente eles estavam por toda parte 24 00:01:14,940 --> 00:01:19,360 em aplicações web, e agora uma grande parte do tempo eu passo 25 00:01:19,360 --> 00:01:27,950 está olhando para aplicações móveis e olhando para o que está acontecendo lá fora na selva. 26 00:01:27,950 --> 00:01:32,060 As aplicações móveis são realmente vai ser a plataforma de computação dominante, 27 00:01:32,060 --> 00:01:35,060 então nós realmente precisa gastar um monte de tempo, se você está no setor de segurança 28 00:01:35,060 --> 00:01:39,280 com foco em aplicações web. 29 00:01:39,280 --> 00:01:43,420 Havia 29 bilhões de aplicativos móveis baixados em 2011. 30 00:01:43,420 --> 00:01:47,920 Está previsto em 76 mil milhões de aplicações em 2014. 31 00:01:47,920 --> 00:01:54,040 Há 686 milhões de dispositivos que vão ser comprados este ano, 32 00:01:54,040 --> 00:01:57,060 de modo que este é o lugar onde as pessoas vão estar fazendo 33 00:01:57,060 --> 00:01:59,600  a maioria dos seus computação cliente daqui para frente. 34 00:01:59,600 --> 00:02:04,220 >> Eu estava conversando com um vice-presidente da Fidelity Investments 35 00:02:04,220 --> 00:02:08,780 um par de meses atrás, e ele disse que só vi mais tráfego 36 00:02:08,780 --> 00:02:12,610 fazendo transações financeiras a partir de sua base de clientes 37 00:02:12,610 --> 00:02:16,230 sobre a sua aplicação móvel do que em seu site, 38 00:02:16,230 --> 00:02:20,610 assim um uso comum para a Web no passado foi 39 00:02:20,610 --> 00:02:23,800 verificando suas cotações de ações, o gerenciamento de sua carteira, 40 00:02:23,800 --> 00:02:28,060 e nós estamos realmente vendo que em 2012 mais de interruptor 41 00:02:28,060 --> 00:02:30,960 para ser mais dominante na plataforma móvel. 42 00:02:30,960 --> 00:02:34,530 Certamente, se não vai ser qualquer atividade criminal, 43 00:02:34,530 --> 00:02:38,900 qualquer atividade maliciosa, que vai começar a ser focado na plataforma móvel 44 00:02:38,900 --> 00:02:44,210 ao longo do tempo como as pessoas passar a isso. 45 00:02:44,210 --> 00:02:48,320 Se você olhar para a plataforma móvel, 46 00:02:48,320 --> 00:02:54,380 olhar para os riscos da plataforma é útil dividi-la em diferentes camadas, 47 00:02:54,380 --> 00:02:59,010 assim como você faria em um computador desktop, 48 00:02:59,010 --> 00:03:02,860 e você pensa sobre as diferentes camadas, software, sistema operacional, 49 00:03:02,860 --> 00:03:07,730 camada de rede, camada de hardware, e, claro, há vulnerabilidades em todas as camadas. 50 00:03:07,730 --> 00:03:10,510 >> A mesma coisa acontece no celular. 51 00:03:10,510 --> 00:03:14,880 Mas móvel, parece que algumas dessas camadas estão em situação pior. 52 00:03:14,880 --> 00:03:19,840 Por um lado, a camada de rede é mais problemático no celular 53 00:03:19,840 --> 00:03:25,650 porque um monte de pessoas têm em seu escritório ou em casa 54 00:03:25,650 --> 00:03:30,780 conexões com fio ou eles têm conexões Wi-Fi seguras, 55 00:03:30,780 --> 00:03:36,530 e com um monte de dispositivos móveis que você está, obviamente, fora de casa 56 00:03:36,530 --> 00:03:40,520 ou fora do escritório muito, e se você estiver usando Wi-Fi lá 57 00:03:40,520 --> 00:03:42,820 você pode estar usando uma conexão Wi-Fi insegura, 58 00:03:42,820 --> 00:03:45,570 algo que é uma conexão Wi-Fi público, 59 00:03:45,570 --> 00:03:48,840 por isso, quando pensamos sobre aplicativos móveis que temos de ter em conta 60 00:03:48,840 --> 00:03:53,770 que o ambiente de rede é mais arriscado para as aplicações 61 00:03:53,770 --> 00:03:57,640 quando o Wi-Fi está sendo utilizado. 62 00:03:57,640 --> 00:04:02,410 E quando eu entrar em mais dos riscos de aplicativos móveis 63 00:04:02,410 --> 00:04:04,910 você vai ver por que isso é mais importante. 64 00:04:04,910 --> 00:04:09,710 Há riscos a nível de hardware em dispositivos móveis. 65 00:04:09,710 --> 00:04:11,670 Esta é uma área de investigação em curso. 66 00:04:11,670 --> 00:04:15,910 As pessoas chamam esses ataques de banda larga ou de banda base de ataques 67 00:04:15,910 --> 00:04:21,870 onde você está atacando o firmware que está escutando no rádio. 68 00:04:21,870 --> 00:04:25,430 >> Estes são realmente assustadores ataques porque 69 00:04:25,430 --> 00:04:27,280 o usuário não precisa fazer nada. 70 00:04:27,280 --> 00:04:30,760 Você pode bater vários dispositivos dentro da faixa de RF 71 00:04:30,760 --> 00:04:36,690 de uma vez, e parece que sempre que esta pesquisa borbulha 72 00:04:36,690 --> 00:04:40,750 ele rapidamente se classificam onde 73 00:04:40,750 --> 00:04:46,600 pessoas rusga em volta e dizer: "Aqui, conte-nos sobre isso, e por favor, pare de falar sobre isso." 74 00:04:46,600 --> 00:04:49,460 Há alguma investigação em curso na área de banda larga, 75 00:04:49,460 --> 00:04:51,980 mas parece ser muito silêncio silêncio. 76 00:04:51,980 --> 00:04:56,910 Eu acho que é mais de um tipo de Estado-nação de pesquisa que está acontecendo. 77 00:04:56,910 --> 00:05:02,140 Uma área de pesquisa ativa, porém, é a camada de sistema operacional, 78 00:05:02,140 --> 00:05:08,910 e, novamente, isso é diferente do que no mundo da computação de desktop 79 00:05:08,910 --> 00:05:14,840 porque no espaço móvel você tem essas equipes de pessoas chamadas jailbreakers, 80 00:05:14,840 --> 00:05:18,670 e jailbreakers são diferentes do que os pesquisadores de vulnerabilidades comuns. 81 00:05:18,670 --> 00:05:21,970 Eles estão tentando encontrar vulnerabilidades no sistema operacional, 82 00:05:21,970 --> 00:05:27,000 mas a razão pela qual eles estão tentando encontrar as vulnerabilidades não é 83 00:05:27,000 --> 00:05:31,810 invadir máquina de outra pessoa e comprometê-lo. 84 00:05:31,810 --> 00:05:34,280 É de quebrar em seu próprio computador. 85 00:05:34,280 --> 00:05:38,820 >> Eles querem invadir seu próprio celular, modificar o sistema operacional do seu próprio celular 86 00:05:38,820 --> 00:05:41,050 para que eles possam executar os aplicativos de sua escolha 87 00:05:41,050 --> 00:05:44,510 e mudar as coisas com permissões administrativos totais, 88 00:05:44,510 --> 00:05:49,050 e eles não querem dizer o vendedor sobre isso. 89 00:05:49,050 --> 00:05:52,960 Eles não são como um pesquisador de segurança, que é um pesquisador de segurança chapéu branco 90 00:05:52,960 --> 00:05:56,600 que vai fazer a divulgação responsável e dizer ao vendedor sobre isso. 91 00:05:56,600 --> 00:06:01,270 Eles querem fazer essa pesquisa, e eles querem realmente publicá-lo 92 00:06:01,270 --> 00:06:06,400 em um ataque ou um rootkit ou um código de jailbreak, 93 00:06:06,400 --> 00:06:10,010 e querem fazê-lo estrategicamente, como logo após 94 00:06:10,010 --> 00:06:13,570 os navios de fornecedores do novo sistema operacional. 95 00:06:13,570 --> 00:06:16,350 Você tem essa relação conflituosa 96 00:06:16,350 --> 00:06:19,000 com vulnerabilidades de nível de sistema operacional no celular, 97 00:06:19,000 --> 00:06:23,150 que eu acho que é bastante interessante, e um lugar que vê-lo 98 00:06:23,150 --> 00:06:29,210 é isso que o torna tão bom que não há código publicado explorar lá fora 99 00:06:29,210 --> 00:06:31,750 de vulnerabilidades no nível do kernel, 100 00:06:31,750 --> 00:06:35,040 e vimos aqueles realmente ser usado por escritores de malware. 101 00:06:35,040 --> 00:06:38,450 É um pouco diferente do que o mundo do PC. 102 00:06:38,450 --> 00:06:42,530 E, em seguida, a camada final é a camada superior, a camada de aplicação. 103 00:06:42,530 --> 00:06:45,250 Isso é o que eu vou falar hoje. 104 00:06:45,250 --> 00:06:48,970 >> Existir As outras camadas, e as outras camadas de jogar nele, 105 00:06:48,970 --> 00:06:53,310 mas eu estou indo principalmente para falar sobre o que está acontecendo na camada de aplicação 106 00:06:53,310 --> 00:06:55,560 onde o código está sendo executado na caixa de areia. 107 00:06:55,560 --> 00:06:58,670 Ele não tem privilégios administrativos. 108 00:06:58,670 --> 00:07:02,170 Tem que usar as APIs do dispositivo, 109 00:07:02,170 --> 00:07:06,970 mas ainda assim, uma grande quantidade de atividades maliciosas e um monte de risco pode acontecer a essa camada 110 00:07:06,970 --> 00:07:09,220 porque essa é a camada onde toda a informação é. 111 00:07:09,220 --> 00:07:12,330 Aplicativos podem acessar todas as informações sobre o dispositivo 112 00:07:12,330 --> 00:07:15,390 se eles têm as permissões adequadas, 113 00:07:15,390 --> 00:07:17,540 e eles podem acessar os diferentes sensores no dispositivo, 114 00:07:17,540 --> 00:07:23,950 Sensor GPS, microfone, câmera, o que você tem. 115 00:07:23,950 --> 00:07:27,380 Mesmo que nós só estamos falando na camada de aplicação 116 00:07:27,380 --> 00:07:33,700 temos um monte de risco lá. 117 00:07:33,700 --> 00:07:38,450 A outra coisa que é diferente sobre o ambiente móvel 118 00:07:38,450 --> 00:07:45,060 é todos os jogadores do sistema operacional, seja BlackBerry ou Android 119 00:07:45,060 --> 00:07:53,410 ou iOS ou Windows Mobile, todos eles têm um modelo de permissão de grão fino, 120 00:07:53,410 --> 00:07:56,990 e esta é uma das maneiras que eles incorporados ao sistema operacional 121 00:07:56,990 --> 00:08:01,230 a idéia de que não é tão arriscado quanto você pensa. 122 00:08:01,230 --> 00:08:04,550 Mesmo que você tenha todos os seus contatos sobre lá, toda a sua informação pessoal, 123 00:08:04,550 --> 00:08:09,080 você tem as suas fotos, você tem a sua localização no lá, 124 00:08:09,080 --> 00:08:14,820 você está armazenando a sua senha do banco para auto login lá, é seguro porque 125 00:08:14,820 --> 00:08:19,430 aplicativos tem que ter certas permissões para chegar a certas partes 126 00:08:19,430 --> 00:08:25,080 de a informação sobre o dispositivo, e o utilizador tem de ser apresentado com 127 00:08:25,080 --> 00:08:29,230 essas permissões e dizer bem. 128 00:08:29,230 --> 00:08:32,590 >> O problema com isso é que o usuário sempre diz tudo bem. 129 00:08:32,590 --> 00:08:35,240 Como uma pessoa de segurança, eu sei que você pode solicitar que o usuário, 130 00:08:35,240 --> 00:08:40,100 dizer algo muito ruim vai acontecer, que você quer que aconteça? 131 00:08:40,100 --> 00:08:44,680 E se eles estão em uma corrida ou há algo realmente atraente do outro lado de que, 132 00:08:44,680 --> 00:08:47,760 como um jogo vai ser instalado que você estava esperando, 133 00:08:47,760 --> 00:08:50,860 eles estão indo para clicar bem. 134 00:08:50,860 --> 00:08:56,630 É por isso que eu digo no meu slides aqui, deixe-me atirar pássaros em porcos já, 135 00:08:56,630 --> 00:09:03,150 e você pode ver no slide aqui há exemplos de uma caixa de permissão BlackBerry. 136 00:09:03,150 --> 00:09:05,990 Ele diz: "Por favor, defina as permissões de aplicativos BlackBerry Viagem 137 00:09:05,990 --> 00:09:09,720 após o botão clicando abaixo ", e, basicamente, o usuário está indo só para dizer 138 00:09:09,720 --> 00:09:12,240 definir as permissões e salvar. 139 00:09:12,240 --> 00:09:18,010 Aqui está uma linha de Android, onde ele mostra as coisas, 140 00:09:18,010 --> 00:09:20,260 e ele realmente coloca algo que quase se parece com um aviso. 141 00:09:20,260 --> 00:09:25,090 Tem uma espécie de sinal de rendimento lá dizendo comunicação de rede, chamada de telefone, 142 00:09:25,090 --> 00:09:28,120 mas o usuário vai clicar instalar, certo? 143 00:09:28,120 --> 00:09:32,940 E então o que a Apple é completamente inócuo. 144 00:09:32,940 --> 00:09:34,300 Ele não dá qualquer tipo de aviso. 145 00:09:34,300 --> 00:09:37,380 É só a Apple gostaria de usar sua localização atual. 146 00:09:37,380 --> 00:09:39,670 Claro que você vai clicar tudo bem. 147 00:09:39,670 --> 00:09:42,260 >> Existe esse modelo de permissão de grão fino, 148 00:09:42,260 --> 00:09:45,890 e os aplicativos tem que ter um arquivo de manifesto onde eles declaram 149 00:09:45,890 --> 00:09:49,410 as permissões que eles precisam, e que vai ser exibida para o usuário, 150 00:09:49,410 --> 00:09:53,480 e que o usuário vai ter que dizer que eu conceder essas permissões. 151 00:09:53,480 --> 00:09:55,080 Mas vamos ser honestos. 152 00:09:55,080 --> 00:09:58,400 Os utilizadores estão indo só para dizer sempre tudo bem. 153 00:09:58,400 --> 00:10:04,460 Vamos dar uma rápida olhada nas permissões que esses aplicativos estão pedindo 154 00:10:04,460 --> 00:10:06,850 e algumas das permissões que estão lá. 155 00:10:06,850 --> 00:10:09,950 Esta empresa pretoriana fez uma pesquisa no ano passado 156 00:10:09,950 --> 00:10:14,170 de 53.000 aplicações analisadas nos mercados de mercado e 3rd party para Android, 157 00:10:14,170 --> 00:10:16,770 então isso é tudo o Android. 158 00:10:16,770 --> 00:10:19,670 E o app média solicitado 3 permissões. 159 00:10:19,670 --> 00:10:23,370 Alguns aplicativos solicitado 117 permissões, 160 00:10:23,370 --> 00:10:27,480 então, obviamente, estes são muito grão fino e demasiado complexo para um usuário para entender 161 00:10:27,480 --> 00:10:31,600 se eles são apresentados com este aplicativo que precisa desses 117 permissões. 162 00:10:31,600 --> 00:10:37,270 É como se o acordo de licença do usuário final que é 45 páginas. 163 00:10:37,270 --> 00:10:40,240 Talvez em breve eles terão uma opção onde é como 164 00:10:40,240 --> 00:10:43,100 imprimir as permissões e enviar-me um e-mail. 165 00:10:43,100 --> 00:10:45,480 >> Mas se você olhar para algumas das principais permissões interessantes 166 00:10:45,480 --> 00:10:50,840 24% dos aplicativos que baixaram de 53.000 a 167 00:10:50,840 --> 00:10:57,230 informações de GPS solicitada a partir do dispositivo. 168 00:10:57,230 --> 00:10:59,810 8% ler os contatos. 169 00:10:59,810 --> 00:11:03,770 4% enviaram SMS, e 3% receberam SMS. 170 00:11:03,770 --> 00:11:07,730 2% registrados áudio. 171 00:11:07,730 --> 00:11:11,210 1% processadas chamadas de saída. 172 00:11:11,210 --> 00:11:13,140 Eu não sei. 173 00:11:13,140 --> 00:11:17,520 Eu não acho que 4% dos aplicativos na App Store realmente precisa para enviar mensagens de texto SMS, 174 00:11:17,520 --> 00:11:21,410 então eu acho que isso é um indício de que algo desagradável está acontecendo. 175 00:11:21,410 --> 00:11:24,350 8% dos aplicativos precisa ler a sua lista de contatos. 176 00:11:24,350 --> 00:11:26,510 Provavelmente não é necessário. 177 00:11:26,510 --> 00:11:30,990 Uma das outras coisas interessantes sobre permissões é 178 00:11:30,990 --> 00:11:36,740 se você ligar em bibliotecas compartilhadas em sua aplicação 179 00:11:36,740 --> 00:11:39,780 aqueles herdar as permissões do aplicativo, 180 00:11:39,780 --> 00:11:46,570 por isso, se o seu aplicativo precisa da lista de contatos ou precisa da localização GPS a funcionar 181 00:11:46,570 --> 00:11:49,940 e você ligar em uma biblioteca de publicidade, por exemplo, 182 00:11:49,940 --> 00:11:53,170 essa biblioteca anúncio também será capaz de acessar os contatos 183 00:11:53,170 --> 00:11:57,630 e também ser capaz de acessar o local de GPS, 184 00:11:57,630 --> 00:12:01,990 eo desenvolvedor do app não sabe nada sobre o código que está sendo executado na biblioteca anúncio. 185 00:12:01,990 --> 00:12:05,370 Eles estão apenas ligando em que, porque eles querem rentabilizar o seu aplicativo. 186 00:12:05,370 --> 00:12:09,820 >> Este é o lugar onde, e eu vou falar sobre alguns exemplos deste com 187 00:12:09,820 --> 00:12:13,930 um aplicativo chamado Pandora, onde um desenvolvedor de aplicativos 188 00:12:13,930 --> 00:12:18,910 pode inadvertidamente estar vazando informações 189 00:12:18,910 --> 00:12:24,580 de seus usuários por causa de bibliotecas eles ligados dentro 190 00:12:24,580 --> 00:12:30,110 Examinando a paisagem lá fora, olhando para todas as diferentes aplicações 191 00:12:30,110 --> 00:12:34,310 que foram relatados na notícia como algo que os usuários mal-intencionados ou fazendo não queria 192 00:12:34,310 --> 00:12:39,360 e depois de inspecionar um monte de aplicativos de que fazemos um monte de análise binária estática em aplicativos móveis, 193 00:12:39,360 --> 00:12:42,010 por isso temos inspecionado-los e olhou para o próprio código- 194 00:12:42,010 --> 00:12:49,640 que surgiu com o que chamamos de nossa lista top 10 dos comportamentos de risco nas aplicações. 195 00:12:49,640 --> 00:12:54,180 E é dividido em duas seções, código malicioso, 196 00:12:54,180 --> 00:12:57,600 assim que estas são coisas ruins que os aplicativos podem estar fazendo isso 197 00:12:57,600 --> 00:13:06,520 tendem a ser algo que um indivíduo malicioso 198 00:13:06,520 --> 00:13:10,060 tem especificamente colocar na aplicação, mas é um pouco confuso. 199 00:13:10,060 --> 00:13:13,300 Poderia ser algo que um desenvolvedor pensa é bom, 200 00:13:13,300 --> 00:13:16,350 mas acaba sendo visto como mal-intencionado pelo usuário. 201 00:13:16,350 --> 00:13:19,830 >> E então a segunda parte é o que chamamos de codificação vulnerabilidades, 202 00:13:19,830 --> 00:13:24,600 e estas são as coisas em que o desenvolvedor, basicamente, é cometer erros 203 00:13:24,600 --> 00:13:27,200 ou simplesmente não entende como escrever o aplicativo com segurança, 204 00:13:27,200 --> 00:13:30,260  e que está colocando o usuário de aplicativo em risco. 205 00:13:30,260 --> 00:13:34,060 Eu vou passar por isso em detalhes e dar alguns exemplos. 206 00:13:34,060 --> 00:13:39,620 Para referência, eu queria colocar a lista móvel top 10 da OWASP. 207 00:13:39,620 --> 00:13:43,590 Estas são as 10 questões que um grupo da OWASP, 208 00:13:43,590 --> 00:13:48,900 o Projeto Open Web Application Security, eles têm um grupo de trabalho 209 00:13:48,900 --> 00:13:50,620 trabalhando em um móvel lista top 10. 210 00:13:50,620 --> 00:13:54,600 Eles têm uma lista muito famoso web top 10, que é o top 10 211 00:13:54,600 --> 00:13:57,180 coisas mais arriscadas que você pode ter em uma aplicação web. 212 00:13:57,180 --> 00:13:59,090 Eles estão fazendo a mesma coisa para celular, 213 00:13:59,090 --> 00:14:01,750 e sua lista é um pouco diferente da nossa. 214 00:14:01,750 --> 00:14:03,670 6 dos 10 são a mesma. 215 00:14:03,670 --> 00:14:06,020 Têm 4 que são diferentes. 216 00:14:06,020 --> 00:14:10,550 Eu acho que eles têm um pouco de uma posição diferente sobre 217 00:14:10,550 --> 00:14:14,490 risco em aplicações móveis, onde muitos de seus problemas 218 00:14:14,490 --> 00:14:20,490 são realmente como a aplicação está se comunicando com um servidor back-end 219 00:14:20,490 --> 00:14:23,100 ou o que está acontecendo no servidor back-end, 220 00:14:23,100 --> 00:14:29,220 não tanto aplicações que tenham comportamento de risco que são aplicações cliente apenas simples. 221 00:14:29,220 --> 00:14:36,640 >> Os de vermelho aqui são as diferenças entre as duas listas. 222 00:14:36,640 --> 00:14:40,740 E um pouco da minha equipe de pesquisa que realmente contribuíram para este projeto, 223 00:14:40,740 --> 00:14:44,570 então vamos ver o que acontece ao longo do tempo, mas acho que o takeaway aqui é 224 00:14:44,570 --> 00:14:47,550 nós realmente não sabemos o que a lista top 10 é em aplicativos móveis porque 225 00:14:47,550 --> 00:14:50,510 eles realmente apenas em torno de 2 ou 3 anos, 226 00:14:50,510 --> 00:14:57,750 e não houve tempo suficiente para realmente pesquisar os sistemas operacionais 227 00:14:57,750 --> 00:15:00,450 eo que eles são capazes de fazer, e não houve tempo suficiente 228 00:15:00,450 --> 00:15:06,870 para a comunidade maliciosa, se quiser, de ter passado tempo suficiente 229 00:15:06,870 --> 00:15:12,910 tentando atacar usuários através de aplicativos móveis, por isso espero que estas listas para mudar um pouco. 230 00:15:12,910 --> 00:15:18,720 Mas, por agora, estas são as 10 melhores coisas para se preocupar. 231 00:15:18,720 --> 00:15:24,150 Você pode se perguntar sobre o lado móvel onde é que o código malicioso-móvel 232 00:15:24,150 --> 00:15:28,880 como consegue no dispositivo? 233 00:15:28,880 --> 00:15:35,210 North Carolina State tem um projeto chamado Projeto Genoma Móvel Malware 234 00:15:35,210 --> 00:15:39,520 onde eles estão coletando o máximo de malware móvel que puderem e analisá-lo, 235 00:15:39,520 --> 00:15:45,270 e eles têm dividido os vetores de injeção que o malware móvel usa, 236 00:15:45,270 --> 00:15:51,490 e 86% usam uma técnica chamada reembalagem, 237 00:15:51,490 --> 00:15:54,160 e este é apenas na plataforma Android 238 00:15:54,160 --> 00:15:56,720 você pode realmente fazer isso reembalagem. 239 00:15:56,720 --> 00:16:03,100 >> A razão é código do Android é construído com 240 00:16:03,100 --> 00:16:08,130 um código Java byte chamado Dalvik, que é facilmente descompilável. 241 00:16:08,130 --> 00:16:12,460 O que o bandido pode fazer é 242 00:16:12,460 --> 00:16:16,590 ter uma aplicação Android, decompor-lo, 243 00:16:16,590 --> 00:16:20,120 inserir o código malicioso, recompilá-lo, 244 00:16:20,120 --> 00:16:28,070 e, em seguida, colocá-lo na loja de aplicativos que se apresente uma nova versão desse aplicativo, 245 00:16:28,070 --> 00:16:30,330 ou talvez apenas mudar o nome do aplicativo. 246 00:16:30,330 --> 00:16:35,140 Se fosse algum tipo de jogo, altere o nome ligeiramente, 247 00:16:35,140 --> 00:16:42,860 e por isso esta reembalagem é como 86% dos malware móvel é distribuída. 248 00:16:42,860 --> 00:16:45,810 Há uma outra atualização técnica chamada que é 249 00:16:45,810 --> 00:16:50,030 muito semelhante a reembalagem, mas na verdade você não colocar o código malicioso dentro 250 00:16:50,030 --> 00:16:52,870 O que você faz é colocar em um pequeno mecanismo de atualização. 251 00:16:52,870 --> 00:16:56,660 Você descompilar, você coloca em um mecanismo de atualização, e você recompilar, 252 00:16:56,660 --> 00:17:02,360 e depois, quando o aplicativo está sendo executado ele puxa para baixo o malware para o aparelho. 253 00:17:02,360 --> 00:17:06,300 >> A grande maioria são as 2 técnicas. 254 00:17:06,300 --> 00:17:12,710 Não há realmente muito de download drive-bys ou drive-by downloads em celulares, 255 00:17:12,710 --> 00:17:15,890 o que poderia ser como um ataque de phishing. 256 00:17:15,890 --> 00:17:18,200 Ei, veja este site muito legal, 257 00:17:18,200 --> 00:17:21,020 ou você precisa ir a este site e preencha este formulário 258 00:17:21,020 --> 00:17:24,420 para manter continua fazendo alguma coisa. 259 00:17:24,420 --> 00:17:26,230 Esses são ataques de phishing. 260 00:17:26,230 --> 00:17:28,160 A mesma coisa pode acontecer na plataforma móvel, onde eles 261 00:17:28,160 --> 00:17:33,830 apontam para um aplicativo móvel para download, dizer "Oi, aqui é o Bank of America." 262 00:17:33,830 --> 00:17:36,070 "Nós vemos que você está usando esta aplicação." 263 00:17:36,070 --> 00:17:38,540 "Você deve baixar este outro aplicativo." 264 00:17:38,540 --> 00:17:41,170 Teoricamente, isso poderia funcionar. 265 00:17:41,170 --> 00:17:48,610 Talvez ele simplesmente não está sendo usado o suficiente para determinar se é ou não bem sucedida, 266 00:17:48,610 --> 00:17:51,680 mas eles descobriram que menos de 1% do tempo que a técnica é utilizada. 267 00:17:51,680 --> 00:17:56,130 A maioria das vezes é realmente um código reembalado. 268 00:17:56,130 --> 00:17:58,710 >> Há uma outra categoria chamada standalone 269 00:17:58,710 --> 00:18:01,420 onde alguém apenas cria um aplicativo novo. 270 00:18:01,420 --> 00:18:04,020 Eles constroem um aplicativo que pretende ser algo. 271 00:18:04,020 --> 00:18:07,360 Não é uma reembalagem de outra coisa, e que tem o código malicioso. 272 00:18:07,360 --> 00:18:11,230 Isso é usado 14% do tempo. 273 00:18:11,230 --> 00:18:17,880 Agora eu quero falar sobre o que está a fazer o código malicioso? 274 00:18:17,880 --> 00:18:23,070 Um dos primeiros malware para fora lá 275 00:18:23,070 --> 00:18:25,490 você poderia considerar um spyware. 276 00:18:25,490 --> 00:18:27,620 Ele espia basicamente sobre o usuário. 277 00:18:27,620 --> 00:18:30,470 Ele coleta e-mails, mensagens SMS. 278 00:18:30,470 --> 00:18:32,340 Acontece no microfone. 279 00:18:32,340 --> 00:18:37,330 Colhe o livro de contatos e envia-lo para outra pessoa. 280 00:18:37,330 --> 00:18:40,870 Este tipo de spyware existente no PC, 281 00:18:40,870 --> 00:18:46,200 por isso, faz todo o sentido para as pessoas a tentar fazer isso em dispositivos móveis. 282 00:18:46,200 --> 00:18:53,230 >> Um dos primeiros exemplos disso foi um programa chamado Segredo SMS Replicator. 283 00:18:53,230 --> 00:18:56,250 Foi no Android Marketplace um par de anos atrás, 284 00:18:56,250 --> 00:18:59,960 ea idéia era se você tivesse acesso a alguém telefone Android 285 00:18:59,960 --> 00:19:03,450 que você queria para espionar, então talvez seja o seu cônjuge 286 00:19:03,450 --> 00:19:07,600 ou o seu outro significativo e você quer espionar suas mensagens de texto, 287 00:19:07,600 --> 00:19:11,200 você pode baixar este aplicativo e instalá-lo e configurá-lo 288 00:19:11,200 --> 00:19:16,540 para enviar uma mensagem de texto SMS para você uma cópia 289 00:19:16,540 --> 00:19:21,710 de cada mensagem de texto SMS que eles têm. 290 00:19:21,710 --> 00:19:27,220 Isto, obviamente, é em violações dos termos App Store do serviço, 291 00:19:27,220 --> 00:19:32,040 e este foi removido do Android Marketplace dentro de 18 horas do mesmo estar lá, 292 00:19:32,040 --> 00:19:36,760 assim que um número muito pequeno de pessoas estavam em risco por causa disso. 293 00:19:36,760 --> 00:19:42,510 Agora, eu acho que se o programa foi chamado de algo talvez um pouco menos provocante 294 00:19:42,510 --> 00:19:48,690 como Segredo SMS Replicator ele provavelmente teria funcionado muito melhor. 295 00:19:48,690 --> 00:19:52,870 Mas era meio óbvio. 296 00:19:52,870 --> 00:19:58,680 >> Uma das coisas que podemos fazer para determinar se os aplicativos têm esse comportamento que não queremos 297 00:19:58,680 --> 00:20:01,410 é inspecionar o código. 298 00:20:01,410 --> 00:20:06,250 Isso é realmente muito fácil de fazer em Android porque podemos decompor os apps. 299 00:20:06,250 --> 00:20:11,050 No iOS, você pode usar um disassembler como IDA Pro 300 00:20:11,050 --> 00:20:17,190 olhar para o que APIs do aplicativo está chamando eo que ele está fazendo. 301 00:20:17,190 --> 00:20:20,680 Nós escrevemos nosso próprio analisador estático binário para o nosso código 302 00:20:20,680 --> 00:20:24,940 e fazemos isso, e assim o que você poderia fazer é que você poderia dizer 303 00:20:24,940 --> 00:20:30,490 se o dispositivo de fazer qualquer coisa que é, basicamente, me espionando ou me rastrear? 304 00:20:30,490 --> 00:20:33,360 E eu tenho alguns exemplos aqui no iPhone. 305 00:20:33,360 --> 00:20:41,440 Este primeiro exemplo é como acessar o UUID no telefone. 306 00:20:41,440 --> 00:20:47,060 Isso é realmente algo que a Apple acaba banido para novas aplicações, 307 00:20:47,060 --> 00:20:52,540 mas aplicativos antigos que você pode ter em execução no seu telefone ainda pode fazer isso, 308 00:20:52,540 --> 00:20:56,500 e de modo que o identificador exclusivo pode ser utilizado para rastrear você 309 00:20:56,500 --> 00:21:00,440 em muitas aplicações diferentes. 310 00:21:00,440 --> 00:21:07,180 >> No Android, tenho um exemplo aqui de obter a localização do dispositivo. 311 00:21:07,180 --> 00:21:10,310 Você pode ver que, se essa chamada API é lá que o app está seguindo, 312 00:21:10,310 --> 00:21:15,000 e você pode ver se ele está ficando boa localização ou localização grosseira. 313 00:21:15,000 --> 00:21:18,860 E, em seguida, na parte inferior aqui, eu tenho um exemplo de como no BlackBerry 314 00:21:18,860 --> 00:21:25,130 um aplicativo pode acessar as mensagens de e-mail em sua caixa de entrada. 315 00:21:25,130 --> 00:21:27,660 Estes são o tipo de coisas que você pode inspecionar para ver 316 00:21:27,660 --> 00:21:32,360 se o aplicativo está fazendo essas coisas. 317 00:21:32,360 --> 00:21:38,320 A segunda grande categoria de comportamento malicioso, e este é provavelmente o maior da categoria, agora, 318 00:21:38,320 --> 00:21:43,950 é a marcação não autorizado, não autorizado prémio de mensagens de texto SMS 319 00:21:43,950 --> 00:21:46,080 ou pagamentos não autorizados. 320 00:21:46,080 --> 00:21:48,930 Outra coisa que é único sobre o telefone 321 00:21:48,930 --> 00:21:52,700 se o dispositivo estiver ligado a uma conta de cobrança, 322 00:21:52,700 --> 00:21:55,960 e quando as atividades acontecem no telefone 323 00:21:55,960 --> 00:21:58,510 ele pode criar encargos. 324 00:21:58,510 --> 00:22:00,700 Você pode comprar as coisas pelo telefone, 325 00:22:00,700 --> 00:22:04,390 e quando você envia uma mensagem de texto SMS premium na verdade você está dando dinheiro 326 00:22:04,390 --> 00:22:11,590 para o titular da conta do número de telefone do outro lado. 327 00:22:11,590 --> 00:22:17,420 Estes foram criados para obter cotações de ações ou obter o seu horóscopo diário ou outras coisas, 328 00:22:17,420 --> 00:22:21,680 mas eles podem ser configurados para encomendar um produto, enviando um SMS. 329 00:22:21,680 --> 00:22:26,970 As pessoas dão dinheiro para a Cruz Vermelha através do envio de uma mensagem de texto. 330 00:22:26,970 --> 00:22:30,650 Você pode dar 10 dólares dessa maneira. 331 00:22:30,650 --> 00:22:34,190 >> Os agressores, o que eles fizeram é eles montaram 332 00:22:34,190 --> 00:22:38,750 contas em países estrangeiros, e eles incorporar na malwares 333 00:22:38,750 --> 00:22:42,840 que o telefone irá enviar uma mensagem de texto SMS premium, 334 00:22:42,840 --> 00:22:47,700 dizer, algumas vezes por dia, e no final do mês você percebe que você passou 335 00:22:47,700 --> 00:22:52,090 dezenas ou talvez até centenas de dólares, e que a pé com o dinheiro. 336 00:22:52,090 --> 00:22:57,280 Este ficou tão ruim que esta foi a primeira coisa que o Android 337 00:22:57,280 --> 00:23:00,760 Mercado ou o Google lugar-foi o mercado Android no momento, 338 00:23:00,760 --> 00:23:04,430 e é agora o Google Play-a primeira coisa que o Google começou verificando. 339 00:23:04,430 --> 00:23:08,700 Quando o Google começou a distribuir os apps Android em sua loja de aplicativos 340 00:23:08,700 --> 00:23:11,350 eles disseram que não estavam indo para verificar se há qualquer coisa. 341 00:23:11,350 --> 00:23:15,630 Vamos puxar aplicativos, uma vez que já foi notificado que quebrou nossos termos de serviço, 342 00:23:15,630 --> 00:23:17,520 mas nós não estamos indo para verificar se há qualquer coisa. 343 00:23:17,520 --> 00:23:24,350 Bem, há um ano ele ficou tão ruim com este malware mensagem de texto SMS premium 344 00:23:24,350 --> 00:23:28,030 que esta é a primeira coisa que eles começaram a verificação de. 345 00:23:28,030 --> 00:23:31,770 Se um aplicativo pode enviar mensagens de texto SMS 346 00:23:31,770 --> 00:23:34,750 que examinar mais que a aplicação manualmente. 347 00:23:34,750 --> 00:23:38,770 Eles olham para as APIs que chamam isso, 348 00:23:38,770 --> 00:23:40,580 e agora, desde então, o Google se expandiu, 349 00:23:40,580 --> 00:23:46,900 mas esta foi a primeira coisa que eles começaram a procurar. 350 00:23:46,900 --> 00:23:50,690 >> Alguns outros aplicativos que faziam algumas mensagens de texto SMS, 351 00:23:50,690 --> 00:23:56,980 este Qicsomos Android, acho que ele é chamado. 352 00:23:56,980 --> 00:24:02,670 Havia um evento atual no celular onde esta CarrierIQ saiu 353 00:24:02,670 --> 00:24:07,720 como spyware colocar no dispositivo pelas operadoras, 354 00:24:07,720 --> 00:24:10,820 para que as pessoas queriam saber se seu telefone era vulnerável a isso, 355 00:24:10,820 --> 00:24:13,890 e este foi um aplicativo gratuito que testou isso. 356 00:24:13,890 --> 00:24:17,520 Bem, é claro, o que fez este aplicativo foi enviado mensagens de texto SMS premium, 357 00:24:17,520 --> 00:24:20,090 assim, testando para ver se você está infectado com spyware 358 00:24:20,090 --> 00:24:24,930 você carregou malware em seu dispositivo. 359 00:24:24,930 --> 00:24:27,310 Vimos a mesma coisa acontecer no último Super Bowl. 360 00:24:27,310 --> 00:24:33,180 Houve uma versão falsa do jogo de futebol Madden 361 00:24:33,180 --> 00:24:38,320 que enviou mensagens de texto SMS premium. 362 00:24:38,320 --> 00:24:45,750 Na verdade, tentou criar uma rede bot também no dispositivo. 363 00:24:45,750 --> 00:24:48,090 Aqui eu tenho alguns exemplos. 364 00:24:48,090 --> 00:24:52,640 Curiosamente, a Apple foi muito inteligente, 365 00:24:52,640 --> 00:24:58,470 e eles não permitem que aplicativos para enviar mensagens de texto SMS em tudo. 366 00:24:58,470 --> 00:25:00,350 Nenhum aplicativo pode fazê-lo. 367 00:25:00,350 --> 00:25:03,530 Essa é uma ótima maneira de se livrar de toda uma classe de vulnerabilidade, 368 00:25:03,530 --> 00:25:09,040 mas no Android você pode fazê-lo, e, claro, no BlackBerry, você pode fazê-lo também. 369 00:25:09,040 --> 00:25:13,060 É interessante que no BlackBerry tudo o que você precisa é de permissões de internet 370 00:25:13,060 --> 00:25:18,370 para enviar uma mensagem de texto SMS. 371 00:25:18,370 --> 00:25:21,580 >> A outra coisa realmente que nós procuramos 372 00:25:21,580 --> 00:25:24,780 quando estamos olhando para ver se algo está mal-intencionado é qualquer tipo de 373 00:25:24,780 --> 00:25:28,100 atividade de rede não autorizado, como olhar para a atividade de rede 374 00:25:28,100 --> 00:25:31,570 o app é suposto ter que ter a sua funcionalidade, 375 00:25:31,570 --> 00:25:35,380 e olhar para esta outra atividade da rede. 376 00:25:35,380 --> 00:25:43,380 Talvez um aplicativo, para funcionar, tem de obter dados sobre HTTP, 377 00:25:43,380 --> 00:25:47,500 mas se for fazer as coisas por e-mail ou SMS ou Bluetooth ou algo parecido 378 00:25:47,500 --> 00:25:52,890 agora que o app poderia ser potencialmente malicioso, por isso esta é uma outra coisa que você pode inspecionar. 379 00:25:52,890 --> 00:26:00,430 E neste slide aqui eu tenho alguns exemplos disso. 380 00:26:00,430 --> 00:26:05,950 Outra coisa interessante que vimos com malware aconteceu em 2009, 381 00:26:05,950 --> 00:26:07,600 e aconteceu em grande forma. 382 00:26:07,600 --> 00:26:11,390 Eu não sei se isso aconteceu muito desde então, mas era um app 383 00:26:11,390 --> 00:26:15,140 que personificou outro aplicativo. 384 00:26:15,140 --> 00:26:21,700 Houve um conjunto de aplicativos, e foi apelidado de ataque 09Droid, 385 00:26:21,700 --> 00:26:29,770 e alguém decidiu que havia um monte de pequenos bancos de médio porte, regionais 386 00:26:29,770 --> 00:26:32,260 que não tinha aplicações bancárias on-line, 387 00:26:32,260 --> 00:26:36,870 então o que eles fizeram foi que eles construíram cerca de 50 aplicações bancárias online 388 00:26:36,870 --> 00:26:39,410 que tudo o que fez foi levar o nome de usuário e senha 389 00:26:39,410 --> 00:26:42,190 e redirecioná-lo para o site. 390 00:26:42,190 --> 00:26:47,470 E assim, eles colocaram todos estes acima no Google Marketplace, 391 00:26:47,470 --> 00:26:51,530 no mercado Android, e quando alguém procurou para ver se o seu banco 392 00:26:51,530 --> 00:26:56,000 tinha uma aplicação que iria encontrar o aplicativo falso, 393 00:26:56,000 --> 00:27:01,230 que coletou suas credenciais e, então, redirecionado-os para o seu site. 394 00:27:01,230 --> 00:27:06,640 A maneira que isso realmente se tornou-os aplicativos foram até lá por algumas semanas, 395 00:27:06,640 --> 00:27:09,050 e havia milhares e milhares de downloads. 396 00:27:09,050 --> 00:27:12,910 >> A maneira como isso veio à tona era alguém estava tendo um problema 397 00:27:12,910 --> 00:27:15,740 com uma das aplicações, e chamaram o seu banco, 398 00:27:15,740 --> 00:27:18,390 e chamaram linha de apoio ao cliente do seu banco e disse: 399 00:27:18,390 --> 00:27:21,180 "Eu estou tendo um problema com o aplicativo de mobile banking". 400 00:27:21,180 --> 00:27:23,460 "Você pode me ajudar?" 401 00:27:23,460 --> 00:27:26,540 E eles disseram: "Nós não temos um aplicativo bancário móvel." 402 00:27:26,540 --> 00:27:28,120 Isso começou a investigação. 403 00:27:28,120 --> 00:27:31,200 Esse banco chamado Google e Google olhou e disse: 404 00:27:31,200 --> 00:27:37,220 "Uau, o mesmo autor tem escrito 50 aplicações de banco", e os levou a todos para baixo. 405 00:27:37,220 --> 00:27:43,410 Mas, certamente, isso pode acontecer de novo. 406 00:27:43,410 --> 00:27:51,790 Aí está a lista de todos os diferentes bancos aqui 407 00:27:51,790 --> 00:27:55,870 que fizeram parte desta farsa. 408 00:27:55,870 --> 00:28:02,050 A outra coisa que um aplicativo pode fazer é apresentar a interface do usuário de outro aplicativo. 409 00:28:02,050 --> 00:28:06,430 Enquanto ele está correndo poderia aparecer o Facebook UI. 410 00:28:06,430 --> 00:28:09,540 Ele diz que você tem que colocar em seu nome de usuário e senha para continuar 411 00:28:09,540 --> 00:28:15,090 ou colocar qualquer nome de usuário e senha da interface do usuário para um site 412 00:28:15,090 --> 00:28:18,420 que talvez o usuário utiliza apenas para tentar enganar o usuário 413 00:28:18,420 --> 00:28:21,340 em colocar as suas credenciais dentro 414 00:28:21,340 --> 00:28:25,590 Este é realmente um paralelo direto dos ataques de phishing e-mail 415 00:28:25,590 --> 00:28:28,210 onde alguém lhe envia uma mensagem de e-mail 416 00:28:28,210 --> 00:28:33,050 e dá-lhe, basicamente, uma interface de usuário para um site falso 417 00:28:33,050 --> 00:28:37,320 que você tem acesso. 418 00:28:37,320 --> 00:28:41,590 >> A outra coisa que procurar em um código malicioso é a modificação do sistema. 419 00:28:41,590 --> 00:28:48,160 Você pode olhar para todas as chamadas de API que requerem privilégios de root 420 00:28:48,160 --> 00:28:50,870 para executar corretamente. 421 00:28:50,870 --> 00:28:56,160 Alterar proxy web do dispositivo seria algo que um aplicativo 422 00:28:56,160 --> 00:28:59,530 não deve ser capaz de fazer. 423 00:28:59,530 --> 00:29:03,030 Mas se o aplicativo tem código lá para fazer isso 424 00:29:03,030 --> 00:29:05,960 você sabe que é, provavelmente, um aplicativo malicioso 425 00:29:05,960 --> 00:29:09,620 ou altamente provável que seja um aplicativo malicioso, 426 00:29:09,620 --> 00:29:13,910 e assim o que aconteceria é que o app teria alguma forma de escalada privilégio. 427 00:29:13,910 --> 00:29:17,200 Teria algum escalonamento de privilégios explorar 428 00:29:17,200 --> 00:29:20,730 na aplicação, em seguida, uma vez que ele escalou privilégios 429 00:29:20,730 --> 00:29:23,800 seria fazer essas modificações no sistema. 430 00:29:23,800 --> 00:29:28,010 Você pode encontrar malware que tem escalação de privilégios 431 00:29:28,010 --> 00:29:32,550 nele mesmo sem saber como o escalonamento de privilégios 432 00:29:32,550 --> 00:29:37,960 exploit que vai acontecer, e isso é uma maneira agradável, fácil 433 00:29:37,960 --> 00:29:41,220 para procurar malware. 434 00:29:41,220 --> 00:29:46,030 DroidDream foi, provavelmente, a mais famosa peça de malware Android. 435 00:29:46,030 --> 00:29:50,530 Eu acho que afetou cerca de 250 mil usuários ao longo de alguns dias 436 00:29:50,530 --> 00:29:52,810 antes de ter sido encontrado. 437 00:29:52,810 --> 00:29:56,890 Eles reembalado 50 aplicativos falsos, 438 00:29:56,890 --> 00:30:00,370 colocá-los na loja de aplicativos Android, 439 00:30:00,370 --> 00:30:10,940 e, essencialmente, ela usou o código jailbreak Android para escalar privilégios 440 00:30:10,940 --> 00:30:16,380 e, em seguida, instalar um comando e controle e virar todas as vítimas 441 00:30:16,380 --> 00:30:20,690 em uma rede de bot, mas você poderia ter detectado esta 442 00:30:20,690 --> 00:30:24,170 se você fosse a digitalização do aplicativo e apenas procurando 443 00:30:24,170 --> 00:30:32,230 Chamadas de API que a permissão raiz necessários para executar corretamente. 444 00:30:32,230 --> 00:30:40,150 >> E há um exemplo aqui eu tenho que está mudando o proxy, 445 00:30:40,150 --> 00:30:46,380 e este, na verdade, só está disponível no Android. 446 00:30:46,380 --> 00:30:49,070 Você pode ver que eu estou te dando um monte de exemplos sobre Android 447 00:30:49,070 --> 00:30:53,990 porque este é o lugar onde o ecossistema malware mais ativo é 448 00:30:53,990 --> 00:30:58,690 porque é muito fácil para um atacante para obter o código malicioso 449 00:30:58,690 --> 00:31:01,470 no Android Marketplace. 450 00:31:01,470 --> 00:31:06,480 Não é tão fácil de fazer que na App Store da Apple 451 00:31:06,480 --> 00:31:10,250 porque a Apple exige que os desenvolvedores a identificar-se 452 00:31:10,250 --> 00:31:12,790 e assinar o código. 453 00:31:12,790 --> 00:31:20,340 Eles realmente verificar quem você é, ea Apple é realmente o exame dos pedidos. 454 00:31:20,340 --> 00:31:27,450 Nós não vemos um monte de malware propriamente dito, onde o dispositivo está sendo comprometida. 455 00:31:27,450 --> 00:31:32,250 Vou falar sobre alguns exemplos onde é realmente de privacidade que está ficando comprometida, 456 00:31:32,250 --> 00:31:38,460 e isso é o que realmente está acontecendo no dispositivo Apple. 457 00:31:38,460 --> 00:31:44,090 Outra coisa é olhar para o código malicioso, código arriscado em dispositivos 458 00:31:44,090 --> 00:31:50,300 é lógica ou tempo bombas e bombas de tempo são, provavelmente, 459 00:31:50,300 --> 00:31:53,370 muito mais fácil do que procurar bombas lógicas. 460 00:31:53,370 --> 00:31:57,030 Mas, com bombas de tempo, o que você pode fazer é que você pode olhar para 461 00:31:57,030 --> 00:32:04,760 lugares no código onde o tempo é testada ou um tempo absoluto é procurado 462 00:32:04,760 --> 00:32:08,190 antes de certas funcionalidades no aplicativo acontece. 463 00:32:08,190 --> 00:32:14,200 E isso poderia ser feito para esconder que a atividade do usuário, 464 00:32:14,200 --> 00:32:17,510 por isso está a acontecer à noite. 465 00:32:17,510 --> 00:32:24,350 DroidDream fez toda a sua actividade 11:00-08:00 hora local 466 00:32:24,350 --> 00:32:30,650 para tentar fazê-lo enquanto o usuário não pode estar usando seu dispositivo. 467 00:32:30,650 --> 00:32:38,680 >> Outra razão para fazer isso é se as pessoas estão usando a análise do comportamento de um aplicativo, 468 00:32:38,680 --> 00:32:43,430 executar o aplicativo em uma caixa de areia para ver o que o comportamento da aplicação é, 469 00:32:43,430 --> 00:32:51,090 eles podem usar a lógica baseada em tempo de fazer a atividade 470 00:32:51,090 --> 00:32:54,640 quando o aplicativo não está na caixa de areia. 471 00:32:54,640 --> 00:33:01,520 Por exemplo, uma loja de aplicativos como a Apple 472 00:33:01,520 --> 00:33:07,940 executa o aplicativo, mas eles provavelmente não executar todas as aplicações para, digamos, 30 dias 473 00:33:07,940 --> 00:33:10,550 antes de o aprovar, para que possa colocar 474 00:33:10,550 --> 00:33:14,120 lógica em seu aplicativo que disse, tudo bem, só fazer o que é mau 475 00:33:14,120 --> 00:33:20,490 depois de 30 dias se passou ou depois de 30 dias após a data de publicação do pedido, 476 00:33:20,490 --> 00:33:27,020 e que pode ajudar a esconder o código malicioso de pessoas que inspecionam por isso. 477 00:33:27,020 --> 00:33:30,050 Se as empresas de antivírus estão conduzindo as coisas em caixas de areia 478 00:33:30,050 --> 00:33:36,370 ou as próprias lojas de aplicativos são isso pode ajudar 479 00:33:36,370 --> 00:33:39,260 esconder que a partir dessa inspecção. 480 00:33:39,260 --> 00:33:43,020 Agora, o outro lado da moeda é que é fácil de se encontrar com a análise estática, 481 00:33:43,020 --> 00:33:46,170 por isso, na verdade, inspecionando o código que você pode olhar para todos os lugares 482 00:33:46,170 --> 00:33:54,010 onde o aplicativo testa o tempo e inspecionar assim. 483 00:33:54,010 --> 00:33:58,850 E aqui eu tenho alguns exemplos sobre essas três plataformas diferentes 484 00:33:58,850 --> 00:34:05,640 como o tempo pode ser verificado pelo fabricante aplicativo 485 00:34:05,640 --> 00:34:10,520 para que você saiba o que procurar se você está inspecionando o aplicativo estaticamente. 486 00:34:10,520 --> 00:34:14,570 >> Eu só passei por um monte de diferentes atividades maliciosas 487 00:34:14,570 --> 00:34:18,969 que temos visto na natureza, mas quais são os mais prevalentes? 488 00:34:18,969 --> 00:34:23,940 Esse mesmo estudo da North Carolina State móvel Projeto Genoma 489 00:34:23,940 --> 00:34:28,560 publicados alguns dados, e foram basicamente quatro áreas 490 00:34:28,560 --> 00:34:32,850 que eles viram onde havia uma grande quantidade de atividade. 491 00:34:32,850 --> 00:34:35,370 37% dos apps fez escalação de privilégios, 492 00:34:35,370 --> 00:34:38,429 então eles tinham algum tipo de código de jailbreak lá 493 00:34:38,429 --> 00:34:42,070 onde tentaram escalar privilégios para que eles pudessem 494 00:34:42,070 --> 00:34:48,360 que comandos API rodando como sistema operacional. 495 00:34:48,360 --> 00:34:52,520 45% dos apps lá fora fez SMS premium, 496 00:34:52,520 --> 00:34:57,260 de modo que é uma enorme percentagem que está a tentar rentabilizar diretamente. 497 00:34:57,260 --> 00:35:02,640 93% fizeram o controle remoto, para que eles tentaram criar uma rede de bot, uma rede bot móvel. 498 00:35:02,640 --> 00:35:08,990 E 45% colhidas informações de identificação 499 00:35:08,990 --> 00:35:16,230 como números de telefone, UUIDs, localização GPS, contas de usuário 500 00:35:16,230 --> 00:35:22,870 e isto acrescenta-se a mais de 100, porque a maioria dos malware tenta fazer algumas dessas coisas. 501 00:35:22,870 --> 00:35:27,070 >> Eu vou mudar para a segunda metade e falar sobre as vulnerabilidades de código. 502 00:35:27,070 --> 00:35:29,480 Esta é a segunda metade da atividade de risco. 503 00:35:29,480 --> 00:35:33,450 Este é o lugar onde essencialmente o desenvolvedor está cometendo erros. 504 00:35:33,450 --> 00:35:37,210 Um desenvolvedor legítimo escrever um aplicativo legítimo 505 00:35:37,210 --> 00:35:41,830 é cometer erros ou é ignorante sobre os riscos de a plataforma móvel. 506 00:35:41,830 --> 00:35:44,780 Eles simplesmente não sabem como fazer um aplicativo móvel seguro, 507 00:35:44,780 --> 00:35:47,700 ou, por vezes, o desenvolvedor não se preocupa em colocar o usuário em risco. 508 00:35:47,700 --> 00:35:50,850 Às vezes, parte de seu modelo de negócio pode ser 509 00:35:50,850 --> 00:35:54,610 colhendo informações pessoais do usuário. 510 00:35:54,610 --> 00:35:58,090 Isso é uma espécie de outra categoria, e é por isso que algumas dessas malicioso 511 00:35:58,090 --> 00:36:03,200 contra começa a sangrar mais legítimos porque não há diferença de opiniões 512 00:36:03,200 --> 00:36:10,440 entre o que o usuário quer e aquilo que o usuário considera arriscado 513 00:36:10,440 --> 00:36:13,050 eo que o desenvolvedor do aplicativo considera arriscado. 514 00:36:13,050 --> 00:36:18,380 Claro, não é de dados do desenvolvedor do aplicativo, na maioria dos casos. 515 00:36:18,380 --> 00:36:22,030 >> E então, finalmente, uma outra maneira isso acontece é um desenvolvedor pode vincular em 516 00:36:22,030 --> 00:36:28,600 uma biblioteca compartilhada que tem vulnerabilidades ou este comportamento de risco em que 517 00:36:28,600 --> 00:36:32,480 sem o conhecimento deles. 518 00:36:32,480 --> 00:36:37,060 A primeira categoria é o vazamento de dados sensíveis, 519 00:36:37,060 --> 00:36:40,030 e isso é quando o aplicativo coleta informações 520 00:36:40,030 --> 00:36:44,980 como localização, informações de livro de endereços, informações do proprietário 521 00:36:44,980 --> 00:36:48,000 e manda que desligar o dispositivo. 522 00:36:48,000 --> 00:36:53,050 E uma vez que ele está fora do dispositivo, não sabemos o que está acontecendo com essa informação. 523 00:36:53,050 --> 00:36:57,170 Poderia ser armazenados de forma insegura pelo desenvolvedor do aplicativo. 524 00:36:57,170 --> 00:37:02,070 Temos visto os desenvolvedores de aplicativos se comprometido, 525 00:37:02,070 --> 00:37:05,820 e os dados que estão armazenando é levado. 526 00:37:05,820 --> 00:37:10,970 Isso aconteceu há alguns meses para um desenvolvedor na Flórida 527 00:37:10,970 --> 00:37:21,660 onde um grande número de-era UUIDs iPads e nomes de dispositivos 528 00:37:21,660 --> 00:37:25,270 vazaram porque alguém, eu acho que era anônimo, 529 00:37:25,270 --> 00:37:29,460 alegou para fazer isso, invadiu os servidores deste desenvolvedor 530 00:37:29,460 --> 00:37:34,920 e roubou milhões de iPad UUIDs 531 00:37:34,920 --> 00:37:37,390 e nomes de computadores. 532 00:37:37,390 --> 00:37:40,260 Não a informação mais arriscado, 533 00:37:40,260 --> 00:37:46,820 mas o que se fosse esse o armazenamento de nomes de usuário e senhas 534 00:37:46,820 --> 00:37:48,170 e endereços residenciais? 535 00:37:48,170 --> 00:37:51,100 Há muitos aplicativos que armazenam esse tipo de informação. 536 00:37:51,100 --> 00:37:53,230 O risco está lá. 537 00:37:53,230 --> 00:37:56,620 >> A outra coisa que pode acontecer é se o desenvolvedor não cuidar 538 00:37:56,620 --> 00:38:01,370 para proteger o canal de dados, e isso é outro grande vulnerabilidade eu vou falar, 539 00:38:01,370 --> 00:38:05,160 que os dados estão sendo enviados em claro. 540 00:38:05,160 --> 00:38:09,040 Se o usuário estiver em uma rede Wi-Fi pública 541 00:38:09,040 --> 00:38:12,330 ou alguém está cheirando a internet em algum lugar 542 00:38:12,330 --> 00:38:19,260 ao longo do percurso que os dados estão a ser expostos. 543 00:38:19,260 --> 00:38:23,790 Um muito famoso caso deste vazamento de informações aconteceu com Pandora, 544 00:38:23,790 --> 00:38:27,250 e isso é algo que pesquisou no Veracode. 545 00:38:27,250 --> 00:38:33,200 Ouvimos que havia uma-Eu acho que foi uma Comissão Federal de Comércio 546 00:38:33,200 --> 00:38:35,310 investigação acontecendo com Pandora. 547 00:38:35,310 --> 00:38:39,830 Nós dissemos: "O que está acontecendo lá? Vamos começar a cavar para o aplicativo Pandora." 548 00:38:39,830 --> 00:38:46,690 E o que determinou foi a aplicação Pandora coletadas 549 00:38:46,690 --> 00:38:51,270 seu sexo e sua idade, 550 00:38:51,270 --> 00:38:56,660 e também acessada a sua localização GPS eo aplicativo Pandora 551 00:38:56,660 --> 00:39:00,200 fez isso para que eles disseram eram razões legítimas. 552 00:39:00,200 --> 00:39:05,360 A música que eles estavam jogando-Pandora é um aplicativo de streaming de música 553 00:39:05,360 --> 00:39:07,530 a música que eles estavam jogando só foi licenciado nos Estados Unidos, 554 00:39:07,530 --> 00:39:13,020 então eles tinham que verificar para cumprir seus contratos de licença que tinham 555 00:39:13,020 --> 00:39:17,240 para a música que o usuário estava nos Estados Unidos. 556 00:39:17,240 --> 00:39:25,070 Eles também queriam cumprir com o parental advisory 557 00:39:25,070 --> 00:39:33,790 em torno de linguagem adulta na música, 558 00:39:33,790 --> 00:39:37,500 e por isso é um programa voluntário, mas eles queriam cumprir essa 559 00:39:37,500 --> 00:39:43,010 e não jogar letras explícitas para crianças de 13 anos ou menos. 560 00:39:43,010 --> 00:39:46,280 >> Eles tinham razões legítimas para a coleta de dados. 561 00:39:46,280 --> 00:39:49,160 Seu aplicativo tinha as permissões para fazê-lo. 562 00:39:49,160 --> 00:39:52,000 Usuários achava que isso era legítimo. Mas o que aconteceu? 563 00:39:52,000 --> 00:39:55,810 Eles ligaram em 3 ou 4 bibliotecas de anúncios diferentes. 564 00:39:55,810 --> 00:39:59,140 Agora, de repente, todas essas bibliotecas de anúncios 565 00:39:59,140 --> 00:40:02,970 estão tendo acesso a esta mesma informação. 566 00:40:02,970 --> 00:40:05,830 As bibliotecas de anúncios, se você olhar o código nas bibliotecas de anúncios 567 00:40:05,830 --> 00:40:08,430 o que eles fazem é cada biblioteca anúncio diz 568 00:40:08,430 --> 00:40:11,340 "Será que meu aplicativo tem permissão para obter a localização GPS?" 569 00:40:11,340 --> 00:40:14,890 "Oh, isso? Ok, me diga a localização GPS." 570 00:40:14,890 --> 00:40:16,620 Cada biblioteca anúncio só faz isso, 571 00:40:16,620 --> 00:40:19,740 e se o aplicativo não tem permissão GPS 572 00:40:19,740 --> 00:40:23,460 não será capaz de obtê-lo, mas, se isso acontecer, ele vai buscá-la. 573 00:40:23,460 --> 00:40:26,240 Este é o lugar onde o modelo de negócio das bibliotecas de anúncios 574 00:40:26,240 --> 00:40:31,160 opõe-se à privacidade do usuário. 575 00:40:31,160 --> 00:40:34,980 E tem havido estudos lá fora, que vai dizer se você sabe a idade 576 00:40:34,980 --> 00:40:38,430 de uma pessoa e você sabe que a sua localização 577 00:40:38,430 --> 00:40:42,530 onde dormir à noite, porque você tem as suas coordenadas de GPS 578 00:40:42,530 --> 00:40:46,030 enquanto eles estão dormindo, talvez, você sabe exatamente quem é essa pessoa 579 00:40:46,030 --> 00:40:50,230 porque você pode determinar qual membro dessa família é essa pessoa. 580 00:40:50,230 --> 00:40:54,780 Realmente esta é a identificação para os anunciantes 581 00:40:54,780 --> 00:40:59,530 exatamente quem você é, e parece que era legítimo. 582 00:40:59,530 --> 00:41:02,800 Eu só quero que meu streaming de música, e esta é a única maneira de obtê-lo. 583 00:41:02,800 --> 00:41:05,370 >> Bem, nós expusemos isso. 584 00:41:05,370 --> 00:41:08,030 Nós escrevemos isso em vários posts, 585 00:41:08,030 --> 00:41:13,280 e descobriu-se que alguém da revista Rolling Stone 586 00:41:13,280 --> 00:41:18,810 ler um de nossos posts e escreveu seu próprio blog na revista Rolling Stone sobre o assunto, 587 00:41:18,810 --> 00:41:22,120 e no dia seguinte Pandora pensou que era uma boa idéia 588 00:41:22,120 --> 00:41:27,600 para remover as bibliotecas de anúncios com a sua aplicação. 589 00:41:27,600 --> 00:41:31,270 Tanto quanto eu sei que eles são a única, eles devem ser elogiados. 590 00:41:31,270 --> 00:41:35,770 Eu acho que eles são o único tipo freemium de aplicativo que tenha feito isso. 591 00:41:35,770 --> 00:41:38,660 Todos os outros aplicativos freemium ter esse mesmo comportamento, 592 00:41:38,660 --> 00:41:41,780 então você tem que pensar sobre o tipo de dados que você está dando 593 00:41:41,780 --> 00:41:48,330 esses aplicativos freemium porque tudo vai para os anunciantes. 594 00:41:48,330 --> 00:41:53,390 Praetorian também fez um estudo sobre as bibliotecas compartilhadas e disse: 595 00:41:53,390 --> 00:41:57,100 "Vamos ver quais bibliotecas compartilhadas são as bibliotecas compartilhadas top", e isso foi os dados. 596 00:41:57,100 --> 00:41:59,420 >> Eles analisaram 53 mil apps, 597 00:41:59,420 --> 00:42:01,900 ea biblioteca compartilhada número 1 foi AdMob. 598 00:42:01,900 --> 00:42:06,060 Na verdade, foi em 38% das aplicações lá fora, 599 00:42:06,060 --> 00:42:08,800 assim 38% dos aplicativos que você está usando 600 00:42:08,800 --> 00:42:11,250 provavelmente estão colhendo suas informações pessoais 601 00:42:11,250 --> 00:42:16,650 e enviá-lo para as redes de anúncios. 602 00:42:16,650 --> 00:42:19,350 Apache e Android foram de 8% e 6%, 603 00:42:19,350 --> 00:42:22,960 e, em seguida, estes outros, na parte inferior, o Google Ads, Flurry, 604 00:42:22,960 --> 00:42:26,600 Mob City e Millennial Media, 605 00:42:26,600 --> 00:42:30,500 estas são todas as empresas de publicidade, e depois, curiosamente, 606 00:42:30,500 --> 00:42:33,500 4% ligados na biblioteca Facebook 607 00:42:33,500 --> 00:42:38,870 provavelmente para fazer a autenticação através do Facebook 608 00:42:38,870 --> 00:42:40,810 de modo que o aplicativo poderia autenticar o Facebook. 609 00:42:40,810 --> 00:42:44,660 Mas isso também significa que a corporação Facebook controla código 610 00:42:44,660 --> 00:42:49,010 que está sendo executado em 4% dos aplicativos móveis Android lá fora, 611 00:42:49,010 --> 00:42:53,490 e eles têm acesso a todos os dados que esse aplicativo tem permissão para chegar. 612 00:42:53,490 --> 00:42:57,170 Facebook essencialmente tenta vender espaço publicitário. 613 00:42:57,170 --> 00:43:00,120 Esse é o seu modelo de negócio. 614 00:43:00,120 --> 00:43:02,920 >> Se você olhar para todo esse ecossistema com essas permissões 615 00:43:02,920 --> 00:43:07,740 e bibliotecas compartilhadas, você começa a ver que 616 00:43:07,740 --> 00:43:13,850 você tem um monte de risco em um aplicativo, supostamente legítima. 617 00:43:13,850 --> 00:43:19,360 A mesma coisa semelhante que aconteceu com Pandora 618 00:43:19,360 --> 00:43:22,340 aconteceu com um aplicativo chamado Path, 619 00:43:22,340 --> 00:43:27,660 e Caminho pensaram que estavam sendo úteis, desenvolvedores amigáveis. 620 00:43:27,660 --> 00:43:32,160 Eles estavam apenas tentando dar-lhe uma grande experiência do usuário, 621 00:43:32,160 --> 00:43:37,810 e descobriu-se que sem avisar o usuário ou dizer qualquer coisa que o usuário- 622 00:43:37,810 --> 00:43:40,400 e isso aconteceu no iPhone e no Android, 623 00:43:40,400 --> 00:43:44,420 o aplicativo Pandora foi no iPhone e Android- 624 00:43:44,420 --> 00:43:48,890 que o aplicativo Path foi pegar seu livro de endereços inteiro 625 00:43:48,890 --> 00:43:52,830 e enviá-lo ao caminho apenas quando você instalou e executou o aplicativo, 626 00:43:52,830 --> 00:43:55,840 e não falar sobre isso. 627 00:43:55,840 --> 00:43:58,750 Eles pensaram que era realmente útil para você 628 00:43:58,750 --> 00:44:04,040 para ser capaz de compartilhar com todas as pessoas em sua lista de endereços 629 00:44:04,040 --> 00:44:06,920 que você está usando o aplicativo Path. 630 00:44:06,920 --> 00:44:09,490 >> Bem, obviamente Caminho achava que isso era ótimo para a sua empresa. 631 00:44:09,490 --> 00:44:13,510 Não tão grande para o usuário. 632 00:44:13,510 --> 00:44:19,020 Você tem que pensar que é uma coisa que se talvez um adolescente 633 00:44:19,020 --> 00:44:23,700 está usando esse aplicativo e suas dezenas de amigos estão lá, 634 00:44:23,700 --> 00:44:29,360 mas o que se é o CEO de uma empresa que instala Path 635 00:44:29,360 --> 00:44:33,170 e depois, de repente, seu livro de endereços inteiro está lá em cima? 636 00:44:33,170 --> 00:44:38,310 Você vai ter um monte de informações de contato potencialmente valiosa 637 00:44:38,310 --> 00:44:40,920 para um monte de pessoas. 638 00:44:40,920 --> 00:44:44,500 Um repórter do New York Times, que você pode ser capaz de obter o número de telefone 639 00:44:44,500 --> 00:44:47,380 para ex-presidentes de seu livro de endereços, 640 00:44:47,380 --> 00:44:54,780 então, obviamente, uma grande quantidade de informações sigilosas é transferido com algo parecido com isso. 641 00:44:54,780 --> 00:44:58,090 Houve uma grande aba tal sobre isso que caminho se desculpou. 642 00:44:58,090 --> 00:45:01,610 Eles mudaram a sua aplicação, e ainda impactado Apple. 643 00:45:01,610 --> 00:45:06,950 A Apple disse, "Nós estamos indo para forçar os fornecedores de aplicativos para solicitar aos usuários 644 00:45:06,950 --> 00:45:12,650 se eles estão indo para recolher todo o seu catálogo de endereços. " 645 00:45:12,650 --> 00:45:15,360 >> Parece que o que está acontecendo aqui é 646 00:45:15,360 --> 00:45:19,430 quando há uma grande violação de privacidade e isso faz a imprensa 647 00:45:19,430 --> 00:45:21,680 vemos uma mudança lá fora. 648 00:45:21,680 --> 00:45:23,230 Mas, claro, há outras coisas lá fora. 649 00:45:23,230 --> 00:45:27,440 O aplicativo LinkedIn colhe suas entradas de calendário, 650 00:45:27,440 --> 00:45:34,530 mas a Apple não faz o usuário será solicitado a esse respeito. 651 00:45:34,530 --> 00:45:38,030 As entradas de calendário pode ter informações confidenciais neles também. 652 00:45:38,030 --> 00:45:40,000 Onde é que você vai desenhar a linha? 653 00:45:40,000 --> 00:45:43,960 Isso realmente é uma espécie de lugar evoluindo 654 00:45:43,960 --> 00:45:47,640 onde não há realmente nenhuma boa qualidade lá fora 655 00:45:47,640 --> 00:45:51,990 para os usuários a entender quando a sua informação vai estar em risco 656 00:45:51,990 --> 00:45:57,820 e quando eles vão saber que está sendo tomada. 657 00:45:57,820 --> 00:46:03,040 Nós escrevemos um aplicativo em Veracode chamado Adios, 658 00:46:03,040 --> 00:46:08,350 e, essencialmente, que lhe permitiu apontar o aplicativo em seu diretório iTunes 659 00:46:08,350 --> 00:46:12,550 e olhar para todas as aplicações que foram colhendo o seu livro de endereço completo. 660 00:46:12,550 --> 00:46:19,760 E como você pode ver nesta lista aqui, Angry Birds, 661 00:46:19,760 --> 00:46:21,590 AIM, AroundMe. 662 00:46:21,590 --> 00:46:24,050 Por que Angry Birds precisa de seu livro de endereços? 663 00:46:24,050 --> 00:46:29,160 Eu não sei, mas ele de alguma forma. 664 00:46:29,160 --> 00:46:32,310 >> Isso é algo que muitos, muitos aplicativos fazem. 665 00:46:32,310 --> 00:46:34,780 Você pode inspecionar o código para isso. 666 00:46:34,780 --> 00:46:38,660 Há APIs bem definidas para iPhone, Android e BlackBerry 667 00:46:38,660 --> 00:46:42,120 para chegar ao livro de endereços. 668 00:46:42,120 --> 00:46:48,520 Você pode muito facilmente inspecionar para isso, e é isso que nós fizemos em nossa aplicação Adios. 669 00:46:48,520 --> 00:46:52,320 A próxima categoria, inseguro de armazenamento de dados sensíveis, 670 00:46:52,320 --> 00:46:55,670 é algo onde os desenvolvedores tomar algo como um alfinete ou um número de conta 671 00:46:55,670 --> 00:46:58,530 ou uma senha e guarde-a em claro no dispositivo. 672 00:46:58,530 --> 00:47:02,310 Ainda pior, eles podem armazená-lo em uma área no telefone 673 00:47:02,310 --> 00:47:06,820 que é globalmente acessível, como o cartão SD. 674 00:47:06,820 --> 00:47:11,320 Você vê isso com mais frequência no Android porque o Android permite a um cartão SD. 675 00:47:11,320 --> 00:47:13,200 Dispositivos iPhone não. 676 00:47:13,200 --> 00:47:17,900 Mas nós ainda vimos isso acontecer em um aplicativo Citigroup. 677 00:47:17,900 --> 00:47:25,450 Sua aplicação bancária on-line armazenados os números de conta de forma insegura, 678 00:47:25,450 --> 00:47:28,120 apenas em claro, então se você perdeu o seu dispositivo, 679 00:47:28,120 --> 00:47:30,670 essencialmente você perdeu sua conta bancária. 680 00:47:30,670 --> 00:47:36,000 É por isso que eu, pessoalmente, não fazer serviços bancários no meu iPhone. 681 00:47:36,000 --> 00:47:43,710 Eu acho que é muito arriscado no momento de fazer esses tipos de atividades. 682 00:47:43,710 --> 00:47:45,950 >> Skype fez a mesma coisa. 683 00:47:45,950 --> 00:47:49,870 Skype, é claro, tem um saldo de conta, nome de usuário e senha 684 00:47:49,870 --> 00:47:51,030 que acessar esse equilíbrio. 685 00:47:51,030 --> 00:48:00,080 Eles estavam armazenando todas as informações em claro no dispositivo móvel. 686 00:48:00,080 --> 00:48:05,760 Eu tenho alguns exemplos aqui de criar arquivos 687 00:48:05,760 --> 00:48:10,310 que não têm as permissões adequadas ou gravando em um disco 688 00:48:10,310 --> 00:48:17,260 e não ter qualquer criptografia acontecer para isso. 689 00:48:17,260 --> 00:48:20,190 Esta próxima área, inseguro de transmissão de dados sensíveis, 690 00:48:20,190 --> 00:48:24,450 Eu já aludiu a isso algumas vezes, e por causa do público Wi-Fi 691 00:48:24,450 --> 00:48:27,770 isso é algo que os aplicativos absolutamente precisa fazer, 692 00:48:27,770 --> 00:48:31,250 e este é, provavelmente, o que vemos errar mais. 693 00:48:31,250 --> 00:48:34,920 Eu diria-na verdade, eu acho que eu tenho os dados reais, 694 00:48:34,920 --> 00:48:38,120 mas é perto de metade das aplicações móveis 695 00:48:38,120 --> 00:48:41,780 estragar fazendo SSL. 696 00:48:41,780 --> 00:48:43,910 Eles simplesmente não usar as APIs corretamente. 697 00:48:43,910 --> 00:48:47,970 Quer dizer, tudo que você tem a fazer é seguir as instruções e usar as APIs, 698 00:48:47,970 --> 00:48:54,720 mas eles coisas como não verificar se existe um certificado inválido, no outro extremo, 699 00:48:54,720 --> 00:49:02,120 não verificar se a outra extremidade está tentando fazer um ataque protocolo rebaixamento. 700 00:49:02,120 --> 00:49:07,200 >> Os desenvolvedores, eles querem obter a sua opção, certo? 701 00:49:07,200 --> 00:49:11,910 Sua exigência é a de usar isso para vender. Eles usaram isso para vender. 702 00:49:11,910 --> 00:49:14,800 A exigência não é usar isso para vender com segurança, 703 00:49:14,800 --> 00:49:19,680 e assim é por isso que todas as aplicações que utilizam o SSL para proteger dados 704 00:49:19,680 --> 00:49:23,470 como está sendo transmitida desligar o dispositivo realmente precisam ser inspecionadas 705 00:49:23,470 --> 00:49:28,950 ter certeza de que foi implementado corretamente. 706 00:49:28,950 --> 00:49:32,850 E aqui eu tenho alguns exemplos onde você pode ver uma aplicação 707 00:49:32,850 --> 00:49:37,400 pode estar usando HTTP em vez de HTTPS. 708 00:49:37,400 --> 00:49:40,510 Em alguns casos, aplicativos vai cair de volta para HTTP 709 00:49:40,510 --> 00:49:44,250 se o HTTPS não está a funcionar. 710 00:49:44,250 --> 00:49:49,070 Eu tenho outra chamada aqui no Android onde eles desativado a verificação do certificado, 711 00:49:49,070 --> 00:49:51,700 assim um ataque man-in-the-middle pode acontecer. 712 00:49:51,700 --> 00:49:56,370 Um certificado inválido será aceito. 713 00:49:56,370 --> 00:50:01,920 Estes são todos os casos em que os atacantes vão ser capazes de obter em 714 00:50:01,920 --> 00:50:07,150 a mesma conexão Wi-Fi como o usuário e acesso de todos os dados 715 00:50:07,150 --> 00:50:11,650 que está sendo enviada através da internet. 716 00:50:11,650 --> 00:50:15,970 >> E, finalmente, a última categoria que eu tenho aqui é a senha e chaves codificado. 717 00:50:15,970 --> 00:50:21,470 Nós realmente ver um monte de desenvolvedores usar o mesmo estilo de codificação 718 00:50:21,470 --> 00:50:25,900 que eles fizeram quando estavam construindo aplicativos de servidor web, 719 00:50:25,900 --> 00:50:29,700 assim eles estão construindo um aplicativo de servidor Java, e eles estão codificar a chave. 720 00:50:29,700 --> 00:50:31,940 Bem, quando você está construindo uma aplicação de servidor, sim, 721 00:50:31,940 --> 00:50:34,240 codificar a chave não é uma boa idéia. 722 00:50:34,240 --> 00:50:36,290 Torna-se difícil de mudar. 723 00:50:36,290 --> 00:50:40,700 Mas não é tão ruim no lado do servidor, porque quem tem acesso ao lado do servidor? 724 00:50:40,700 --> 00:50:43,140 Apenas os administradores. 725 00:50:43,140 --> 00:50:48,100 Mas se você tomar o mesmo código e você derramou-o para uma aplicação móvel 726 00:50:48,100 --> 00:50:52,550 agora todo mundo que tem esse aplicativo móvel tem acesso a essa chave codificada, 727 00:50:52,550 --> 00:50:56,380 e realmente vemos isso um monte de vezes, e eu tenho algumas estatísticas 728 00:50:56,380 --> 00:51:00,920 de quantas vezes vemos isso acontecer. 729 00:51:00,920 --> 00:51:04,940 Ele realmente estava no código de exemplo que a MasterCard publicado 730 00:51:04,940 --> 00:51:06,850 sobre como utilizar o seu serviço. 731 00:51:06,850 --> 00:51:11,860 O código de exemplo mostrou como é que você simplesmente pegar a senha 732 00:51:11,860 --> 00:51:14,850 e colocá-lo em uma seqüência codificada ali mesmo, 733 00:51:14,850 --> 00:51:19,380 e sabemos como os desenvolvedores gostam de copiar e colar trechos de código 734 00:51:19,380 --> 00:51:22,360 quando eles estão tentando fazer alguma coisa, para que você copie e cole o trecho de código 735 00:51:22,360 --> 00:51:28,450 que deu como exemplo de código, e você tiver um aplicativo inseguro. 736 00:51:28,450 --> 00:51:31,490 >> E aqui temos alguns exemplos. 737 00:51:31,490 --> 00:51:35,840 Este primeiro é que vemos um monte onde se codificar 738 00:51:35,840 --> 00:51:40,510 o direito de dados em uma URL que é enviado. 739 00:51:40,510 --> 00:51:45,120 Às vezes, vemos string password = a senha. 740 00:51:45,120 --> 00:51:49,060 Isso é muito fácil de detectar, ou string password no BlackBerry e Android. 741 00:51:49,060 --> 00:51:53,680 É realmente muito fácil para verificar se há porque quase sempre 742 00:51:53,680 --> 00:51:57,030 os nomes de desenvolvedores a variável que está segurando a senha 743 00:51:57,030 --> 00:52:02,290 alguma variação de senha. 744 00:52:02,290 --> 00:52:05,200 Eu mencionei que nós fazemos a análise estática em Veracode, 745 00:52:05,200 --> 00:52:11,790 por isso temos analisado várias centenas de aplicativos Android e iOS. 746 00:52:11,790 --> 00:52:15,160 Nós construímos modelos cheio deles, e nós somos capazes de digitalizá-los 747 00:52:15,160 --> 00:52:19,280 para diferentes vulnerabilidades, especialmente as vulnerabilidades que eu estava falando, 748 00:52:19,280 --> 00:52:21,050 e eu tenho alguns dados aqui. 749 00:52:21,050 --> 00:52:24,320 68,5% dos aplicativos Android que nós olhamos 750 00:52:24,320 --> 00:52:28,590 tinha quebrado código criptográfico, 751 00:52:28,590 --> 00:52:33,240 que, para nós, não podemos detectar se você fez a sua própria rotina de criptografia, 752 00:52:33,240 --> 00:52:38,980 não que isso seja uma boa idéia, mas isso está realmente usando as APIs publicadas 753 00:52:38,980 --> 00:52:42,530 que estão sobre a plataforma, mas fazendo-as de tal maneira 754 00:52:42,530 --> 00:52:46,680 que a criptografia seria vulnerável, 68,5. 755 00:52:46,680 --> 00:52:49,870 E isso é para as pessoas que estão enviando-nos as suas aplicações, porque na verdade 756 00:52:49,870 --> 00:52:53,730 eles acham que é uma boa idéia para fazer testes de segurança. 757 00:52:53,730 --> 00:52:56,960 Estes já são pessoas que provavelmente estão pensando em segurança, 758 00:52:56,960 --> 00:52:59,540 por isso é provavelmente ainda pior. 759 00:52:59,540 --> 00:53:02,690 >> Eu não falar sobre controle de linha de injeção de alimentação. 760 00:53:02,690 --> 00:53:07,640 É que verificar se há alguma coisa, mas não é tão arriscado um problema. 761 00:53:07,640 --> 00:53:15,390 Vazamento de informações, este é o local onde os dados confidenciais estão sendo enviadas fora do dispositivo. 762 00:53:15,390 --> 00:53:19,270 Descobrimos que em 40% dos pedidos. 763 00:53:19,270 --> 00:53:23,540 Tempo e Estado, essas são questões tipo de condição de corrida, normalmente muito difíceis de explorar, 764 00:53:23,540 --> 00:53:26,170 então eu não falar sobre isso, mas olhamos para ele. 765 00:53:26,170 --> 00:53:28,750 23% tiveram problemas de injeção SQL. 766 00:53:28,750 --> 00:53:32,020 Muitas pessoas não sabem que um monte de aplicativos 767 00:53:32,020 --> 00:53:35,880 use um pequeno banco de dados SQL pouco em seu back-end para armazenar dados. 768 00:53:35,880 --> 00:53:40,430 Bem, se os dados que você está agarrando na rede 769 00:53:40,430 --> 00:53:43,800 tem cordas de ataque de injeção SQL nele 770 00:53:43,800 --> 00:53:45,970 alguém pode comprometer o dispositivo através disso, 771 00:53:45,970 --> 00:53:49,800 e então eu acho que nós encontramos cerca de 40% das aplicações web tem esse problema, 772 00:53:49,800 --> 00:53:52,840 que é um problema enorme epidemia. 773 00:53:52,840 --> 00:53:55,740 Podemos encontrá-lo 23% do tempo em aplicativos móveis 774 00:53:55,740 --> 00:54:02,030 e isso é provavelmente porque muitas outras aplicações web usam SQL do móvel. 775 00:54:02,030 --> 00:54:05,580 >> E depois ainda vemos alguns cross-site scripting, as questões de autorização, 776 00:54:05,580 --> 00:54:09,400 e gerenciamento de credenciais, que é onde você tem a sua senha codificada. 777 00:54:09,400 --> 00:54:14,540 Em 5% dos pedidos que ver isso. 778 00:54:14,540 --> 00:54:17,970 E então nós temos alguns dados sobre iOS. 779 00:54:17,970 --> 00:54:20,180 81% tiveram problemas de tratamento de erros. 780 00:54:20,180 --> 00:54:23,130 Este é mais um problema de qualidade de código, 781 00:54:23,130 --> 00:54:28,010 mas 67% tiveram problemas de criptografia, por isso não é tão ruim quanto o Android. 782 00:54:28,010 --> 00:54:32,440 Talvez as APIs são um pouco mais fácil, os códigos de exemplo um pouco melhor no iOS. 783 00:54:32,440 --> 00:54:35,420 Mas ainda uma percentagem muito elevada. 784 00:54:35,420 --> 00:54:39,040 Tivemos 54% com o vazamento de informações, 785 00:54:39,040 --> 00:54:42,080 cerca de 30% com erros de gestão buffer. 786 00:54:42,080 --> 00:54:45,930 É lugares onde não poderia ser um problema de corrupção de memória. 787 00:54:45,930 --> 00:54:50,350 Acontece que isso não é tanto um problema para a exploração 788 00:54:50,350 --> 00:54:56,450 em iOS, porque todo o código tem de ser assinado, 789 00:54:56,450 --> 00:55:02,210 por isso é difícil para um invasor executar um código arbitrário no iOS. 790 00:55:02,210 --> 00:55:07,880 Qualidade de código, passagem de diretório, mas depois credenciais gestão aqui em 14,6%, 791 00:55:07,880 --> 00:55:09,250 tão pior do que no Android. 792 00:55:09,250 --> 00:55:13,240 Temos pessoas não lidar com senhas corretamente. 793 00:55:13,240 --> 00:55:15,790 E, em seguida, os erros numéricos e buffer overflow, 794 00:55:15,790 --> 00:55:22,680 aqueles são mais vai haver problemas de qualidade de código no iOS. 795 00:55:22,680 --> 00:55:26,110 >> Que foi para a minha apresentação. Eu não sei se nós estamos sem tempo ou não. 796 00:55:26,110 --> 00:55:29,540 Eu não sei se há alguma dúvida. 797 00:55:29,540 --> 00:55:33,220 [Masculino] Uma pergunta rápida em torno da fragmentação e do mercado de Android. 798 00:55:33,220 --> 00:55:36,240 A Apple, pelo menos, é dono de correção. 799 00:55:36,240 --> 00:55:40,780 Eles fazem um bom trabalho de começá-lo lá fora, enquanto menos assim, no espaço Android. 800 00:55:40,780 --> 00:55:44,280 Você quase precisa desbloquear seu telefone para se manter atualizado 801 00:55:44,280 --> 00:55:46,660 com a versão atual do Android. 802 00:55:46,660 --> 00:55:50,960 Sim, isso é um problema enorme e por isso, se você pensar sobre- 803 00:55:50,960 --> 00:55:52,280 [Masculino] Por que você não pode repetir? 804 00:55:52,280 --> 00:55:55,610 >> Ah, certo, então a questão é o que acontece com a fragmentação 805 00:55:55,610 --> 00:56:00,410 do sistema operacional na plataforma Android? 806 00:56:00,410 --> 00:56:05,890 Como isso afeta o grau de risco desses dispositivos? 807 00:56:05,890 --> 00:56:09,700 E isso realmente é um problema enorme, porque o que acontece é 808 00:56:09,700 --> 00:56:15,110 os dispositivos mais antigos, quando alguém surge com um jailbreak para esse dispositivo, 809 00:56:15,110 --> 00:56:19,960 essencialmente isso é escalação de privilégios, e até que o sistema operacional é atualizado 810 00:56:19,960 --> 00:56:25,350 qualquer malware pode, então, usar essa vulnerabilidade para comprometer totalmente o dispositivo, 811 00:56:25,350 --> 00:56:30,200 e o que estamos vendo no Android é a fim de obter um novo sistema operacional 812 00:56:30,200 --> 00:56:34,690 Google tem de apagar o sistema operacional e, em seguida, o fabricante do hardware 813 00:56:34,690 --> 00:56:39,390 tem que personalizá-lo, e, em seguida, o transportador tem a personalizá-lo e entregá-lo. 814 00:56:39,390 --> 00:56:43,070 Você tem basicamente três partes móveis aqui, 815 00:56:43,070 --> 00:56:47,210 e está girando para fora para que os transportadores não me importo, 816 00:56:47,210 --> 00:56:50,400 e os fabricantes de hardware não se importam, e Google não está estimulando-as o suficiente 817 00:56:50,400 --> 00:56:54,430 para fazer qualquer coisa, por isso, essencialmente mais da metade dos dispositivos lá fora 818 00:56:54,430 --> 00:57:00,590 têm sistemas operacionais que têm essas vulnerabilidades de escalonamento de privilégios neles, 819 00:57:00,590 --> 00:57:08,440 e por isso, se você tem malware no seu dispositivo Android é muito mais de um problema. 820 00:57:08,440 --> 00:57:10,350 >> Ok, muito obrigado. 821 00:57:10,350 --> 00:57:12,310 [Aplausos] 822 00:57:12,310 --> 00:57:14,310 [CS50.TV]