A SAP liberou como um projeto Open Source os códigos de sua ferramenta de Avaliação de Vulnerabilidades, trata-se de uma ferramenta de análise de composição de software (SCA) que foi testada internamente por dois anos com 20.000 análises de vulnerabilidade em mais de 600 projetos.
Esta ferramenta para avaliação de vulnerabilidade se concentra especificamente na detecção de componentes vulneráveis, conforme declarado no relatório OWASP-Top 10 2017 A9. A ferramenta analisa os pacotes de software para dependências diretas e transitivas e compara cada dependência a fontes conhecidas, como o banco de dados da National Vulnerability Database ou a lista disponível na CVE, para determinar se existem vulnerabilidades ou explorações conhecidas para cada pacote. Durante a fase de desenvolvimento, esse conhecimento pode informar aos desenvolvedores sobre quando devem atualizar determinados componentes. Durante as operações, quando uma nova vulnerabilidade é descoberta, essas informações podem ser usadas para localizar quais aplicações exigem ação.
As ferramentas para análise de composição de software tornaram-se críticas para a indústria de software após a violação ocorrida na Equifax em 2017, após uma falha na correção do Apache Struts conforme o relatório CVE-2017-9805. No total, essa violação gerou uma perda de mais de 143 milhões de registros, com um custo total estimado em mais de US $ 600 milhões. Após o ocorrido, a Apache Software Foundation publicou a "Declaração do Apache Struts sobre violação de segurança da Equifax" com recomendações sobre problemas que a Ferramenta de avaliação de vulnerabilidades da SAP procura resolver, como por exemplo:
- Entenda quais são os frameworks que são suportados assim como as bibliotecas que são utilizadas em seus produtos de software e em quais versões. Acompanhe os anúncios de segurança que afetam esses produtos e versões.
- Estabeleça um processo para implementar rapidamente uma versão de correção de segurança do seu produto de software, uma vez que os frameworks que às suportam ou as bibliotecas precisem ser atualizadas por motivos de segurança. O melhor é pensar em termos de horas ou alguns dias, não semanas ou meses. A maioria das violações de que tomamos conhecimento é causada pela falha na atualização de componentes de software que são vulneráveis por meses ou até anos.
A nova ferramenta da SAP vai além de uma listagem básica de arquivos, ela executa um teste de nível de segurança de aplicação em código estático (SAST) para avaliar o uso de cada componente. Esta funcionalidade foi projetada para minimizar os falsos positivos onde um componente vulnerável pode estar presente, mas não é realmente usado. Um exemplo disso seria quando uma ferramenta sinalizava o próprio JRE como vulnerável a uma vulnerabilidade de applet, como descrito no relatório CVE-2016-0636, mas o JRE é usado em um contexto do lado do servidor em que os applets nunca são envolvidos.
A análise de código estático é realizada por muitas organizações como uma medida de segurança para detectar vulnerabilidades de nível de código antes do lançamento de um produto ou serviço. Especificamente, as revisões de código são mencionadas na seção 8.4.b do PCI Secure Software Standard e na seção SA-4 do NIST 800-53, juntamente com outros mecanismos de detecção que analisam os artefatos do código, como a análise binária. Outra opção é monitorar continuamente o comportamento do aplicativo por meio do IAST (Integrated Application Security Testing).
A documentação do projeto explica várias limitações que pertencem ao campo da análise estática para testes de segurança. Especificamente, ela menciona suporte ausente para informações não estáticas, como os citados nos arquivos JAR de liberação múltipla para o Java 9. Esses recursos Java fornecem vários arquivos de classe com o mesmo espaço de nome, com o JRE selecionando a classe e o comportamento apropriados no tempo de execução. Em um contexto estático, as informações sobre essa decisão estão ausentes sem o tempo de execução, portanto, o analisador deve escolher todos os caminhos ou usar como padrão o local da classe principal. A ferramenta da SAP toma a última decisão e oferece uma instrumentação dinâmica do tipo IAST para o Java, a fim de corrigir essa deficiência de análise de segurança estática e detectar quais arquivos são usados.
A ferramenta para avaliação de vulnerabilidades da SAP foi lançada no GitHub e é mantida por Henrik Plate, Serena E. Pontona, Antonio Sabetta, Cédric Dangremont e Alessandro Pezzé.