O que você mais gosta Coverity?
Usamos a ferramenta de Análise Estática Coverity para verificações de segurança do código de servidor em C/C++.
A Coverity tem uma taxa de detecção mais alta, pois confiamos muito nessa verificação de código para nosso código de aplicação.
Integramos perfeitamente essa ferramenta SAST (Coverity) ao nosso Pipeline CI/CD e as vulnerabilidades eram notificadas ao respectivo desenvolvedor via e-mail.
Ela fornece um mecanismo para auditar as descobertas e marcar falsos positivos de maneira eficiente.
O suporte para várias linguagens é outro fator que se destaca bem quando comparado a outras ferramentas.
O tempo que leva para escanear grandes linhas de código é significativamente mais rápido em comparação com outras ferramentas. Análise coletada por e hospedada no G2.com.
O que você não gosta Coverity?
No entanto, há alguns pontos de melhoria que achei que deveria destacar para tornar esta ferramenta ainda melhor para os usuários finais.
strzcpy vs. NULL_STRING
O Coverity não reconhece que strzcpy adiciona um x00 de terminação.
ab_pfetch*
No Windows, atualmente temos muitos falsos positivos de OVERRUN.
bsearch em tabela de largura fixa vs. Literal
O modelo do Coverity para bsearch assume que bsearch acessa a chave na largura total da chave. Se bsearch recebe uma tabela de tamanho fixo (máximo) e, por exemplo, strcmp como função de comparação, então, na realidade, quando bsearch é chamado com um literal pequeno como chave, tudo está bem. Infelizmente, o Coverity pensa que bsearch lerá além do final do literal, mesmo que strcmp não o faça.
NO_EFFECT em var_arg
No Windows, atualmente temos um aviso de NO_EFFECT em todos os usos de va_args.
TAINTED_SCALAR
Coverity para alertar sobre usos de dados contaminados, dados que podem ser controlados por um atacante. Isso pode levar à corrupção de dados, injeção de código,...
Quando possível, o Coverity relata defeitos adicionais descrevendo o uso perigoso dos dados contaminados INTEGER_OVERFLOW.
RW.LITERAL_OPERATOR_NOT_FOUND em printf com TEL_Format
Ao usar o formato definido TEL, como TEL_Flpu, TEL_Fsu, TEL_Fpid,... o Coverity às vezes requer um espaço antes do 'T' de TEL_Fxxx.
TAINTED_STRING
Coverity para alertar sobre usos de dados contaminados, dados que podem ser controlados por um atacante. Isso pode levar à corrupção de dados, injeção de código, injeção de SQL, travessia de diretórios,
PW.PRINTF_ARG_MISMATCH - * precisão ou * tamanho vs. parâmetros size_t ou ptrdiff_t
Compilações ou verificações de 64 bits - O padrão C afirma que a * precisão ou tamanho são do tipo int. Isso geralmente é de 4 bytes. Em compilações de 64 bits, size_t e ptrdiff_t são de 8 bytes.
Se eu tivesse enviado uma correção ontem, o Coverity Connect de hoje continuaria a relatar o defeito. Análise coletada por e hospedada no G2.com.