Estatísticas mostram avidamente o quão vulneráveis ainda somos. Em plena era da Informação, cada vez encontramos mais e mais dispositivos e sistemas sofisticados tendo sua integridade violada. O porquê disso? Bem, existe uma série de fatores, porém o importante ponto desta questão não é o porquê, e sim o como. Seu sistema está preparado para uma “eventual” falha de segurança? Saiba o que é a Modelagem de ameaças e diminua o risco de seu sistema ser vítima desse infortúnio.

  • Introdução

Considere a seguinte questão. Um aparelho de som dentro de uma casa, um recurso, e o assaltante, o invasor.
A porta é um recurso da casa, e esta aberta, representa uma vulnerabilidade que o invasor pode explorar para obter acesso e roubar o aparelho de som. Ou seja, o invasor explora uma vulnerabilidade para obter acesso a um recurso. A medida necessária nesse caso, neste caso, seria trancar a porta. Considere este exemplo em um software. Não é uma tarefa fácil criar um software bom, e, a segurança torna isso cada vez mais difícil. As vulnerabilidades de um sistema podem, ou não, ser encontradas durante o uso comum de um sistema.

No entanto, as falhas encontradas nesse uso comum geralmente não são muito importantes. Porém em um contexto de segurança, essas falhas se tornam críticas, pois, o invasor pode induzir as mesmas, configurando condições altamente específicas que estas aconteçam. Um sistema impenetrável, em minha concepção, não existe. Porém podemos sim aumentar a segurança de nosso sistema aplicando técnicas como a Modelagem de Ameaças. Mas do que se trata exatamente? Bem, em termos técnicos é: “Descoberta de falhas de design de segurança.”. Neste artigo apresento a técnica STRIDE de modelagem de ameaças.

  • Modelagem de ameaças – Abordagem STRIDE

Há diversas abordagens para a modelagem de ameaças. Não há formas bem estabelecidas para medir a qualidade de um modelo de ameaças. A modelagem de ameaças é uma parte integrante do ciclo de vida do desenvolvimento da segurança. É uma revisão metódica do design ou arquitetura de um sistema para descobrir e corrigir problemas de segurança no nível de design, mas, na medida em que nós geralmente não conseguimos provar que um determinado design é seguro, aprendemos com nossos erros e evitamos repeti-los. Esta é a essência da modelagem de ameaças.

modelagem de ameaças é uma parte integrante do ciclo de vida do desenvolvimento

A abordagem STRIDE é uma boa técnica, mas não a única, para que a modelagem de ameaças possa abranger uma boa parte de sua aplicação. Uma forma de garantir que seus aplicativos tenham essas propriedades é aplicar a modelagem de ameaças usando STRIDE, um acrônimo de Spoofing (falsificação), Tampering (violação), Repudiation (repúdio), Information Disclosure (divulgação não autorizada de informação), Denial of Service (negação de serviço) e Elevation of Privilege (elevação de privilégio). Para cumprir o acrônimo STRIDE, faça a decomposição do sistema em componentes relevantes, analise cada componente para saber a suscetibilidade a ameaças e reduza as ameaças.

Repita o processo até se sentir mais seguro em relação a quaisquer ameaças. Se fizer isso – ou seja, decompuser o sistema em componentes e reduzir todas as ameaças de cada componente – poderá argumentar que o sistema é seguro.

A modelagem de ameaças do modelo STRIDE, compõe-se basicamente dos atributos mostrados na tabela STRIDE:

STRIDE

Spoofing (Falsificação)

Spoofing é um ataque que consiste em mascarar (fraudar) pacotes IP utilizando endereços de remetentes falsificados, ou seja, o atacante tenta passar-se por alguém que não é.

Tampering (Violação)

O atacante tenta interceptar os dados de uma aplicação através do canal de transmissão e modifica-los.

Repudiation (Repúdio)

O atacante consegue efetuar qualquer ação na aplicação sem que seja atribuído como autor das mesmas.

