• Nenhum resultado encontrado

melhor definem segurança em termos de desenvolvimento de software é aquela baseada em qualidade: aquele que consegue cobrir todas as necessidades para o qual foi criado é con- siderado de alta qualidade. De maneira similar, um software que também executa todas as funcionalidades esperadas sob ataque ou em um ambiente hostil é considerado seguro.

Essa definição já traz alguns dos principais conceitos de software seguro: i) os desen- volvedores de sistemas precisam entender o ambiente hostil no qual o software será implan- tado para saber como criar mecanismos de defesa e ii) o sistema precisa ser devidamente testado em um ambiente com as mesmas condições do ambiente hostil esperado.

9.1.2

Um Processo de Desenvolvimento Adaptado

Existem alguns modelos diferentes para o desenvolvimento de software seguro. Um dos mais bem documentados é o SDL (Secure Development Lifecycle) da Microsoft [42]. O número de passos a serem adicionados no ciclo de desenvolvimento varia bastante. Entretanto, ao se comparar as várias metodologias de desenvolvimento de software seguro em empresas, três fases parecem ser comuns em toda a indústria: análise de ameaças, implementação de modelos de segurança e teste de segurança. Desses passos, a análise de ameaças e o teste de segurança serão discutidos do ponto de vista do dispositivo embarcado. A implementação de modelos de segurança é também importante, porém é melhor apresentada em outras fontes da literatura, tais como [34; 42; 89].

9.2

Análise de Ameaça

9.2.1

Análise de Ameaça como Base de Software Seguro

Ataque e defesa de informações são exercícios constantes no desenvolvimento de software seguro. A fonte do ataque pode escolher qual o alvo, enquanto o sistema de defesa deve se defender de todos os demais ataques. Além disso, nem sempre a segurança é levada em consideração pelos usuários: algumas tarefas, como informação de senha e login, são realizadas sem nenhuma preocupação. Como conseqüência desses fatos, um sistema que não foi concebido seguindo certos quesitos de segurança está bastante funerável a ataques a partir de várias fontes. Para tornar o sistema mais seguro, é necessário realizar um tratamento

9.2 Análise de Ameaça 107

de ameaças, o qual é a base para qualquer trabalho que envolva engenharia de segurança. A análise de ameaças possui dois objetivos principais: i) determinar o nível de segurança através da identificação do maior número possível de aspectos do sistema e mecanismos de defesa e ii) levar os participantes a pensarem como um invasor, a partir da maneira como a análise de ameaça é conduzida.

9.2.2

Como Conduzir Análise de Ameaças

Há diversas maneiras de realizar análise de ameaças. Uma das mais formais é mapear todo o fluxo de dados de uma aplicação usando diagramas arquiteturais que descrevem todas as interfaces e componentes. Essa tarefa se torna mais simples quando a arquitetura é bem pro- jetada e também quando o design é baseado em observações realizadas em ataques anteriores que foram causados pela falta de um tratamento adequado às entradas lidas pela aplicação. Através do acompanhamento da passagem dos dados através dos vários componentes da aplicação (utilizando o diagrama citado anteriormente), pontos passíveis de ataques podem ser identificados.

Entretanto, esse tipo de análise de fluxo de dados não deve ser utilizada quando um sistema é atacado por outros meios além de entradas maliciosas, por exemplo, sujeitando a aplicação a executar em um ambiente diferente daquele na qual ela foi criada para ser executada. É possível utilizar outros métodos mais tradicionais como obter vários cenários de execução nos quais pode haver um ataque ao sistema, ou seja, um brainstorming para definir quais os possíveis ataques.

Brainstorming também é um bom método para induzir o pensamento de invasores da equipe de desenvolvimento. A partir de várias perguntas “mas e se...”, é possível determinar diversas maneiras (muitas já conhecidas, outras totalmente não consideradas anteriormente) de como atacar o sistema em análise. Para um profissional experiente na área de segurança de sistemas, é possível mapear todos os possíveis cenários de ataques. Porém, para a maioria dos profissionais leigos no assunto, o suporte em grupo tem apresentado bons resultados em relação à qualidade da análise de ameaças.

9.2 Análise de Ameaça 108

Cenário de Tratamento de Ameaças em Código Open Source

Acredita-se que grande parte dos desenvolvedores de projetos open source se preocupam com a segurança da aplicação. Contudo, do ponto de vista do software proprietário ou fechado, é importante a discussão de ameaças específicas em potencial que o desenvolvi- mento de projetos open source pode trazer. Deve-se observar que tais problemas não são ameaças de segurança de fato, mas em muitos casos, modificam a maneira como questões de segurança são implementadas.

Primeiramente, algumas licença open source definem que quaisquer mudanças realizadas no código fonte devem ser disponibilizadas com a mesma licença. Ao considerar correções de segurança, muitas modificações tornam públicas. Dessa forma, é muito fácil comparar as correções realizadas com a versão mais antiga e determinar qual o problema de segurança. Ao utilizar o código open source, questões de segurança estarão automaticamente expostas nas próximas versões do código fonte.

Em segundo lugar, muitos projetos open source não são levados a sério pelos próprios de- senvolvedores. Dessa forma, em muitos deles ainda carecem de qualidade e segurança. Além disso, muitas correções de segurança deveriam ser implemenadas, porém outras mudanças são priorizadas no ciclo de manutenção no software open source. Assim, se um determinado software depende de serviços específicos a nível de segurança que precisam se corrigidos, dependendo do projeto open source, é necessário que o próprio desenvolvedor esteja pronto para realizar essas mudanças no projeto. Tal cenário também é considerado por licenas¸ open source, as quais geralmente lançam o código sem nenhum tipo de garantia.

