A7 Insecure Cryptographic Storage

Artigo sobre a vulnerabilidade Armazenamento Criptográfico Inseguro, sétimo item da lista TOP 10 da WOASP

Quando dados sensíveis não são cifrados. Quando a criptografia é usada de forma incorreta, seja pela má configuração ou pela escolha de algoritmo fraco. Quando o armazenamento das chaves é feito de forma imprudente. Quando, para proteger senhas, é utilizado um hash sem o salt. Todos esses fatores ou uma combinação deles tornam a aplicação vulnerável à Armazenamento Criptográfico Inseguro. Importante notar que esta vulnerabilidade relaciona-se mais com questões de planejamento, infraestrutura e configurações de servidores do que com a linguagem de programação em si.

A exploração desta vulnerabilidade é considerada difícil não pelo fato de que a quebra da criptografia seja custosa e complicada (quando humanamente possível) mas sim pelo fato de que atacantes externos terem acesso limitado, normalmente eles tentam outras alternativas primeiro. É preciso observar também que dificilmente a criptografia é atacada, os atacantes quebram outros elementos tais como encontrar as chaves geradoras, obter cópias em claro de dados e acessar dados através de canais que decifram automaticamente. A tabela abaixo sintetiza a classificação do risco.

Mapeamento de risco Armazenamento Criptográfico Inseguro

Exemplo de aplicação vulnerável

Uma aplicação cifra dados dos cartões de créditos numa base de dados para prevenir que os mesmos sejam expostos ao utilizadores finais. No entanto, a base de dados está configurada para automaticamente decifrar consultas nas colunas de cartões de crédito, permitindo que uma falha de injeção por SQL possa listar todos os cartões de crédito em claro. O sistema deveria ter sido configurado para permitir que apenas aplicações de back-end pudessem decifrar esses dados e não as aplicações web de front-end.

Prevenção

Todos os perigos do uso inseguro da criptografia estão além do âmbito do escopo deste trabalho e, portanto, a prevenção se fará parcialmente, através do uso correto das funções de encriptação do PHP e com as recomendações mínimas do OWASP Top 10 (2010):

A função hash do código abaixo utiliza dois parâmetros. O primeiro escolhe o algoritmo utilizado para gerar o hash e o segundo é o valor utilizado para gerar o hash.

<?php

echo hash('sha256', 'senha');

?> 

Se executarmos o código seguinte ele gerará um array contendo todos os algorítimos que podem ser utilizados como parâmetro na função hash();

<?php

print_r( hash_algos() );

?>

A seguinte seguinte ilustra todos os algorítimos que podem ser usados juntos com a função hash(). A funcção hash_algos() não lsita todos os algoritmos possíveis, mas sim todos os a os algoritmos que foram compilados e instalados.

Comentários

comments powered by Disqus