sexta-feira, 28 de março de 2008

O Que Esperar Fortify Souce Code Analyzer?


No final de março, tive a oportunidade de fazer o curso de auditor de código fonte com o Fortify Source Code Analyzer oferecido pela própria Fortify. O curso foi realizado em Denver no Colorado. A cidade, além de ser muito charmosa, fica bem próximo de Aspen. Foi uma pena não ter tido mais tempo para aproveitar esse outro lado.

Voltando ao curso em si, a turma era formada por oito pessoas. Todos inexperientes com a ferramenta. A maioria com experiência em desenvolvimento e em segurança no geral. Vale ressaltar que a Systest foi a empresa com mais participantes, quatro pessoas. O curso foi ministrado por Su Gaustad, cujo conhecimento acerca de desenvolvimento seguro e do uso do Fortify SCA impressiona, sua habilidade para lidar com o público também.

O Fortify SCA é um analisador estático de código fonte, cuja inteligência se resume nas regras desenvolvidas pela Fortify para encontrar furos de codificação, distribuídas dentre as seguintes abordagens de análise:
  • Estrutural - Detecta uso de funções e APIs potencialmente perigosas.
  • Semântica - Detecta furos potencialmente danosos na estrutura ou definição do programa. Por exemplo, uma atribuição de variáveis em Servlets, uso de loggers que não são declarados como static final.
  • Fluxo de Controle - Detecta sequência de operações potencialmente perigosas. Isso remete à visualização análise de sequência de execução das operações, para verificar se alguma delas a aplicação é exposta a vulnerabilidades. Ex. Abrir uma conexão com banco de dados e não fechá-la, pode expor a aplicação à uma sobrecarga por não alocação de recursos.
  • Fluxo de Dados - Detecta potenciais vulnerabilidades relacionadas a dados de entrada em processamento no software. Isso pressupõe uma análise inter-procedural, o que significa que suas regras são capazes reconhecem falhas de um dado recebido por um método, que é passado para outro método e lá sim, que ele oferece risco de se tornar uma vulnerabilidade explorável. Ex. Parâmetro de nome de arquivo recebido por um método é passado como parâmetro para outro método, que faz uso de strcopy para copiar o conteúdo de tal parâmetro para um buffer.
  • Configuração - Localiza erros, pontos frágeis e violação de políticas nos arquivos de implantação da aplicação. Por exemplo, a connectionstring com parâmetros de usuário e senha no Web.Config em aplicações ASP.NET.
  • Agrega a análise do FindBugs.
Seu processo de análise é organizado em três fases complementares:
  • Tradução - onde o código fonte é recolhido segundo uma série de comandos e traduzido em um formato intermediário, que é associado à um BuildID (identificador do projeto em análise).
  • Análise - compreende a busca por vulnerabilidades e análise de acordo com as regras descritas anteriormente.
  • Verificação - garantia de que a análise foi realizada de acordo com as regras e seu resultado informa erros significativos.
Suporta as linguagens comercialmente mais utilizadas (Java, .NET, PHP, ColdFusion, JavaScript, PL-SQL), integra-se com as principais IDEs (Eclipse, Visual Studio 2003/05), como foi desenvolvido em Java, funciona em toda plataforma que suporte a JVM. É facilmente integrada com o ANT também.

Suas regras de análise (rulepack) são propriedade intelectual da Fortify e estão debaixo de forte critptografia. Seu acesso é dependente da manutenção da assinatura anual pelo seu uso. O que significa que, além da licença, é necessária a assinatura para usar o rulepack. Apesar de altamente não recomendado, a ferramenta permite ainda que sejam elaboradas regras próprias para as análises. Prepare-se pois a tarefa é de alta complexidade. Daí a razão da Fortify se disponibilizar a customizá-las, tão logo a necessidade seja indentificada pelos seus clientes, e devolver no rulepack.

Pela consistência dos resultados apresentados pelas análises (falso positivo/negativo) usando o SCA ao longo do curso, pela forma didática como ela os apresenta, bem como as facilidades proporcionadas para o auditor, percebo que essa ferramenta tem espaço garantido quando se tratar de ciclo de desenvolvimento seguro. Infelizmente, não conheço os detalhes do principal concorrente Ounce 5, para poder compará-las e desconheço também qualquer detalhe sobre os custos associados à sua arquisição/manuteção (pergunte à LeadComm), mas tenho a impressão que seu mercado é bem restrito.

Um comentário:

Marcos Urata disse...

Muito bom esse blog fabricio