A8 Armazenamento Inseguro
Origem: OWASP Chapter Brasil, a enciclopédia livre.
Conteúdo |
A8.1 Descrição
A maioria das aplicações web necessitam armazenar informações, seja em banco de dados ou no sistema de arquivos propriamente dito. Estas informações podem ser senhas, cadastro de clientes ou números de cartões de crédito. Freqüentemente técnicas de criptografia são utilizadas para proteger estas informações. Enquanto as rotinas e processos de criptografia tem se tornado relativamente fácil de se implementar e utilizar, continuam freqüentes as falhas quando tais técnicas são inseridas em aplicações web. Os desenvolvedores acabam por superestimar a proteção obtida pelo uso de criptografia e por conta disso não acabam sendo tão criteriosos quanto a outros aspectos.
Alguns pontos onde é comum encontrarmos falhas:
- Falha no processo de cifrar dados críticos
- Armazenamento inseguro de chaves criptográficas, certificados e senhas
- Armazenamento de credenciais, chaves criptográficas e senhas na memória
- Fontes de aleatoriedade de baixa entropia
- Algoritmo de criptografia fraco
- Tentativa de inventar um novo algoritmo de criptografia
- Falha no processo de troca de chaves a e outros processos de manutenção do sistema de criptografia.
O impacto destas falhas pode ser devastador para a segurança de um website. Criptografia normalmente é utilizada para proteger os dados mais sigilosos de um site, que pode ter o processo de criptografia destes dados totalmente comprometido por uma falha.
A8.2 Ambientes afetados
A maioria dos ambientes (sistemas operacionais e servidores web) que suportam aplicações web possuem algum suporte a criptografia.
Em casos raros onde não existe este suporte, existe uma grande variedade de produtos de terceiros que podem ser utilizados. Apenas web sites que possuem e utilizam criptografia para proteger informações (armazenadas ou em transito) estão suscetíveis a estes ataques. Note que este capitulo não cobre o uso de SSL, que será coberto em A10 Insecure Configuration Management. Este capitulo trata apenas de criptografia de dados na camada de aplicação.
A8.3 Exemplos e referências
- OWASP Guide to Building Secure Web Applications and Web Services http://www.owasp.org/documentation/guide/
- Bruce Schneier, “Applied Cryptography”, 2nd edition, John Wiley & Sons, 1995
A8.4 Como determinar se você está vulnerável
Descobrir falhas de criptografia sem acesso ao código fonte da aplicação pode ser um processo extremamente demorado e custoso, entretanto é possível examinar tokens, session IDs, cookies e outros tipos de credenciais para ver se estes são pouco randômicos ou de fácil dedução. Todas as abordagens tradicionais de cryptoanalise podem ser utilizadas para se tentar descobrir como um web site implementou suas rotinas criptográficas.
De longe a abordagem mais simples e objetiva é fazer a revisão do código fonte da aplicação para ver, de fato, como as rotinas criptográficas estão implementadas.
Uma revisão cuidadosa da estrutura, qualidade e implementação dos módulos de criptografia deve ser executada. O revisor responsável por esta atividade deve possuir um forte conhecimento no uso de criptografia, conhecer os erros comuns e possíveis falhas existentes. Esta revisão deve cobrir também como as chaves, senhas e outras credenciais são armazenadas, protegidas, processadas, carregadas e excluídas da memória.
A8.5 Como se proteger
A forma mais simples de se proteger contra falhas de criptografia é minimizar o seu uso e manter apenas as informações que são absolutamente necessárias. Por exemplo, ao invés de armazenar números de cartão de créditos criptografados, simplesmente exija que os clientes insiram novamente os números. Além disso, ao invés de armazenar senhas criptografadas, use algum algoritmo irreversível de hash, como por exemplo o SHA-1, para cifrar as senhas.