[Atualizado em 2011-08-21, com referências do OWASP.]

Depois do incidente de segurança envolvendo o portal da operadora Vivo que abordei ontem, um artigo de hoje da IT Web tem tudo a ver: 5 lições de segurança, por Greg Shipley, Tyler Allison e Tom Wabiszczewicz, da empresa Neohapsis especializada em GRC (GRC em inglês), para InformationWeek EUA, 10/09/2009.

No artigo, os especialistas quebram o silêncio típico do mundo corporativo sobre segurança e trazem uma síntese de sua experiência em observação direta das brechas de segurança do mundo real onde realizaram investigações forenses, para ajudar as empresas a entender como essas brechas acontecem e o que se pode fazer sobre elas.

Eles ressaltam: “Após centenas de casos, podemos afirmar, sem sombra de dúvidas, que os ataques estão mais sofisticados do que nunca. Com agilidade, eles exploram controles de segurança falhos e práticas operacionais negligentes e, munidos com ferramentas comuns para gerenciamento de rede, adaptam malwares. Táticas e tecnologias de segurança da informação também progrediram, mas não no mesmo ritmo.”

O mais admirável é que os recursos para mitigar as brechas de segurança são métodos razoáveis e bem conhecidos. O que é preciso é um esforço para que esses métodos sejam implementados e continuamente praticados de forma mais ampla e efetiva pelas corporações.

Problema – vulnerabilidades e ameaças nas aplicações

O Website de uma empresa geralmente serve como porta de entrada para os ataques. Aplicativos web são a porta preferida dos invasores.

Isso porque equipes de TI em geral investem apenas em segurança do perímetro e do tráfego da rede, incluindo proteções clássicas como firewall, antivírus, antispam, IDS/IPS, SSH, HTTPS e VPN. E mesmo nestes casos, não fazem um monitoramento proativo e contínuo, nem tem um plano de resposta a incidentes consistente e efetivo. Por outro lado, mantém sistemas desatualizados e ignoram aplicativos falhos que podem, facilmente, ser explorados.

Códigos de software com pouca ou nenhuma preocupação com segurança desde sua concepção — o que passa inclusive pela escolha de tecnologias que já englobem conceitos e mecanismos nativos de segurança, robustez e proteção — escancaram brechas de segurança por todos os pontos das aplicações.

Nas aplicações corporativas internas, as maiores preocupações costumam ser com vazamento de informações e com uso e permissões indevidos — até mesmo maliciosos, no caso de colaboradores insatisfeitos ou despreparados, negligentes, imprudentes.

Mas quando as aplicações são externas, especialmente em portais, sítios e serviços web abertos à Internet, o universo de ameaças subitamente se expande para o mundo todo, para qualquer pessoa no planeta com acesso internet, algum tempo disponível e intenções que podem ir da curiosidade inconsequente ao crime.

Aplicações sem segurança tipicamente expõem vulnerabilidades amplamente conhecidas — do conhecimento de qualquer hacker de plantão — e graves como:

  • Autenticação vulnerável, com usuários e senhas fracas, pouco ou nenhum controle a tentativas de acesso “força bruta” etc.
  • Baixa granularidade de permissões, de forma que um vez acessado com usuário legítimo muitas vezes se permite acessar alguns serviços ou situações que não seriam efetivamente necessárias ou mesmo devidos àquele usuário.
  • Ausência de validação, consistência e crítica de dados no lado servidor, quando um usuário está com JavaScript desativado ou defeituoso no lado cliente.
  • Ausência de validação de condições limite nos tipos, formatos, valores e tamanhos recebidos em dados ou parâmetros fornecidos pelo usuário, permitindo ataques como Estouro de buffer e de pilha, Corrupção de memória, Negação de serviço (DoS).
  • Ausência ou insuficiência de tratamento robusto, inteligente e proativo de exceções na aplicação. Muitas vezes a maior parte das inúmeras situações de erro ou exceção possíveis são esquecidas, descartadas ou subestimadas pelos programadores.
  • Ausência de mecanismos de rastreabilidade e auditoria, como gravação de registros de log/históricos de acessos e ações do usuário e do próprio sistema.
  • Mecanismos de proteção (integridade e privacidade) de dados com criptografia ausentes, simplórios/precários, ou mal implementados.
  • Não evitar Injeção de código, Injeção de SQL, Injeção de HTML e Cross site scripting (XSS) nas entradas de dados e parâmetros fornecidos pelo cliente/usuário.
  • Utilizar ou permitir a Inclusão de arquivos locais (ou remotos).

