Skip to main content

Requêtes C et C++ pour l’analyse CodeQL

Explorez les requêtes permettant à CodeQL d’analyser le code écrit en C# ou C++ lorsque vous sélectionnez la suite de requêtes default ou security-extended.

Qui peut utiliser cette fonctionnalité ?

CodeQL est disponible pour les types de référentiels suivants :

CodeQL inclut de nombreuses requêtes pour l’analyse du code C# et C++. Toutes les requêtes de la suite de requêtes default sont exécutées par défaut. Si vous choisissez d’utiliser la suite de requêtes security-extended, des requêtes supplémentaires sont exécutées. Pour plus d’informations, consultez « Suites de requêtes CodeQL ».

Requêtes intégrées pour l’analyse C et C++

Ce tableau répertorie les requêtes disponibles avec la dernière version de l’action CodeQL et CodeQL CLI. Pour plus d’informations, consultez les journaux des modifications CodeQL dans le site de documentation de CodeQL.

Remarque

La version initiale de GitHub Enterprise Server 3.17 incluait l’action CodeQL et CodeQL CLI 2.20.7, qui peuvent ne pas inclure toutes ces requêtes. Votre administrateur de site peut mettre à jour votre version CodeQL vers une version plus récente. Pour plus d’informations, consultez « Configuration de l’analyse de code pour votre appliance ».

Nom de la requêteCWEs AssociésPar défautÉtenduCopilot correction automatique
Mauvais contrôle de dépassement de capacité dans l'addition d'entiers190, 192
Écriture mal circonscrite120, 787, 805
L’appel à memset peut avoir été supprimé014
L'appel à alloca dans une boucle770
Appel à la fonction avec moins d’arguments que les paramètres déclarés234, 685
Conversion entre un HRESULT et un type booléen253
Conversion de char* en wchar_t*704
Script CGI vulnérable au scripting inter-site079
Stockage de texte en clair des informations sensibles dans le fichier260, 313
Transmission de texte en clair des informations sensibles319, 359
Comparaison d'un type étroit avec un type large en condition de boucle190, 197, 835
Utilisation dangereuse de « cin »676
Exposition des données système à une sphère de contrôle non autorisée497
Échec de l’utilisation des URL HTTPS319, 345
Fichier ouvert avec l’indicateur O_CREAT, mais sans argument de mode732
Vérification incorrecte de la valeur de retour pour une fonction de type « scanf »253
Itérateur pour le conteneur expiré416, 664
Écriture probablement dépassée120, 787, 805
Incompatibilité de nouveau/libre ou malloc/supprimer401
Résultat de multiplication converti en type plus grand190, 192, 197, 681
Aucun espace pour le terminateur zéro131, 120, 122
Vérification de dépassement de capacité du pointeur758
Double libération potentielle415
Utilisation potentielle après la libération416
Appel potentiellement en dépassement de capacité à snprintf190, 253
Appel potentiellement non sécurisé à strncat788, 676, 119, 251
Vérification de nul redondante en raison du déréférencement précédent476
Restitution de la mémoire allouée sur la pile825
Définition d’un DACL sur NULL dans un SECURITY_DESCRIPTOR732
Vérification du dépassement de capacité signé128, 190
L’accès au tableau statique peut entraîner un dépassement de capacité119, 131
Ajout suspect utilisant sizeof468
Condition de compétition du système de fichiers "Time-of-check time-of-use"367
Trop peu d'arguments pour la fonction de mise en forme234, 685
Données non contrôlées dans une expression arithmétique190, 191
Données non contrôlées dans la requête SQL089
Données non contrôlées utilisées dans la commande du système d’exploitation078, 088
Chaîne de format non contrôlée134
Utilisation non sécurisée de ce composant dans le constructeur670
Expression de différence non signée par rapport à zéro191
Tableau converti utilisé dans l’arithmétique du pointeur119, 843
Utilisation d’un algorithme de cryptage défectueux ou risqué327
Utilisation d’un algorithme de cryptage avec une taille de clé insuffisante326
Utilisation d’une version d’OpenSSL avec Heartbleed327, 788
Utilisation d’une fonction dangereuse242, 676
Utilisation d’une adresse de pile expirée825
Utilisation de la chaîne de caractères après la fin de la durée de vie416, 664
Utilisation d’un pointeur unique après la fin de la durée de vie416, 664
Type incorrect d’arguments pour la fonction de mise en forme686
Extension d’entité externe XML611
Décalage du tableau utilisé avant le contrôle de plage120, 125
Contournement de l’authentification par usurpation d’identité290
boost::asio Mauvaise configuration des paramètres TLS326
boost ::asio utilisation du protocole codé en dur déprécié327
L’appel à la fonction d’accès à la mémoire peut entraîner un dépassement de la mémoire tampon119, 121, 122, 126
Certificat non vérifié295
Conflation des résultats du certificat295
Stockage de texte en clair des informations sensibles dans une base de données SQLite313
Stockage de texte en clair des informations sensibles dans la mémoire tampon312
Virgule avant indentation trompeuse1078, 670
Fichier créé sans restriction d’autorisations732
Utilisation incorrecte de l’opérateur « not »480
Gestion des erreurs de répartition incorrecte570, 252, 755
Déréférencement de pointeur non valide119, 125, 193, 787
Absence de vérification de la valeur renvoyée pour une fonction similaire à « scanf »252, 253
Chaîne de format non constante134
Mémoire insuffisante attribuée pour le tableau de type pointeur131, 122
Mémoire insuffisante attribuée pour le type de pointeur131, 122
Nom de l’application NULL avec un chemin d'accès non entouré de guillemets lors d'un appel à CreateProcess428
Surexécution d’écriture119, 131
Taille de la mémoire tampon éventuellement incorrecte dans la copie de chaînes676, 119, 251
Exposition potentielle des données système sensibles à une sphère de contrôle non autorisée497
Écriture potentiellement excessive120, 787, 805
Écriture potentiellement dépassant les limites avec la conversion de float en chaîne120, 787, 805
Variable locale potentiellement non initialisée665, 457
Utilisation potentiellement non sécurisée de strcat676, 120, 251
Utilisation suspecte de « sizeof »467
Mise à l’échelle suspecte du pointeur468
Mise à l’échelle suspecte du pointeur vers void468
Confusion de type843
Écriture sans limites120, 787, 805
Taille d’allocation non contrôlée190, 789
Données non contrôlées utilisées dans une expression de chemin022, 023, 036, 073
Opération de processus non contrôlée114
Appel variadique non terminé121
Entrée non approuvée pour une condition807
Utilisation d’une fonction potentiellement dangereuse676