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.
- 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