Por último, o código aberto facilita a busca por partes vulneráveis no software. Em um código fechado, a busca por falhas de segurança é baseada em tentativa e erro, enquanto que em softwares open source, problemas de segurança estão bastante claros. Tais fatos não tor- nam projetos open source inseguros, mas exigem um tratamento diferenciado. Projetos open sourcetambém trazem benefícios em relação à segurança: ao se tornarem bastante utilizado, as chances de profissionais de segurançã explorarem o código e realizarem correções tendem a aumentar. Além disso, o código disponível permite que o próprio desenvolvedor realize as correções de segurança e liberá-las junto com o projeto em desenvolvimento, sem ter que esperar pelas próximas mudanças.

9.2 Análise de Ameaça 109

Segurança em Dispositivos Móveis

Conforme discutido anteriormente, dispositivos móveis diferem de computadores desktop e servidores. Embora essa diferença seja mencionada várias vezes e muitas considerações não sejam mais verdade daqui a alguns anos (principalmente problemas relacionados à limitação de recursos), certos fatores que diferem os dispositivos móveis dos não-móveis continuarão por muito tempo, e devem ser considerados ao se pensar em ameaças à segurança. Três categorias de ameaças relativas a mobilidade serão brevemente discutidas:

• Ameaças relativas aos portadores de dados móveis; • Ameaças relativas a sistemas limitados;

• Ameaças relativas a natureza “pessoal” do dispositivo.

O canal de comunicação de um dispositivo móvel é muito menor do que o de um servidor ou um computador desktop. Mesmo com o surgimento de redes 3G HSPA, WiMAX e Wi-Fi que prometem taxas de trasmissão de vários megabits por segundo, não há nenhuma garantia que alcancem esse velocidade. Em áreas que não são cobertas por tecnologias de transmissão rápida, as taxas de transmissão bem baixas (próximas às velocidades de modems). Do ponto de vista do invasor, canais com banda pequena são mais fáceis de serem congestionadas usando um ataque de negação de serviço (denial of service).

Outro aspecto relacionado com os canais de comunicação é o modelo de tarifação. Muitos dispositivos móveis isolam a aplicação em execução a partir de dados específicos do portador. A transferência de dados pode ocorrer através de uma rede Wi-Fi ou do celular (Bluetooth) e o portador pode até mesmo se modificado durante uma determinada operação (por exemplo, requisições HTTP subseqüentes podem ser transferidas através de vários por- tadores). Portanto, a aplicação não pode determinar se o portador que está sendo utilizado transmite a uma taxa fixa ou variada. A tarifação varia bastante entre operadoras (quantidade de pacotes, quantidade de dados, etc.). O fato da aplicação ser atacada e levada a gerar muito tráfego de rede trás um impacto bastante negativo na conta do usuário e também em sua satisfação.

O fato do portador poder ser modificado de maneira dinâmica trás alguns desafios aos serviços de rede que estão sendo utilizados. Conexões com celulares e mensagens de texto

9.2 Análise de Ameaça 110

são consideradas seguras por utilizarem redes fechadas que são tratadas pelas operadoras. Entretanto, um portador pode modificar de repente e acessar uma rede Wi-Fi aberta, onde todos os pacotes podem ser acessados assim como portas que estão esperando por dados de entrada. A conexão segura deve ser devidamente concebida com um mínimo de segurança em mente.

A segunda maior diferença em relação aos dispositivos móveis é a fonte de energia. His- toricamente, a tecnologia de bateria se desenvolveu mais lentamente do que outros elemen- tos de dispositivos móveis (memória, processamento). Gerência de energia para dispositivos móveis é uma área complexa, e um programa de comportamento problemático pode gerar consumo desnecessário da bateria. Embora não seja considerado diretamente uma questão de segurança, deve-se considerar que uma bateria pode causar um erro de negaçao de serviço a todo o sistema.

Essa categoria de desafios relacionados à mobilidade também se aplicam a outros re- cursos além de energia. Processadores de dispositivos móveis geralmente executam em ve- locidades menores, possuem uma memória menor, menor capacidade de armazenamento e tela menor do que máquinas desktop ou servidores. Um ataque contra qualquer um desses recursos limitados pode também causar um erro de negaçao de serviço.

A terceira categoria está relacionada com o fato de dispositivos móveis serem de uso pessoal. Por estarem na mesmo localização geográfica do usuário, é possível realiza um ataque de software para identificar o paradeiro do usuário de forma exata. Além disso, os usuários guardam muitos dados pessoais no dispositivo, tais como lista de contados, agenda, notas pessoais, fotos, e-mails e mensagens de texto, por exemplo. O vazamento dessas informações constituem um problema de privacidade e a remoção desses dados pode causar descontentamento do usuário.

Essa característica pessoal dos dispositivos móveis é destacada pelo fato que um iden- tificador único e estático é utilizado. Um dispositivo móvel geralmente possui um ou mais endereços MAC (para WLAN, Bluetooth e WiMAX), um IMEI (número serial do dispositivo GSM/3G) e um IMSI (identificador de inscrição GSM/3G). Todos esses identificadores são únicos e estáticos, possibilitando a identificação do usuário e dando informações suficientes para ataques. O software deve se preocupar com questões relativas à privacidade do usuário e restringir o uso de tais identificadores.

Documentos relacionados