terça-feira, 4 de novembro de 2014

E ai pessoal! Como muitos leitores estavam com dúvidas sobre como está o mundo da segurança da informação e para onde está indo, resolvi fazer esse texto explicando basicamente como está o mundo mobile. Separei o texto em duas partes e vou postar as duas hoje no decorrer do dia.

Para mais informações e discussões sobre o tema acesse o grupo do Facebook da Brutal Security.

1- Mídia


Atualmente as mídias especializadas estão focando em noticiar informações sobre novos ataques, malwares e vulnerabilidades sobre sistemas operacionais móveis. Com títulos como “Sistema Operacional iOS da Apple foi hackeado”, “Diversas novas ameaças para dispositivos móveis estão aparecendo”, entre outras, as notícias tendem a chamar a atenção por seus títulos um tanto quanto equivocados. Lendo os detalhes das notícias e fontes, quando não omitidas, mostram que boa parte desses ataques são provas de conceito de especialista da área e pesquisadores de segurança. Este estudo é sobre isso, não necessariamente todas as falhas encontradas são usadas para um ataque real.

Muito é noticiado de vazamento de informações, comprometimento de serviços e outras ameaças, mas ao contrário do que a mídia desinformada noticia estes ataques não tem origem em dispositivos móveis e nem foram direcionados aos mesmos. Todos os documentos, fotos e demais informações que vieram a público nos últimos meses tem pouca relação com dispositivos móveis.

2- Comparativo dos primeiros anos dos dispositivos móveis com os primeiros anos dos computadores pessoais


Na década de 80, quando os computadores pessoais começaram a se tornar mais acessíveis eles ainda eram apenas máquinas que podiam interpretar comandos e executar códigos escritos para auxiliar ou automatizar uma tarefa, não existia nenhum conceito de segurança desses equipamentos. Com isso falhas começaram a aparecer, e com a criação da internet e intercomunicação dos computadores iniciaram os ataques com fins maliciosos a essas máquinas indefesas que já carregavam uma grande quantidade de informação. Cerca de uma década depois que a segurança desses computadores e dessas informações começaram a ser levadas em consideração e medidas começaram a ser tomadas em relação a isso e a correção das falhas. Hoje em dia ainda temos diversas falhas de segurança em nossos computadores pessoais, mas nem comparado com as décadas anteriores, é um movimento natural os sistemas ficarem cada vez mais robustos e protegidos.

Já no caso dos sistemas operacionais para dispositivos móveis, foi usado todo esse conhecimento prévio da evolução e aperfeiçoamento dos sistemas operacionais dos computadores pessoais. Como os desenvolvedores já tinham conhecimento de boa parte dos erros críticos que os sistemas tinham, muitas falhas de segurança foram evitadas já no dia 1 de vida do sistema operacional para dispositivos móveis. Outras medidas foram tomadas para evitar que novas ameaças surjam nestes dispositivos.

2.1 - Impossibilidade de executar códigos de qualquer fonte


Nos anos iniciais dos dois sistemas principais do mercado, iOS da Apple e Android OS do Google, era impossível a execução de códigos que não fossem e fontes confiáveis da empresa desenvolvedora, ou seja, a empresa faria uma curadoria de tudo que pudesse chegar até o aparelho, o que impedia que códigos maliciosos fossem executados. Nos dias atuais a Apple ainda mantém essa mesma política, onde a única fonte de softwares e aplicativos é a própria loja da Apple. No caso do Google a empresa optou por um modelo mais aberto. Diversas lojas podem disponibilizar aplicativos para os aparelhos, sendo estes de responsabilidade da loja que os disponibiliza. Os dispositivos com sistema operacional Android vem por padrão com configurações para impedir a execução de aplicativos de fora das lojas, mas estas configurações podem ser desabilitadas pelo usuário facilmente no painel de configurações do aparelho, o que pode comprometer a segurança.

2.2 - Sandboxing


O sandboxing é outra medida de segurança implementada em todos os sistemas operacionais para dispositivos móveis. O sandboxing é um sistema de proteção, onde o aplicativo é executado em um compartimento isolado de todo o resto do sistema e não tem acesso a nada que não seja criado por ele. Os aplicativos podem acessar algumas áreas comuns do sistema, mas estas áreas não são acessadas diretamente pelo aplicativo, a requisição é entregue ao sistema operacional que age como intermediário. Outro ponto que deve ser destacado é que o aplicativo sempre deve solicitar e informar ao usuário que recurso que ele necessita antes da solicitação ao sistema operacional.

3 - Possíveis ameaças


