sábado, 26 de dezembro de 2009

Conceitos de Segurança e Auditoria de Software

Ao realizar em 2009 os cursos de webcasting do ISACA (disponíveis em inglês em http://www.isaca.org/webcasts), algumas informações relacionadas à segurança no desenvolvimento de software me chamaram a atenção. Os cursos são de um nível excelente, propiciados pela maior autoridade mundial em Auditoria de Sistemas, Segurança da Informação e Governança de TI. Gostaria de compartilhar com os leitores do blog uma tendência cada vez mais quando o assunto é Segurança de TI: foco cada vez maior em Segurança de Aplicações (AppSec). Há algum tempo atrás a preocupação residia 100% nas estratégias de IAM (Identity and Access Management), SIM (Security Information Management) e TM (Threat Management), a exemplo de segurança física, redes, servidores, firewall, forensics, Single Sign-On, acesso, IDS, IPS, DNS, web server, browser e padrões como a ISO 27001 e Nist 800. Atualmente, a esta preocupação devem ser somadas as questões das vulnerabilidades internas dos bancos de dados, segurança do código de software desenvolvido, web application security e também novos padrões como OWASP, ISO 15408 e WASC. Percebe-se na figura abaixo que os ataques de sistemas na web estão ficando cada vez mais sofisticados e, se a aplicação não estiver preparada, o invasor consegue burlar a segurança e extrair dados confidenciais (senhas, contas, informações estratégias etc) da empresa por meio de código malicioso embutido em uma URL aceitável pelos mecanismos de proteção (firewall, DMZ, IDS etc.). Criptografia das requisições get e post, uso obrigatório de SSL, validação do lado do servidor são exemplos simples de boas práticas no desenvolvimento de aplicações que podem evitar este problema.



" Atualmente ameaças como SQL Injection, Flash Security, Clickjacking e outras devem estar na ordem do dia no desenvolvimento de software. "

Uma pesquisa realizada pelo ISACA detectou que 26% das páginas web estão em ASP, 22% em ASPx e 8% em JSP. A proporção não é a mesma em termos de vulnerabilidades detectadas: 25% para o código ASP, 9% para ASPx e 7% para JSP. As páginas desenvolvidas em ASP são antigas, utilizam na sua maioria o VBScript e o Javascript, sem maiores recursos de proteção avançada de segurança dos dados (ex. criptografia e proteção contra Injections Flaws). Outra questão fundamental abordada nos cursos é que o banco de dados é o repositório central de dados confidenciais e, como tal, deve ser altamente protegido. Pela pesquisa, 43% dos bancos de dados possuem dados confidenciais (como senhas, contas bancárias, código de cartões, informações pessoas etc.) e os ataques estão ficando cada vez mais sofisticados. Contas e senhas defaults, senhas de convidados (guess) de fácil acesso, ausências de patches, configurações fracas, privilégios excessivos de acesso. Detectar e eliminar estas vulnerabilidades deve ser uma preocupação constante do DBA (Administrador de Banco de Dados).

Melhores práticas de segurança em aplicações como o WASC e o OWASP já são utilizadas no mundo inteiro, mas não de forma suficiente. Há necessidade dos desenvolvedores de softwares serem cada vez mais capacitados nestas práticas. Na minha experiência acadêmica e também em empresas nacionais e multinacionais, detectei que os CSOs (Chief Security Officer) são, na sua maioria, originários da área de infraestrutura, o que dificulta a comunicação destes profissionais com a área de aplicações de uma forma plena. Estes profissionais têm um desafio agora de entender um pouco mais de desenvolvimento de software e dos diversos mecanismos de proteção que o desenvolvedor pode e deve utilizar para entregar um software seguro ao cliente.

Em resumo, o OWASP (http://www.wasp.org/) reúne recomendações para os chamados Top 10 de ameaças em segurança de aplicações na web, sendo elas: XSS, Injection Flaws (SQL, XML, LDAP etc.), Malicious File Execution, Insecure Direct Object Reference, Cross Site Request Forgery (CSRF), Information Leakage and Improper Error, Broken Authentication and Session Management, Insecure Cryptographic Storage, Insecure Communications e o Failure to Restrict URL Access. Também aborda o SAAM (Software Assurance Maturity Model), estruturado em quatro níveis de maturidade de segurança em aplicações. Finalmente, apresenta as melhores práticas em testes de segurança de software em todas as etapas do ciclo de vida do desenvolvimento. A propósito, foi realizado no Brasil em novembro (Brasilia) o primeiro congresso AppSec do capítulo Brasil do OWASP. Os slides do evento podem ser encontrados aqui: http://www.owasp.org/index.php/AppSec_Brasil_2009_(pt-br.

Quanto à Auditoria de Software, esta deve ser realizada em todas as etapas do ciclo de vida de desenvolvimento (SLDC) e também em qualquer forma de desenvolvimento (Agile, OOPS, Incremental, Prototipação, Cascata etc.). Listas de verificações são ferramentas altamente importantes para uma boa auditoria, além do uso das melhores práticas de Auditoria de Processos e de Systems Audit (CISA, SAAM, Cobit Assurance Guide, ISO 19011 e outras). Recomendo fortemente o livro “The Software Audit Guide” da ASQ – American Society for Quality (vide figura neste post). Bem, este foi apenas um briefing deste assunto tão complexo que é a AppSec. Espero ter apresentado alguns conceitos úteis para desenvolvimento de uma aplicação segura e confiável. Eis um bom assunto para realização de pesquisas pelos estudantes de computação e sistemas de informações interessados em Segurança da Informação e Auditoria de Sistemas e também para os CSOs.

Nenhum comentário:

Postar um comentário