Après des tests approfondis, GitHub a rendu la fonction d' analyse des vulnérabilités accessible au public . N'importe qui peut exécuter un scanner sur son propre référentiel et trouver des vulnérabilités avant de passer en production. Le scanner fonctionne pour les référentiels en C, C ++, C #, JavaScript, TypeScript, Python et Go.
Le scanner est basé sur la technologie CodeQL développée par Semmle, qui a été acquise par GitHub l'année dernière . CodeQL est considéré comme le premier scanner de vulnérabilité au monde. Les tests bêta ont commencé sur GitHub en mai 2020. La fonction est désormais accessible à tous.
Comment allumer
L'analyse démarre à partir de l'onglet Sécurité dans le référentiel.
Là, nous cliquons sur Configurer l'analyse de code .
Dans la fenêtre suivante, nous devons sélectionner le flux de travail que nous voulons utiliser pour la numérisation. Le fait est que CodeQL prend en charge la connexion de moteurs tiers. Pour le moteur standard, sélectionnez "Analyse CodeQL".
En principe, ce flux de travail peut être configuré: activer l'analyse programmée, analyser pour chaque
push
requête ou pull request, utiliser votre propre fichier de configuration, lancer des requêtes de recherche supplémentaires pendant l'analyse.
Cliquez ensuite sur le bouton Démarrer la validation et écrivez un nom pour la nouvelle validation.
Nous choisissons de nous engager dans la branche principale ou de créer une nouvelle branche et de lancer une pull request.
C'est tout. À la fin, cliquez sur le bouton Valider un nouveau fichier ou Proposer un nouveau fichier .
Après avoir spécifié un commit, Vulnerability Scanner analysera votre code selon la fréquence spécifiée dans le workflow .
Après avoir activé CodeQL, vous pouvez afficher les résultats et modifier les paramètres d'analyse .
Moteur CodeQL
Le moteur CodeQL recherche les vulnérabilités potentielles à l'aide d'un dictionnaire de plus de 2000 requêtes. Le dictionnaire est compilé par GitHub et la communauté d'utilisateurs qui ont testé le système. Cette base de données sera constamment mise à jour, et chacun pourra y ajouter individuellement, simplement en éditant le fichier de configuration.
L'outil d'analyse repose sur la norme d'analyse de code statique SARIF (OASIS Static Analysis Results Interchange Format) et prend en charge la connexion de moteurs tiers qui fonctionneront dans une seule interface. L'exportation des résultats via des API unifiées est également prise en charge.
Depuis leur soumission en mai 2020, plus de 12000 référentiels ont été analysés (1,4 million de passages au total) et plus de 20000 problèmes de sécurité ont été identifiés, y compris des vulnérabilités d'exécution de code à distance (RCE), l'injection SQL et les scripts intersites (XSS).
Les développeurs et les mainteneurs ont corrigé 72% des vulnérabilités trouvées dans les 30 jours suivant leur découverte, avant de fusionner le code dans la branche principale. C'est un bon résultat, car selon les statistiques, moins de 30% des vulnérabilités trouvées sont corrigées dans un délai d'un mois après la détection.
À la suite des tests bêta, 132 validations de la communauté ont été effectuées dans le dictionnaire de requêtes open source. Pour permettre aux utilisateurs de GitHub d'exécuter des outils tiers, des accords ont été conclus avec plus d'une douzaine de développeurs de systèmes de sécurité et d'outils open source pour l'analyse statique, l'analyse des conteneurs et la validation de l'infrastructure en tant que code (Infrastructure-as-Code; IaC) - il s'agit d'une approche pour gérer et décrire l'infrastructure via la configuration fichiers, et non par l'édition manuelle des configurations sur les serveurs ou par une interaction interactive.
En plus de rechercher des vulnérabilités, GitHub s'associe également à 24 fournisseurs de services tiers pour trouver leurs secrets dans le code qui ne peut pas être publié en clair, comme les clés d'accès. Les partenaires incluent AWS, Google Cloud, Azure, Dropbox, Slack, Discord, npm, Stripe et Twilio. La recherche de secrets s'effectue automatiquement dans les référentiels publics et privés.
L'analyse de code est gratuite pour les référentiels publics et est incluse dans le package Advanced Security pour GitHub Enterprise (qui est un service payant ). Certaines options exotiques (liste des adresses IP autorisées, SAML, support LDAP, etc.) ne sont disponibles que dans la version payante.
Cependant, vous devez ajouter une mouche dans la pommade à ce baril de miel. Certains auteurs de programmes open source se plaignent ( 1 ,2 ) que l'analyse donne trop de faux positifs.
En théorie, la vérification automatique de tous les référentiels est une bonne chose, mais en pratique il n'est pas très agréable d'être constamment distrait par des rapports de fausses «vulnérabilités», en particulier dans les dépôts de développement ou les archives obsolètes qui ne seront jamais mises en production. Cela devient très vite ennuyeux. Certains auteurs disent que la plupart des vulnérabilités de leur propre code sont en fait bruyantes ou non applicables dans un cas particulier.
Autrement dit, le robot d'exploration GitHub peut déclencher tous les symptômes d'une condition connue sous le nom de fatigue de la sécurité. Pour plus d'informations sur cette condition, consultez l' article scientifique(doi: 10.1109 / MITP.2016.84). Il déclare que cette condition chez une personne renforce sa réticence à suivre les recommandations de sécurité et affecte l'analyse globale avantages-coûts.