Skip to main content

À propos des alertes d’analyse du code

Découvrez les différents types d’alertes d’analyse de code et les informations qui vous aident à comprendre le problème que chaque alerte met en évidence.

Code scanning est disponible pour tous les dépôts publics sur GitHub.com. Code scanning est également disponible pour des dépôts privés appartenant à des organisations qui utilisent GitHub Enterprise Cloud et ont une licence pour GitHub Advanced Security. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

À propos des alertes d’code scanning

Vous pouvez configurer l’code scanning pour vérifier le code dans un référentiel en utilisant l’analyse CodeQL par défaut, une analyse tierce ou plusieurs types d’analyse. Une fois l’analyse terminée, les alertes résultantes s’affichent côte à côte dans l’affichage de sécurité du dépôt. Les résultats provenant d’outils tiers ou de requêtes personnalisées peuvent ne pas inclure toutes les propriétés que vous voyez pour les alertes détectées par l’analyse CodeQL par défaut de GitHub. Pour plus d’informations, consultez « Définition de la configuration par défaut pour l’analyse du code » et « Définition de la configuration avancée pour l’analyse du code ».

Par défaut, l’code scanning analyse votre code périodiquement sur la branche par défaut et lors des demandes de tirage (pull request). Pour plus d’informations sur la gestion des alertes de demande de tirage, consultez « Triage des alertes d’analyse du code dans les demandes de tirage (pull request) ».

Vous pouvez auditer les actions effectuées en réponse aux alertes code scanning à l’aide des outils GitHub. Pour plus d’informations, consultez « Audit des alertes de sécurité ».

À propos des détails des alertes

Chaque alerte met en évidence un problème avec le code et le nom de l’outil qui l’a identifié. Vous pouvez voir la ligne de code qui a déclenché l’alerte ainsi que les propriétés de l’alerte, telles que la gravité de l’alerte, la gravité de sécurité et la nature du problème. Les alertes vous indiquent également quand le problème a été introduit pour la première fois. Pour les alertes identifiées par l’analyse CodeQL, vous voyez également des informations sur la façon de résoudre le problème.

L’état et les détails présentés sur la page de l’alerte reflètent uniquement l’état de l’alerte sur la branche par défaut du référentiel, même si l’alerte existe sur d’autres branches. Vous pouvez consulter l’état de l’alerte sur les branches autres que la branche par défaut dans la section Branches affectées sur le côté droit de la page de l’alerte. Si une alerte n’existe pas sur la branche par défaut, l’état de l’alerte est « dans la demande de tirage » ou « dans la branche », et il est grisé.

Capture d’écran montrant les éléments d’une alerte d’code scanning, notamment le titre de l’alerte et les lignes de code pertinentes à gauche, ainsi que le niveau de gravité, les branches affectées et les faiblesses à droite. Si vous configurez l’code scanning avec CodeQL, vous pouvez également trouver des problèmes de flux de données dans votre code. L’analyse du flux de données détecte les problèmes de sécurité potentiels dans le code, tels que l’utilisation de données non sécurisée, le passage d’arguments dangereux à des fonctions et la fuite d’informations sensibles.

Quand l’code scanning signale des alertes de flux de données, GitHub vous montre comment les données transitent par le code. L’Code scanning vous permet d’identifier les zones de votre code qui laissent échapper des informations sensibles et qui peuvent être le point d’entrée d’attaques par des utilisateurs malveillants.

À propos des niveaux de gravité

Les niveaux de gravité d’alerte peuvent être Error, Warning et Note.

Si l’code scanning est activée en tant que vérification de demande de tirage, la vérification échoue si elle détecte des résultats avec une gravité de error. Vous pouvez spécifier les niveaux de sévérité des alertes d’analyse de code qui provoquent l’échec de la vérification. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

À propos des niveaux de gravité de sécurité

L’Code scanning affiche les niveaux de gravité de sécurité pour les alertes générées par les requêtes de sécurité. Les niveaux de gravité de sécurité peuvent être Critical, High, Medium ou Low.

Pour calculer la gravité de sécurité d’une alerte, nous utilisons des données CVSS (Common Vulnerability Scoring System). CVSS est un framework ouvert pour la communication des caractéristiques et de la gravité des vulnérabilités logicielles et est couramment utilisé par d’autres produits de sécurité pour évaluer les alertes. Pour plus d’informations sur le calcul des niveaux de gravité, consultez ce billet de blog.

Par défaut, toutes les résultats d’code scanning avec une gravité de sécurité de Critical ou High entraînent un échec de vérification. Vous pouvez spécifier le niveau de gravité de sécurité pour les résultats d’code scanning qui doit provoquer un échec de vérification. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

À propos des alertes de plusieurs configurations

Vous pouvez exécuter plusieurs configurations d’analyse du code sur un dépôt, en utilisant différents outils et en ciblant différents langages ou zones du code. Chaque configuration d’code scanning génère un ensemble unique d’alertes. Par exemple, une alerte générée à l’aide de l’analyse CodeQL par défaut avec GitHub Actions provient d’une configuration différente de celle d’une alerte générée en externe et chargée via l’API code scanning.

Si vous utilisez plusieurs configurations pour analyser un fichier, les problèmes détectés par la même requête sont signalés sous la forme d’alertes par plusieurs configurations. Si une alerte existe dans plusieurs configurations, le nombre de configurations apparaît en regard du nom de la branche dans la section « Branches affectées » à droite de la page des alertes. Pour voir les configurations d’une alerte, dans la section « Branches affectées », cliquez sur une branche. Un modal « Analyse des configurations » s’affiche avec les noms de chaque configuration générant l’alerte pour cette branche. Sous chaque configuration, vous pouvez voir quand son alerte a été mise à jour pour la dernière fois.

