O FindBugs e uma ferramenta de revisao estatica de codigo fonte que analisa codigo Java. A efetividade de uma ferramenta de analise estatica e consequencia principalmente do conjunto de regras ou assinaturas que ela possui. Para o caso do Findbugs, existem duas categorias de regras que merecem maior atencao da seguranca. Sao elas : malicious code e security. As regras que estes dois conjuntos englobam podem ser observadas na tabela a seguir: Categoria Regra MALICIOUS CODE DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED MALICIOUS CODE DP_DO_INSIDE_DO_PRIVILEGED MALICIOUS CODE EI_EXPOSE_REP MALICIOUS CODE EI_EXPOSE_REP2 MALICIOUS CODE FI_PUBLIC_SHOULD_BE_PROTECTED MALICIOUS CODE EI_EXPOSE_STATIC_REP2 MALICIOUS CODE MS_CANNOT_BE_FINAL MALICIOUS CODE MS_EXPOSE_REP MALICIOUS CODE MS_FINAL_PKGPROTECT MALICIOUS CODE MS_MUTABLE_ARRAY MALICIOUS CODE MS_MUTABLE_HASHTABLE MALICIOUS CODE MS_OOI_PKGPROTECT SECURITY DMI_CONSTANT_DB_PASSWORD SECURITY DMI_EMPTY_DB_PASSWORD SECURITY HRS_REQUEST_PARAMETER_TO_COOKIE SECURITY HRS_REQUEST_PARAMETER_TO_HTTP_HEADER SECURITY SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE SECURITY XSS_REQUEST_PARAMETER_TO_JSP_WRITER SECURITY XSS_REQUEST_PARAMETER_TO_SEND_ERROR SECURITY XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER O baixo numero de regras, nem a limitacao para avaliacao de outras linguagens, como JSP ou o framework JSF, nao sao justificativas para descartar o uso dessa ferramenta, uma vez que a sua varredura pode revelar alguns dos riscos de seguranca mais criticos como, por exemplo, SQLInjection e XSS. Outro ponto forte do Findbugs e a sua gratuidade. A execucao de varredura pelo Findbugs e tao simples, quanto o entendimento de seus parametros de linha de comando. Segue o exemplo de comando:<caminho maquina para o findbugs>/findbugs/lib/findbugs.jar -textui -effort:max -sortByClass -low -html -output <caminho destino do relatorio>/findbugs.html <caminho onde se encontra jar>/teste.jarOs detalhes sobre os parametros podem ser observados aqui.Entretanto, na maioria dos casos, existe a necessidade de revisar o resultado da varredura, eliminando os falsos positivo. Alem disso, e desejavel que se tenha um historico do bugs revelados e de suas correcoes. Esses recursos nao sao nativos do Findbugs. Uma das alternativas, alem de escrever seu proprio aplicativo bugtracker e o uso do Sonar. O Sonar e uma plataforma para gestao de qualidade de codigo que ja possui instalada em sua versao de instalacao o plugin do Findbugs. Por ela, e possivel gerenciar dentre diversos bugs, aqueles revelados pelo Findbugs. Como a documentacao do Sonar e muito completa, registro alguns pontos relevantes para coloca-lo em uso.Downloadhttp://www.sonarsource.org/downloadsInstalacaohttp://docs.codehaus.org/display/SONAR/Install+Sonarhttp://docs.codehaus.org/display/SONAR/Analyse+with+Ant+TaskConfiguracaoComo nosso enfoque e seguranca, vamos configura-lo para que use somente as regras de seguranca do Findbugs. Para as configuracoes relacionadas a seguir considere a instalacao padrao do Sonar.1. Acesse o link http://127.0.0.1:9000/profiles2. Copie o profile Sonar way with Findbugs e de o nome Findbugs-Sec3 - Clique no botao Set as default.4 - Entre no profile Findbugs - Sec e desative todas as regras.5 - Ative todas as regras da categoria Security:6 - Ative todas as regras da categoria Malicious Code.A partir deste ponto o Sonar esta preparado para usar apenas as regras das categorias Security e Malicious Code. VarreduraPara realizar a varredura existem tres possibilidades (Maven, Ant e Java Runner), mas optamos pelo uso do Ant. No arquivo build.xml de sua aplicacao, introduza o conteudo a seguir: Agora, basta rodar o Ant direcionando para a tarefa sonar (ex.: .\ant sonar). No exemplo da imagem a seguir, foi realizada a varredura do Webgoat 5.2.ArremateCom o Sonar em operacao pode-se monitorar a evolucao dos bugs de seguranca com maior facilidade. O exemplo