Sécurité → Constatations constitue la liste unique de tout ce que Sécurité a détecté, quel qu'en soit l'origine. Chaque source écrit dans le même stockage, et un même problème signalé par deux sources correspond à une seule constatation.
Constatations, occurrences et sources
- Une constatation représente un problème distinct dans un dépôt : un paquet vulnérable, des identifiants divulgués ou un schéma de code vulnérable.
- Ses occurrences indiquent où elle se trouve : un manifeste et un chemin de dépendance, un fichier et une ligne, ou la validation et le chemin où un secret apparaît. Deux versions installées du même paquet constituent deux occurrences.
- Ses sources précisent qui l'a détectée, quand et avec quel degré de précision : OSV-Scanner, GitHub Dependabot, GitHub l'analyse de code, GitHub l'analyse des secrets, la scan de secrets de Coroid, les règles de code de Coroid, votre propre commande de scan, Coroid Révision, et l'audit de sécurité.
La liste est regroupée par projet. Vous pouvez la filtrer par projet, type, gravité, état, source, divulgation et preuve. Une constatation liée à une dépendance est regroupée par paquet, avec la mise à jour qui la corrige si elle est connue.
Gravité et dates limites
Chaque constatation dispose d'une date limite après son ouverture :
| Gravité | À régler dans les délais suivants |
|---|---|
| Critique | 2 jours |
| Élevée | 7 jours |
| Moyenne | 30 jours |
| Faible | 90 jours |
L'Aperçu compte les constatations en retard et celles dont la date limite est dans les trois prochains jours.
États
| État | Signification |
|---|---|
| Ouverte | Présente sur la branche par défaut. |
| Corrigée dans le code | Toutes les occurrences sur la branche par défaut ont disparu selon une analyse complète. |
| Rotation attestée | Un identifiant divulgué dont quelqu'un a attesté de sa rotation ou révocation. Voir Secrets divulgués. |
| Plus applicable | Tous les avis associés à la constatation ont été retirés. Ce n'est pas une « correction ». |
| Sur un pull request | Visible uniquement sur un pull request. Elle appartient à pull request, et la prochaine analyse de la branche par défaut la détectera si le changement est fusionné. |
Pas de résultat silencieux positif
Une occurrence n'est considérée comme absente que lorsqu'une analyse complète de la version actuelle du code l'indique. Une analyse partielle, une analyse échouée, une analyse sans autorisation ou une analyse d'une validation que la branche a déjà dépassée ne modifient rien. La couverture illustre chaque cas :
- Partielle: certains fichiers n'ont pas pu être lus entièrement, ce qui est indiqué dans la couverture.
- Obsolète: l'inventaire ne correspond pas à la version actuelle de la branche par défaut ou date de plus d'un jour.
- Inconnue depuis…: une source a perdu ses autorisations ou n'a pas pu être lue. Les constatations qu'elle était la seule à signaler affichent alors « statut inconnu depuis » à ce moment-là.
- Retard dans le flux d'avis: aucun projet n'affiche une couverture complète tant que ce retard persiste.
Les résultats s'appliquent dans l'ordre où Coroid a observé les têtes de branche, et non selon la date des validations. Si quelqu'un effectue un force-push pour ramener une branche à une ancienne validation, l'analyse de cette validation devient le résultat le plus récent, et un résultat tardif pour une tête que la branche a déjà quittée ne modifie rien.
Corrigée dans le code et corrigée dans l'environnement de déploiement
Fusionner une correction ne signifie pas qu'elle est déjà appliquée. Sécurité suit ces deux aspects séparément :
- Corrigée dans le code: la branche par défaut ne présente plus le problème.
- Par environnement: pour chaque environnement qui indique ce qu'il exécute, Coroid analyse exactement cette version. La constatation est considérée comme corrigée dans cet environnement uniquement lorsque l'analyse est terminée et qu'aucune occurrence n'est détectée. Une annulation ou un retour en arrière qui réintroduit le problème rouvre la constatation pour cet environnement.
Les Environnements d'une constatation indiquent, pour chaque environnement, « Exécuté en production », « Présent uniquement dans le code » ou « Déploiement inconnu ». « Déploiement inconnu » signifie que Coroid n'a pas observé de version pour cet environnement ou qu'aucune analyse complète n'a encore été réalisée. Un projet sans suivi de déploiement affiche « Posture du dépôt uniquement — aucune version de déploiement n'est suivie ». Pour suivre les déploiements, voir Événements de déploiement.
Aperçu → L'onglet « Suivi des correctifs » indique ce qui est encore en cours d'exécution en production, ce qui est corrigé dans le code mais pas encore déployé, ce qui ne peut pas encore être déterminé, les demandes de fusion de correctifs en attente de révision, ainsi que le temps médian entre la détection du problème et la fusion du correctif, puis entre la fusion du correctif et son déploiement.
Exceptions
Une exception masque un constat de la liste ouverte sans le supprimer. Les propriétaires et les administrateurs en ajoutent une pour un constat :
| Type | Besoins |
|---|---|
| Accepter le risque | Une raison, le niveau de gravité maximal qu'elle accepte, et une date d'expiration future. |
| Ce n'est pas un problème (faux positif) | Une raison et le niveau de gravité maximal qu'elle accepte. Une date d'expiration est optionnelle. |
Le constat réapparaît lorsque l'exception expire, lorsqu'une personne la révoque, ou lorsque la gravité du constat dépasse le niveau accepté par l'exception. Une augmentation de la gravité annule définitivement l'exception. Les observations masquées par l'exception sont conservées ; il faut lui donner un nom. Chaque exception est enregistrée dans le journal d'audit de l'organisation.
Un identifiant d'accès divulgué est différent : il est clos uniquement lorsque quelqu'un atteste qu'il a été renouvelé ou révoqué. Voir Secrets divulgués.
Agir sur un constat
À partir d'un constat, les propriétaires et les administrateurs peuvent :
- Corriger: ouvrir le travail de correction associé. Pour un constat lié à une dépendance publique, une demande de fusion de correctif, ou une tâche de mise en œuvre si aucune version corrigée n'existe. Pour un constat lié au code, une tâche de correction. Pour un secret divulgué, la liste de contrôle de renouvellement. Voir Demandes de fusion de correctifs.
- Accepter le risque ou le marquer comme Ce n'est pas un problème.
- Suivre sa tâche de correction ouverte et pull request.
Conservation
Les constats, leurs occurrences et leurs preuves sont conservés tant que le dépôt est connecté. Lorsqu'un dépôt est déconnecté, ils sont supprimés après 30 jours et restaurés s'il se reconnecte dans ce délai. Les données consultatives partagées ne vous appartiennent pas et sont conservées. Les entrées d'audit relatives aux exceptions, attestations et divulgations suivent la politique de conservation du journal d'audit.