Deux mécanismes protègent le code lui-même : Analyse de code applique des règles prédéfinies sur chaque modification et sur la branche par défaut, et Révision de sécurité sur les demandes d'intégration vérifie les problèmes de sécurité détectés par Coroid Review avant que l'un d'eux ne puisse entraîner l'échec d'une pull request.
Analyse de code
Les règles de Coroid
La fonctionnalité Sécurité gère ces règles. Elles faisaient partie du module anti-slop dans Contrôle qualité et se trouvent désormais ici, chaque règle ayant donc son emplacement unique :
| Règle | Recherche |
|---|---|
security.hardcoded-secret | Des identifiants écrits directement dans le code. Voir Secrets divulgués. |
security.tls-disabled | La vérification du certificat TLS est désactivée. |
security.auth-removed | Les mécanismes d'authentification ou de contrôle d'accès, décorateurs ou intermédiaires, ont été supprimés ou commentés. |
security.cors-wildcard-credentials | Toute origine est autorisée en présence d'identifiants. |
security.sql-concat | Une requête SQL est construite à partir de chaînes interpolées et transmise à une fonction de requête. |
security.eval | Exécution de code à partir d'une entrée : eval, new Function, non sanitisé dangerouslySetInnerHTML. |
security.remote-script-exec | Des scripts téléchargés sont passés directement à un shell ou à un interpréteur. |
security.policy-changed | Modifications de la configuration de l'analyseur. Voir Protections et application des règles. |
deps.nonexistent | De nouvelles dépendances qui n'existent pas dans leur registre. |
deps.known-malicious | De nouvelles dépendances assorties d'un avis de package malveillant. |
deps.suspicious-new | De nouvelles dépendances publiées depuis moins de 30 jours, avec très peu de téléchargements, dont le nom diffère de un ou deux caractères d'un package populaire, ou dont le mainteneur a récemment changé. |
deps.install-script | De nouvelles dépendances npm qui exécutent un script lors de leur installation. |
Les règles d'hygiène des dépendances, les versions non verrouillées et les écarts entre le manifeste et le fichier de verrouillage restent sous le contrôle du Contrôle qualité grâce à Anti-slop. Consultez-en les détails ci-dessous. Anti-slop.
Ces règles s'exécutent sur les modifications, dans le même scan que la vérification Anti-slop du Contrôle qualité, ainsi que sur la branche par défaut à chaque poussée de code et une fois par jour, que Anti-slop soit activé ou non. Ce sont les paramètres de Sécurité, et non ceux d'Anti-slop, qui déterminent l'action de chaque règle. Vous les trouverez dans Sécurité → Paramètres → Analyse de code. Tant que l'analyse de code n'est pas appliquée de manière contraignante, chaque règle conserve l'action qu'elle avait dans le Contrôle qualité ; ainsi, une règle configurée pour bloquer continuera à bloquer.
Votre propre commande de scan
Si votre projet dispose déjà d'un outil d'analyse de sécurité, saisissez sa commande dans le champ suivant :
Votre propre commande de scan dans l'onglet Analyse de code. Elle s'exécute en tant que tâche du projet lors de chaque modification.
security_scan Laissez ce champ vide pour la désactiver.
Les résultats d'outils externes tels que SonarQube, Snyk ou Semgrep peuvent également être intégrés à Coroid en tant que preuves de révision. Consultez-en les détails ci-dessous. Fournisseurs de preuves de révision.
Révision de sécurité des demandes de fusion
Coroid Review effectue la révision des demandes de fusion dans le cadre du Contrôle qualité. Lorsqu'il détecte un problème de sécurité, il ne l'inscrit pas dans sa révision sous forme de texte descriptif, mais le signale sous forme de données structurées : type de vulnérabilité, fichier concerné et lignes affectées, ainsi que le niveau de gravité. La fonction Sécurité enregistre chaque signalement sous la catégorie suivante : Non confirmé pour l'instant.
La vérification indépendante
Pour les alertes critiques et de haut niveau, Coroid effectue une vérification indépendante : un exécution séparée et limitée du modèle qui analyse le fichier mentionné dans l'alerte, au niveau du commit en tête de pull request, et doit lui-même redéduire l'incident. Si cela est possible, l'alerte devient une détection statique validée. Si le code à l'origine de l'incident se trouve dans un autre fichier, la vérification ne peut pas le confirmer et l'alerte reste non confirmée.
Cette vérification consomme les crédits de votre organisation comme tout autre traitement par modèle, dans des limites fixées pour chaque instance de pull request. Lorsque les crédits ou les heures allouées sont épuisés, la vérification n'est pas exécutée et la révision indique : « Un éventuel problème de sécurité n'a pas pu être vérifié : les crédits ou les heures de l'organisation sont épuisés. »
Ce qui entraîne l'échec de la révision
| Observer | Appliquer | |
|---|---|---|
| Une alerte confirmée atteignant ou dépassant le seuil défini (élevé par défaut) | Neutre, « DÉTECTION CONFIRMÉE » | Le contrôle de la Révision Coroid échoue avec le statut « FINDING CONFIRMED ». |
| Une affirmation qui n'est pas confirmée. | Jamais en échec. | Jamais en échec. |
Une affirmation critique ou de haute priorité, confirmée et obligatoire, fait échouer la Révision Coroid même si la Révision est configurée en mode consultatif dans le module Contrôle qualité. C'est la seule exception à la règle selon laquelle les révisions consultatives ne génèrent jamais d'échec. Une révision demandant des modifications uniquement en raison d'affirmations de sécurité non confirmées est considérée comme consultative.
La révision de sécurité nécessite que la fonctionnalité Révision Coroid soit activée pour le projet. Si la Révision Coroid est désactivée, une mention le précise dans la section Sécurité → Paramètres.
Ce qui parvient à GitHub.
Avant qu’un texte de revue, commentaire ou vérification n’atteigne GitHub, il passe par la porte de publication. Sur un dépôt public, ou sur un dépôt dont la visibilité ne peut être confirmée par Coroid, tout problème de sécurité non divulgué est remplacé par « Coroid a détecté un éventuel problème de sécurité ; les détails se trouvent dans Coroid », accompagné d’un lien. Voir Divulgation.