Une alerte peut afficher différents états de différentes configurations. Pour mettre à jour les états des alertes, réexécutez chaque configuration obsolète. Vous pouvez également supprimer les configurations obsolètes d’une branche pour supprimer les alertes obsolètes. Pour plus d’informations sur la suppression des configurations et alertes obsolètes, consultez « Gestion des alertes d’analyse du code pour votre référentiel ».

À propos des étiquettes pour les alertes introuvables dans le code de l’application

GitHub affecte une étiquette de catégorie aux alertes introuvables dans le code de l’application. L’étiquette est liée à l’emplacement de l’alerte.

  • Généré : code généré par le processus de génération
  • Test : code de test
  • Bibliothèque : bibliothèque ou code tiers
  • Documentation : Documentation

L’Code scanning classe les fichiers par chemin de fichier. Vous ne pouvez pas classer manuellement les fichiers sources.

Dans cet exemple, une alerte est marquée comme étant dans le code « Test » dans la liste d’alertes d’code scanning.

Capture d’écran d’une alerte dans la liste d’code scanning. À droite du titre, une étiquette « Test » est mise en évidence avec un encadré orange foncé.

Lorsque vous cliquez pour voir les détails de l’alerte, vous voyez que le chemin du fichier est marqué comme code « Test ».

Capture d’écran montrant les détails d’une alerte. Le chemin du fichier et l’étiquette « Test » sont mis en évidence avec un encadré orange foncé.

À propos des alertes expérimentales

Remarque : les alertes expérimentales d’code scanning sont créées à l’aide de la technologie expérimentale de l’action CodeQL. Cette fonctionnalité est actuellement disponible en version bêta pour le code JavaScript et est susceptible d’être modifiée.

Dans les dépôts qui exécutent l’code scanning en utilisant l’action CodeQL, vous pouvez voir certaines alertes marquées comme expérimentales. Il s’agit d’alertes qui ont été trouvées avec un modèle Machine Learning pour étendre les fonctionnalités d’une requête CodeQL existantes.

Capture d’écran montrant une alerte pour l’code scanning. Une étiquette « Expérimental » s’affiche à droite du titre, auquel est ajouté « (expérimental) ».

Avantages de l’utilisation de modèles Machine Learning pour étendre les requêtes

Les requêtes qui utilisent des modèles Machine Learning sont capables de trouver des vulnérabilités dans du code qui a été écrit avec des frameworks et des bibliothèques que n’avait pas inclus l’auteur initial des requêtes.

Chacune des requêtes de sécurité pour CodeQL identifie le code qui est vulnérable à un type spécifique d’attaque. Les chercheurs en sécurité écrivent les requêtes et incluent les frameworks et bibliothèques les plus courants. Ainsi, chaque requête existante trouve des utilisations vulnérables des frameworks et bibliothèques courants. Toutefois, les développeurs utilisent de nombreux frameworks et bibliothèques différents, et une requête gérée manuellement ne peut pas tous les inclure. De ce fait, les requêtes gérées manuellement ne fournissent pas de couverture pour la totalité des frameworks et des bibliothèques.

CodeQL utilise un modèle Machine Learning pour étendre une requête de sécurité existante afin de couvrir un plus large éventail de frameworks et de bibliothèques. Le modèle Machine Learning est entraîné pour détecter les problèmes dans le code qu’il n’a jamais vu auparavant. Les requêtes qui utilisent le modèle trouvent des résultats pour les frameworks et les bibliothèques qui ne sont pas décrits dans la requête d’origine.

Alertes identifiées avec le Machine Learning

Les alertes trouvées avec un modèle Machine Learning sont affichées avec une bannière « Alertes expérimentales » pour montrer que la technologie est en cours de développement actif. Ces alertes ont un taux plus élevé de faux résultats positifs que les requêtes sur lesquelles elles sont basées. Le modèle Machine Learning s’améliore en fonction des actions de l’utilisateur telles que le marquage d’un mauvais résultat comme faux positif ou la correction d’un bon résultat.

Activation des alertes expérimentales

Les suites de requêtes CodeQL par défaut n’incluent aucune requête qui utilise le Machine Learning pour générer des alertes expérimentales. Pour exécuter des requêtes Machine Learning pendant l’code scanning, vous devez exécuter les requêtes supplémentaires contenues dans l’une des suites de requêtes suivantes.

Suite de requêtesDescription
security-extendedRequêtes issues de la suite par défaut, plus requêtes de gravité et de précision moindres
security-and-qualityRequêtes de security-extended, plus requêtes de maintenabilité et de fiabilité.

Quand vous mettez à jour votre workflow pour exécuter une suite de requêtes supplémentaire, le temps d’analyse s’en trouve accru.

- uses: github/codeql-action/init@v2
  with:
    # Run extended queries including queries using machine learning
    queries: security-extended

Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

Désactivation des alertes expérimentales

La façon la plus simple de désactiver les requêtes qui utilisent le Machine Learning pour générer des alertes expérimentales consiste à arrêter l’exécution de la suite de requêtes security-extended ou security-and-quality. Dans l’exemple ci-dessus, vous pouvez commenter la ligne queries. Si vous devez continuer à exécuter la suite security-extended ou security-and-quality et que les requêtes Machine Learning sont à l’origine de problèmes, vous pouvez ouvrir un ticket auprès du support GitHub en indiquant les détails suivants.

  • Titre du ticket : « code scanning : suppression des alertes expérimentales bêta »
  • Spécifiez les détails des dépôts ou des organisations affectés
  • Demandez une escalade vers l’équipe d’ingénierie