Normalmente a entrada de ameaças nos sistemas operacionais móveis ocorre nos mesmos padrões dos sistemas operacionais dos computadores pessoais. O download direto do malware por parte do usuário ou o comprometimento do dispositivo por alguma falha de segurança do sistema previamente identificada.

3.1 - Download direto de malware


As lojas oficiais oferecem uma proteção contra esse tipo de ameaça. Todo o código que é submetido a loja passa por uma verificação em busca de falhas ou comportamento mal intencionado e caso seja encontrado é descartado automaticamente. Sistemas como o Android que permitem a execução de código de outras lojas ou fontes desconhecidas sofrem com esse tipo de ameaça. Nestes casos o ataque ocorre quando um usuário mal informado faz o download de um arquivo já infectado ou malicioso e executa em seu aparelho comprometendo todo o sistema e suas informações.
Não é uma função direta do sistema operacional detectar e impedir a execução de um código malicioso, mas todos os sistemas tem algoritmos básicos de análise para identificar se a aplicação a ser executada pode causar algum mal ao sistema. Para contornar esse problema, foram desenvolvidos diversas ferramentas para detectar e impedir que códigos maliciosos sejam executados nos dispositivos. Estes softwares são similares aos anti-virus e anti-malware encontrados nos computadores.

3.2 - Execução de código (exploit) devido a uma falha


Este tipo de ataque é muito comum em computadores pessoais, pelo fato de nenhum sistema ser perfeito e a prova de falhas, quando uma falha é descoberta, seja por um pesquisador de segurança ou um agente mal intencionado, são criados os chamados exploits, códigos maliciosos com o objetivo de usar a falha encontrada para tomar controle do dispositivo. Em sistemas operacionais para dispositivos móveis esse tipo de falha é raro, tanto pelo fato dos sistemas serem mais bem trabalhados do que os dos computadores convencionais, quanto a falta de recursos e acesso que um atacante tem em um dispositivo móvel.
Normalmente estas falhas não estão ligadas ao uso do dispositivo ou alguma ação do usuário, estas falhas são originadas por erros de programação dos desenvolvedores dos aplicativos ou do próprio sistema operacional.

4 - Diferença entre ataque a plataformas móveis e computadores


Por mais que os sistemas operacionais móveis sejam similares e derivados dos sistemas operacionais dos computadores, o nível de ataque é completamente diferente. Ataques direcionados a dispositivos móveis são muito difíceis e altamente complexos, por esse motivo que todas ou boa parte das falhas de segurança são encontradas pela própria empresa ou por pesquisadores de segurança, e não por partes mal intencionadas. No cenário móvel atualmente existem muito mais barreiras do que um computador comum. Para um ataque ser direcionado a um dispositivo móvel, indiferente do sistema operacional, o atacante tem de contornar todas as barreiras para comprometer o sistema, como por exemplo a barreira do sandboxing.

4.1 - Assinatura por partes confiáveis


Hoje me dia para um aplicativo ou software ser executado em um sistema operacional seu código tem de ser assinado digitalmente por uma ou mais partes confiáveis. Isso quer dizer, um atacante com intenção de executar um código malicioso precisa autenticar esse código perante um órgão autenticador. Esta proteção é válida mas facilmente contornada, mas demanda de conhecimento e tempo do atacante.

4.2 - Nenhum código sobrevive a um reboot


Os sistemas operacionais para dispositivos móveis foram construídos de tal forma que nenhuma aplicação pode se inicializar automaticamente após o sistema ser reiniciado, o que impede que os códigos maliciosos sejam executados novamente, sendo necessário que o usuário execute novamente a aplicação maliciosa. Modificações de sistema não autorizado como por exemplo o Jailbreak nos dispositivos Apple e os mods e customizações do Android (root) podem ignorar essa proteção.

4.3 - Funções conhecidamente problemática


Diversas funções e aplicações já conhecidas como altamente vulneráveis não estão disponíveis em sistemas para dispositivos móveis. Pode-se usar como exemplo o Java e o Flash, que constantemente tem atualizações e correções de falhas, e são hoje em dia as maiores ameaças e ponto de entrada de diversos malwares em computadores, normalmente através dos navegadores. Os navegadores dos dispositivos móveis por padrão não vem com suporte a essas ferramentas mas a desejo do usuário, navegadores com suporte estão disponíveis para intalação.

4.4 - Auto execução


Nenhum aplicativo, em nenhuma plataforma móvel, tem a permissão de auto execução. Todos os aplicativos instalados nos dispositivos necessitam da execução do usuário para poder rodar. Além disso o aplicativo necessita mostrar suas permissões e o usuário tem de aceitar.

Um comentário:

Subscribe to RSS Feed Follow me on Twitter!