Skip to main content

Consultas C e C++ para análise CodeQL

Explore as consultas que o CodeQL usa para analisar o código escrito em C ou C++ quando você seleciona o conjunto de consultas default ou security-extended.

Quem pode usar esse recurso?

A Code scanning está disponível para todos os repositórios públicos do GitHub.com. Para usar code scanning em um repositório privado pertencente a uma organização, você precisa ter um licença do GitHub Advanced Security. Para obter mais informações, confira "Sobre a Segurança Avançada do GitHub".

O CodeQL inclui muitas consultas para analisar código C e C++. Todas as consultas no conjunto de consultas default são executadas por padrão. Se você optar por usar o conjunto de consultas security-extended, consultas adicionais serão executadas. Para obter mais informações, confira "Conjuntos de consultas CodeQL".

Consultas internas para análise C e C++

Esta tabela lista as consultas disponíveis com a versão mais recente da ação CodeQL e CodeQL CLI. Para obter mais informações, consulte Logs de alterações do CodeQL no site de documentação do CodeQL .

Note

A correção automática do GitHub para o code scanning está em versão beta. A funcionalidade e a documentação estão sujeitas a alterações. Durante essa fase, o recurso estará restrito a alertas para C#, Go, Java, JavaScript/TypeScript, Python e Ruby identificados pelo CodeQL para repositórios privados e internos. Se você tiver uma conta empresarial e usar GitHub Advanced Security, sua empresa terá acesso à versão beta.

Nome da consultaCWEs relacionadosPadrãoEstendidoCorreção automática
Verificação incorreta de estouro de adição de inteiro190, 192
Escrita incorretamente delimitada120, 787, 805
A chamada para memset pode ser excluída14
Chamada para alocar em um loop770
Chamada para função com menos argumentos do que os parâmetros declarados234, 685
Transmissão entre HRESULT e um tipo booliano253
Transmissão de char* para wchar_t*704
Script CGI vulnerável a cross-site scripting079
Armazenamento de texto não criptografado de informações confidenciais em arquivo260, 313
Transmissão de texto não criptografado de informações confidenciais319, 359
Comparação do tipo estreito com o tipo largo na condição de loop190, 197, 835
Uso perigoso de 'cin'676
Exposição de dados do sistema a uma esfera de controle não autorizada497
Falha ao usar URLs HTTPS319, 345
Arquivo aberto com sinalizador O_CREAT, mas sem argumento de modo732
Verificação de valor de retorno incorreto para uma função semelhante a 'scanf'253
Provável excesso de gravação120, 787, 805
Incompatibilidade novo/livre ou malloc/delete401
Resultado da multiplicação convertido em tipo maior190, 192, 197, 681
Sem espaço para terminador zero131, 120, 122
Verificação de estouro de ponteiro758
Liberado duplo potencial415
Uso potencial após liberado416
Chamada potencialmente excedente para snprintf190, 253
Verificação nula redundante devido à desreferência anterior476
Retornar memória alocada em pilha825
Definir uma DACL como NULL em um SECURITY_DESCRIPTOR732
Verificação de estouro assinada128, 190
O acesso à matriz estática pode causar estouro119, 131
Adição suspeita com sizeof468
Condição de corrida do sistema de arquivos de tempo de uso de tempo de verificação367
Poucos argumentos para a função de formatação234, 685
Dados não controlados em expressão aritmética190, 191
Dados não controlados na consulta SQL089
Dados não controlados usados em comando do sistema operacional078, 088
Cadeia de caracteres de formato não controlada134
Uso não seguro disso no construtor670
Matriz upcast usada na aritmética do ponteiro119, 843
Uso de um algoritmo criptográfico danificado ou arriscado327
Uso de um algoritmo criptográfico com tamanho de chave insuficiente326
Uso de uma versão do OpenSSL com Heartbleed327, 788
Uso de função perigosa242, 676
Uso de endereço de pilha expirado825
Uso de cadeia de caracteres após o término da vida útil416, 664
Uso de ponteiro exclusivo após o término da vida útil416, 664
Tipo incorreto de argumentos para a função de formatação686
Expansão de entidade externa XML611
Deslocamento de matriz usado antes da verificação do intervalo120, 125
Desvio de autenticação por falsificação290
boost::asio configurações incorretas de TLS326
boost::asio uso de protocolo integrado em código preterido327
Certificado não verificado295
Confusão de resultados do certificado295
Armazenamento de texto não criptografado de informações confidenciais em um banco de dados SQLite313
Armazenamento de texto não criptografado de informações confidenciais no buffer312
Vírgula antes de recuo enganosa1078, 670
Arquivo criado sem restringir permissões732
Uso incorreto do operador 'not'480
Tratamento incorreto de erros de alocação570, 252, 755
Desreferência de ponteiro inválida119, 125, 193, 787
Iterador para contêiner expirado416, 664
Verificação de valor de retorno ausente para uma função semelhante a 'scanf'252, 253
Cadeia de caracteres de formato não constante134
Não há memória suficiente alocada para matriz do tipo de ponteiro131, 122
Não há memória suficiente alocada para o tipo de ponteiro131, 122
Nome do aplicativo NULL com um caminho sem aspas na chamada para CreateProcess428
Estouro no tamanho de alocação não controlado190, 789
Gravação de ultrapassagem119, 131
Tamanho de buffer possivelmente incorreto na cópia de cadeia de caracteres676, 119, 251
Exposição potencial de dados confidenciais do sistema a uma esfera de controle não autorizada497
Gravação potencialmente excedente120, 787, 805
Potencial ultrapassagem da gravação com conversão de float para string120, 787, 805
Variável local possivelmente não inicializada665, 457
Chamada potencialmente não segura para strncat788, 676, 119, 251
Uso potencialmente não seguro de strcat676, 120, 251
Uso suspeito de 'sizeof'467
Dimensionamento de ponteiro suspeito468
Dimensionamento de ponteiro suspeito para anular468
Confusão de tipos843
Gravação ilimitada120, 787, 805
Dados não controlados usados na expressão de caminho022, 023, 036, 073
Operação de processo não controlada114
Expressão de diferença não assinada em comparação com zero191
Chamada variádica não terminada121
Entrada não confiável para uma condição807
Uso de função potencialmente perigosa676