#use wml::debian::template title="Exemplo de auditoria automatizada: flawfinder" #use wml::debian::recent_list #use wml::debian::translation-check translation="be191e77facf8c0d489cfd320232517e5233a3e2"
O flawfinder é um escaneador de propósito geral para encontrar e reportar potenciais falhas tanto em código-fonte C quanto C++.
Executar o flawfinder é tão simples quanto invocar o comando com o nome de diretórios ou arquivos para examinar. Se dado um nome de diretório, ele processará todos os arquivos-fonte válidos que encontrar dentro daquele diretório.
Além de fornecer ao programa uma lista de arquivos ou diretórios, existem diversas opções de linha de comando que podem ser usadas para controlar o comportamento da ferramenta.
Cada uma das opções é explicada nas páginas man, mas as seguintes opções são particularmente úteis e serão usadas em nosso exemplo:
Para produzir um arquivo HTML contendo os resultados de nosso programa, somente se preocupando com funções de "alto risco", executaríamos algo assim:
flawfinder --html --context --minlevel=4 test.c > output.html
Executar o flawfinder contra nossa amostra de código produz a seguinte saída:
Examining test.c
strcpy( dir, argv[ 1 ] );
sprintf( dir, "%s", getenv( "HOME" ) );
fp = popen( cmd, "r" );
printf( buff );
Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)
Muito parecida com a saída do RATS, este relatório é muito simples de ler. Ele claramente mostra as funções que foram detectadas como potencialmente perigosas, como também uma descrição do problema.
A inclusão de informação contextual é muito útil também, já que ela pode imediatamente atrair a atenção para áreas de interesse, ou rejeitar outros relatórios como sendo inválidos.
A análise da nossa amostra de código é claramente inteligente, no sentido de que ela não avisou sobre toda utilização da problemática função strcpy - somente aquelas que considerou serem potencialmente perigosas.
Nesse sentido, ela conseguiu realçar todas as falhas do nosso código ao mesmo tempo em que não teve falso positivos.
Voltar para o projeto de auditoria | Voltar para a página de amostra de auditoria