A lista de possibilidades comuns poderia se estender. Mas por aí já se percebe que boa parte das aplicações na web são “queijos suíços” em potencial, em se tratando de abundância de furos de segurança.

Solução – informação e ferramentas desde o início

Ao abordarem que se deve levar segurança de TI a sério, os peritos apontam o caminho: “A melhor defesa de uma empresa é a integração da segurança no ciclo de vida de desenvolvimento de aplicativos. A criação de códigos com poucas falhas de segurança oferece um retorno maior do que se tentar reparar aplicativos em uso.”

A organização internacional Web Application Security Consortium (WASC) reúne um grupo de especialistas e praticantes de segurança e representantes de comunidades de código aberto, voltada para intercâmbio de idéias e organização e promoção de melhores práticas, em segurança de aplicação na World Wide Web. WASC consistentemente lança informação técnica, artigos, guidelines de segurança e outras documentações úteis sobre segurança de aplicações web.

Entre o material da WASC, destaco uma compilação com descrição de mais de 50 ameaças e vulnerabilidades em aplicações web, o Glossário de Segurança Web e o padrão de referência para avaliação de vulnerabilidades de aplicações web, Web Application Security Scanner Evaluation Criteria (WASSEC). O material é aberto, público e gratuito (em inglês).

Outra entidade dedicada a promover a melhoria da segurança em aplicações de software é a comunidade internacional Open Web Application Security Project (OWASP). Todas as ferramentas, documentação, fóruns e capítulos criados e mantidos pelo OWASP são livres, abertos e isentos.

Entre os projetos e material de referência mantidos pelo OWASP, destacam-se: Enterprise Security API (ESAPI), Development Guide, Ruby on Rails Security Guide, Secure Coding Practices – Quick Reference Guide, Application Security Verification Standard (ASVS), Code Review Guide, Testing Guide, OWASP Top Ten, AppSec FAQ Project, How To’s and Cheat Sheets, Software Assurance Maturity Model (SAMM), Comprehensive, Lightweight Application Security Process (CLASP).

Para a varredura e análise de vulnerabilidades em aplicações existem ferramentas para auxiliar e prover alguma automação e agilidade nos trabalhos. Há desde softwares livres como o Wapiti – Web application vulnerability scanner / security auditor e o OWASP Zed Attack Proxy, até produtos comerciais como IBM Rational AppScan e HP WebInspect / Application Security (veja também Web Application Scanners Comparison).

Também o padrão internacional ISO/IEC 15408: Information technology — Security techniques — Evaluation criteria for IT security é um conjunto de normas disponíveis gratuitamente.

O padrão ISO 15408 é baseado no Common Criteria for Information Technology Security Evaluation / Critérios Comuns para Avaliação de Segurança de Tecnologia da Informação (abreviado como Common Criteria ou CC). Este, por sua vez, é originado dos padrões para critérios de avaliação de segurança do Departamento de Defesa dos Estados Unidos (TSEC), Canadá (CTCSEC) e Europa (ITSEC, França, Alemanha, Países Baixos e Reino Unido).

CC é um framework padronizado de critérios para especificação, implementação e avaliação de requisitos e propriedades de segurança em sistemas de informação e produtos de TI. O rigor da avaliação é medido em sete níveis, Evaluation Assurance Level, EAL1 a EAL7. Cada EAL consiste em um pacote ou conjunto de requisitos de segurança, denominados Security Assurance Requirements (SARs).

Até eu dou modestas contribuições de informação sobre boas práticas que podem garantir um código de aplicação mais segura, nos artigos: Eficiência e segurança com SQL parametrizado e Senhas armazenadas com segurança.

Não faltam informação e recursos livremente disponíveis, em abundância e muitas delas de alta qualidade e fácil utilização, para que as empresas e instituições comecem a praticar e adotar a construção de aplicações seguras.

Essa preocupação é especialmente crítica na web, que cada vez mais se apresenta como um veículo de serviços e aplicações em larga escala e abrangência.

Empresas do meu Brasil (e do mundo!), cuidem seriamente da segurança de suas aplicações e serviços, especialmente na internet!

Para saber mais:

  • Referências sobre Segurança Digital e Privacidade, incluindo Informação sobre segurança, Entidades e centros, Criptografia, Infraestrutura de chaves públicas (ICP), Malware, Segurança de e-mail, Firewall, Prevenção e detecção de intrusos, Padrões, Protocolos e aplicações, Privacidade, Bibliografia e outros tópicos relacionados.