Information Disclosure (Divulgação não autorizada de informação)

Um atacante pode ler os dados privados que sua aplicação está transmitindo ou armazenando.

Denial of Service (Negação de serviço)

Um atacante consegue impossibilitar que os utilizadores legítimos de uma aplicação ou serviço tenham acesso aos mesmos.

Elevation of Privilege (Elevação de privilégio)

Um atacante tem possibilidade de ganhar privilégios elevados de acesso por meio não autorizado.

A figura abaixo mostra como pode ser aplicada a modelagem de ameaças STRIDE em um servidor de comércio. Será descrito abaixo quais as ameaças segundo o modelo.

Artigo_08_002

  • Administração do banco de dados: Tampering (violação dos dados de login por exemplo), Information Disclosure (divulgação não autorizada de usuários que possuem acesso ao banco) e Denial of Service (negação de serviço, “derrubando” o servidor da base de dados através de ataques DDoS). Para mitigar essas ameaças, use Logs de controle de acesso (ACLs), Camada de sockets protegida (SSL), Camada de transporte segura (TLS), e autenticação IPSec.
  • Rede insegura: Tampering (violação através da manipulação dos dados trafegados pela rede sem segurança), Information Disclosure (como se trata de uma rede insegura a informação privada pode ser vista com maior facilidade), Elevation of privilege (elevação de privilégios conseguido com a manipulação das informações conseguidas através das outras técnicas) e spoofing. É interessante notar que a maioria das vulnerabilidades podem ser, e geralmente são, encontradas neste contexto, por se tratar de uma rede insegura como aeroportos, locais públicos, faculdades, nas quais qualquer indivíduo possui acesso e geralmente não possuem um método de autenticação. Para mitigar essas ameaças podem ser usados os métodos de Camada de sockets segura (SSL), Camada de transporte segura (TLS) e IPSec.
  • Perfis de banco de dados: Spoofing, Tampering, Information Disclosure e Elevation of Privilege. Para mitigar essas ameaças podem ser usados os métodos de Logs de controle de acesso (ACLs), Hashes e funções criptográficas.
  • Server: Denial of service. Esse ataque é muito comum em servidores e muito utilizado. Para mitigar essa ameaça pode ser utilizada uma conta de baixo privilégio quanto ao acesso aos perfis de banco de dados e filtragem de pacotes quanto ao acesso de redes inseguras.
  • Clientes de acesso ao servidor: Tampering, Repudiation e Information Disclosure. Os métodos utilizados para mitigar essas ameaças podem ser assinaturas digitais, SSL, TLS, IPSec, ACLs e auditagem.

Vale ressaltar que essa técnica não deve ser a única empregada no contexto de segurança do seu software, devem ser aplicadas várias outras técnicas conjuntas, que irão assim, garantir uma maior confiabilidade deste. Criar um software seguro é uma tarefa árdua, a estratégia então, é dividir o problema em partes menores, para melhor investigação. Se você se esforça para criar um software seguro, recomendamos a modelagem de ameaças como uma parte fundamental do seu processo e, especificamente, o modelo STRIDE apresentado neste artigo.

Mas o ponto principal é encontrar um método adequado para suas necessidades, aplicá-lo desde o início em seu design, ter em mente que pode ocorrer falha em qualquer componente e fazer a pesquisa necessária para garantir que você tenha considerado padrões de ataques conhecidos. Por fim, o design é apenas uma parte da criação de um software seguro. Suporte executivo, implementação, teste, criação e fornecimento e prestação de serviços e manutenção desempenham funções fundamentais da segurança final de seus sistemas. Você tem todos os recursos para fazer tudo isso certo.

Autor: Paulo Cesar Soriano
Fonte

http://msdn.microsoft.com/en-us/library/ee810587(v=cs.20).aspx, http://leivancarvalho.me/2012/07/14/modelacao-de-ameaca-thread-modeling-parte-i/
http://msdn.microsoft.com/pt-br/magazine/cc163519.aspx