Guide de sécurité Github
GitHub est le système de gestion de code le plus complet au monde, mais votre code est-il stocké en toute sécurité ? Bien que GitHub prenne sa sécurité au sérieux, tous les utilisateurs de GitHub devraient prendre certaines mesures pour sécuriser encore plus leurs projets.
Qu’est-ce que la sécurité GitHub exactement ?
La sécurité Github est une méthodologie permettant de protéger votre environnement GitHub en mettant en œuvre des couches de protection à la fois sur et hors de GitHub. Cela peut inclure tout, de l'audit du code à l'utilisation de l'authentification à deux facteurs pour sécuriser les connexions.
La mise en œuvre d'une sécurité GitHub appropriée garantit que votre propriété intellectuelle est protégée et que les attaquants injectent du code malveillant dans vos projets pour une utilisation ultérieure. Malheureusement, la nature d'un référentiel en ligne constitue une cible attrayante pour les pirates informatiques expérimentés, ce qui exerce une pression supplémentaire sur les propriétaires de référentiels GitHub pour qu'ils intensifient leur jeu de sécurité.
Par défaut, GitHub implémente de nombreuses fonctionnalités différentes pour protéger ses utilisateurs, telles que l'identification des comptes compromis en fonction de l'emplacement de connexion. Compte tenu de la nature collaborative du développement d’applications, cela laisse beaucoup de place à l’introduction accidentelle de vulnérabilités. Les procédures de sécurité de GitHub aident à la fois à arrêter et à atténuer les dégâts des attaques liées à GitHub.
Que se passe-t-il si mon compte GitHub est compromis ?
Les attaques peuvent toutes avoir des résultats différents selon l’objectif de l’attaquant. Dans de nombreux cas, les attaquants souhaitent soit voler votre code, détourner les informations d’identification de votre application ou injecter leurs portes dérobées malveillantes dans votre base de code.
Une stratégie récente des cybercriminels consiste à voler le code et à supprimer tous les commits. Cela laisse votre référentiel GitHub essentiellement vide. L'attaquant atteint ensuite une adresse Bitcoin exigeant un paiement en échange du retour de votre code.
Certaines attaques peuvent être plus subtiles que d’autres. Par exemple, les attaquants peuvent lentement voler du code avec un compte GitHub compromis et l'implémenter dans leurs outils. Dans certains cas, les informations d'identification privilégiées sont volées et utilisées pour envoyer du spam ou des logiciels malveillants depuis votre application à ses utilisateurs.
En tout cas, rien de tout cela n’est bon. Jetons donc un coup d'œil aux stratégies que vous pouvez utiliser pour améliorer votre sécurité GitHub.
Comment améliorer votre sécurité GitHub
Bien que la plupart des techniques de sécurité de GitHub impliquent des modifications sur GitHub lui-même, certaines incluent des politiques et des procédures en dehors de la plateforme. La mise en œuvre et l'audit complets de ces politiques peuvent prendre du temps, surtout si vous travaillez avec une équipe de développement plus importante.
Rendez vos informations d'identification GitHub uniques
Il va sans dire que vos informations d'identification GitHub doivent être uniques et n'inclure aucune forme d'informations d'identification utilisées ailleurs. Malheureusement, de nombreuses attaques contre les comptes GitHub exploitent encore des informations d’identification de compte volées ailleurs.
Lorsque les sites Web sont compromis, leurs données sont souvent vidées ou vendues en ligne. Ensuite, les attaquants utilisent des robots pour passer au crible les noms d’utilisateur et les mots de passe volés et les essayer sur d’autres sites, dans l’espoir d’avoir de la chance.
Utilisez des informations d'identification uniques combinées à une authentification à deux facteurs pour verrouiller votre compte.
Avoir une copie locale de votre référentiel
Avoir plusieurs sauvegardes de votre référentiel est essentiel pour récupérer après une violation ou un vol de données. Par exemple, disposer d'une sauvegarde locale de votre code peut vous permettre de récupérer rapidement après une attaque en poussant de force votre copie locale vers votre référentiel GitHub.
Cela vous fait gagner du temps en éliminant le besoin d’auditer votre code et en conservant complètement les projets s’ils sont détenus contre rançon. De plus, même si vous pouvez utiliser de nombreux outils et techniques pour comparer votre code local à votre code GitHub, exécuter une récupération locale est souvent plus accessible et plus efficace.
Évitez de stocker les mots de passe sous forme de code
Avid de stocker les informations d'identification dans votre référentiel. Cela peut paraître évident, mais les projets plus importants peuvent souvent contenir des informations sensibles incluses accidentellement.
Il existe d'excellents outils que vous pouvez utiliser pour analyser automatiquement votre code à la recherche de données sensibles. Git-secrets analyse vos commits et vérifie les informations d'identification et autres formes de données sensibles. Vous pouvez également auditer vos rapports avec des outils tels que GitRob , qui utilise la correspondance de modèles pour identifier les informations sensibles et la reconnaissance de modèles.
Mettez en œuvre des politiques strictes au sein de votre équipe de développement et effectuez des audits réguliers de votre code pour les noms d'utilisateur, les mots de passe et autres informations sensibles avant que les validations ne soient poussées. Des politiques internes solides combinées à des outils tels que git-secrets peuvent contribuer à améliorer le flux de travail de vos équipes et la sécurité globale de votre environnement GitHub.
Verrouiller l'accès à votre référentiel
Le verrouillage de l’accès comporte de nombreux niveaux différents et est mieux mis en œuvre au moyen de politiques et de procédures au fil du temps. Vous pouvez disposer d'un ensemble unique d'informations d'identification pour votre compte GitHub, mais cela ne sert à rien si ces informations d'identification sont notées sur votre moniteur. Nous nous précipitons souvent pour corriger des vecteurs d’attaque complexes sans voir les opportunités les plus simples pour les attaquants ou les abus internes.
La mise en place de contrôles stricts de sécurité des comptes peut aider à prévenir les violations qui commencent au sein de l’entreprise. Par exemple, intégrez la révocation de l’accès au compte au processus de résiliation. Les comptes GitHub sont toujours accessibles, même lorsque cet utilisateur quitte l'entreprise. La création de procédures similaires pour tous les systèmes informatiques s’inscrit dans la lignée des bonnes pratiques.
Les comptes GitHub ne doivent pas être partagés et doivent être génériques, par exemple avoir un seul compte pour toute l'équipe d'assurance qualité. Le partage de mots de passe entraîne de nombreux problèmes, notamment en matière d'audit. Les comptes partagés créent un angle mort dans lequel ce compte ne peut pas être audité de manière adéquate et provoque des problèmes lorsqu'une personne ayant accès à ce compte est résiliée. De plus, chaque compte doit avoir un seul propriétaire.
Les politiques d'accès au matériel peuvent également contribuer à assurer la sécurité de votre référentiel GitHub. Exigez que tout matériel accédant au code source de l’entreprise doit être un ordinateur de l’entreprise ou correctement sécurisé. Cela garantit que les logiciels malveillants ne peuvent pas voler les informations d’identification GitHub sur l’appareil d’un membre du personnel.
Les ordinateurs portables et autres tablettes peuvent également être facilement perdus ou volés. Si ces appareils accèdent à votre base de code, assurez-vous qu'ils sont correctement sécurisés. L'activation de Bitlocker sur les appareils Windows crypte automatiquement tout le contenu de l'appareil, fournissant des informations qui ne peuvent pas être volées en cas de perte de l'appareil.
Les appareils de l'entreprise peuvent être sécurisés plus facilement grâce aux stratégies de groupe, à l'authentification Active Directory et à votre type de sécurité des points finaux. Toutes ces politiques de sécurité plus mineures jouent un rôle important dans votre posture de sécurité globale sur GitHub.
Validez les autorisations sur votre application
Les applications GitHub peuvent ajouter rapidement et facilement des fonctionnalités supplémentaires à votre référentiel, mais ces mêmes applications peuvent provoquer une faille de sécurité. Évitez d’ajouter trop d’applications inutiles à votre référentiel et vérifiez soigneusement chaque installation.
Vérifiez l'auteur de la demande et sa crédibilité. Sont-ils largement utilisés parmi d’autres projets ? Sont-ils dans l’espace depuis un moment ? Ont-ils des critiques ou des commentaires négatifs à leur sujet ?
Pour chaque application, vérifiez exactement les autorisations dont elle a besoin et assurez-vous qu’elle ne dispose pas de plus d’autorisations que nécessaire. Par exemple, des plugins et des applications bâclés peuvent demander un accès groupé pour fonctionner mais n'ont besoin que d'une autorisation étroite pour fonctionner dans la réalité.
Une fois que vous avez déterminé exactement les autorisations dont l'application a besoin, réfléchissez en premier lieu à la raison pour laquelle elle a besoin de ces autorisations. Examinez ce à quoi cette application pourrait accéder ou endommager compte tenu de son niveau d’accès à votre référentiel.
Rotation des clés d'authentification
L'accès à votre référentiel peut être sécurisé via des jetons d'accès personnels ou des clés SSH. Mais tout cela est vain si ces jetons sont volés. Pensez donc à changer vos clés de sécurité de temps en temps pour éviter que des clés volées ne soient utilisées pour un accès non autorisé.
D'autres politiques, telles que l'application des appareils de l'entreprise pour l'accès à GitHub, peuvent également contribuer à empêcher le vol de clés. Cependant, même avec des politiques rigides en place, il est toujours préférable d’actualiser ces clés tous les quelques mois.
Utilisez les bonnes solutions GitHub
GitHub propose plusieurs offres de produits différentes qui peuvent être utilisées pour répondre à d'autres besoins organisationnels et de sécurité. Ceci est courant pour les projets qui doivent respecter des réglementations de conformité ou des politiques gouvernementales.
Si la sécurité est la priorité principale, GitHub Enterprise offre aux équipes la possibilité d'exécuter GitHub entièrement sur site. Cela vous donne plus de contrôle sur votre infrastructure et ne place pas votre code dans la ligne de mire des attaquants cherchant à compromettre GitHub,
GitHub propose également désormais des référentiels privés gratuits et illimités avec jusqu'à trois collaborateurs par référentiel. Les référentiels privés détachent les forks publics et vous donnent plus de contrôle sur la visibilité de votre projet.
Collecter les journaux GitHub
Les journaux GitHub constituent une mine d’informations de sécurité qui peuvent indiquer qu’une activité malveillante est en cours. Si votre journalisation n'est pas activée, envisagez de l'activer et de mettre en œuvre un plan pour surveiller son contenu.
Les grandes organisations peuvent mettre en œuvre une solution SIEM telle que SolarWinds Security Event Manager pour analyser et identifier automatiquement les indications de compromission. Ces outils peuvent également être configurés pour déclencher des alertes automatisées et des mesures correctives lorsqu'une menace est découverte, ce qui en fait une solution de sécurité hautement évolutive.
Inclut un fichier SECURITY.md dans votre référentiel
Un fichier SECURITY.md ressemble à un document Lisez-moi, mais sert à décrire les procédures de sécurité. Ce fichier est idéal pour les petits et grands projets et aide les utilisateurs à comprendre comment procéder aux mises à jour et aux pratiques générales de sécurité.
Des informations sur les divulgations de sécurité sont souvent incluses dans la documentation, donnant des informations claires et concises sur la manière dont les vulnérabilités et les bogues peuvent être divulgués et sur les personnes à contacter. Cela permet de garantir que les bons responsables du projet obtiennent les informations correctes concernant leurs rôles.
Des informations de sécurité liées à la configuration sont également incluses pour aider les autres à adapter votre projet à leur environnement unique. Les paramètres par défaut et suggérés sont souvent décrits dans cette section du fichier et les meilleures pratiques de sécurité pour l'application.
Les politiques de mise à jour de sécurité contenues dans le fichier aident les utilisateurs à comprendre comment vous leur diffusez des informations si une vulnérabilité est découverte. Ceci est important, en particulier pour les projets populaires où un bug pourrait affecter des milliers d'utilisateurs qui comptent sur votre application. Il est recommandé de mettre à jour les utilisateurs dès que vous savez qu'un bug a été découvert et de leur expliquer précisément comment ils peuvent recevoir les derniers correctifs de votre part.
Auditez vos configurations Git/GitHub
Les erreurs de configuration peuvent être accidentelles ou intentionnelles, selon la nature de la menace. Pensez à auditer vos configurations GitHub pour vous assurer que les actifs partagés et les comptes d'utilisateurs disposent tous des autorisations appropriées. De plus, des outils automatisés de surveillance de la configuration peuvent être utilisés pour surveiller votre environnement Git. Beaucoup de ces outils exploitent les intégrations SNMP pour collecter des données et surveiller différents environnements.
Tirez parti de l’analyse de code en temps réel
Vous n'avez pas besoin d'attendre que votre code soit terminé pour l'analyser à la recherche de vulnérabilités ou de fuites de données. Des outils tels que CodeQL peuvent collecter des informations au fur et à mesure que le code est saisi dans le référentiel et examiné avant chaque poussée.
Le moteur CodeQL fonctionne en analysant les flux de données via une application pour trouver des vulnérabilités. Cela permet de découvrir des bogues tels que les injections SQL, les exécutions de code à distance et les attaques de scripts intersites.
Rechercher des secrets
L'analyse des secrets fait partie de GitHub Advanced Security et permet de détecter automatiquement les secrets bien connus. Il fonctionne en analysant automatiquement les référentiels qui sont poussés à la recherche d'informations d'identification ou d'autres informations sensibles. Si des secrets sont découverts, le fournisseur du mystère en est informé. Cela leur permet de valider l’inconnu puis de révoquer ou de renouveler l’accès.
Activer les alertes de sécurité pour les actifs critiques
Pour les dépendances et d'autres zones de votre compte GitHub, vous pouvez activer les alertes de sécurité pour votre référentiel. Ceci est bénéfique pour tous les référentiels, mais est particulièrement utile pour les projets plus importants où une vulnérabilité de dépendance ou une panne pourrait entraîner un temps d'arrêt important.
Les alertes de sécurité puisent également dans la base de données nationale sur les vulnérabilités (NVD), qui fournit une source constante d'informations à jour sur les vulnérabilités qui compare votre projet aux dernières vulnérabilités et menaces connues.
Effectuer régulièrement des audits de code/sécurité
Avant d'importer des projets ou des morceaux de code volumineux dans GitHub, envisagez un audit approfondi du code. Bien que cela ne soit pas nécessaire pour les petits projets, les référentiels plus importants doivent auditer les nouvelles importations de code avant de les ajouter.
Conclusion
Il peut être difficile de sécuriser un environnement collaboratif tel que GitHub, mais cela peut devenir une seconde nature avec les procédures et l'état d'esprit appropriés. Alors, par-dessus tout, prenez le temps d’intégrer ces meilleures pratiques dans les politiques et procédures que votre équipe doit suivre.
Cela créera une culture de sécurité au fil du temps et intégrera les meilleures pratiques de sécurité de GitHub au cœur de votre processus de développement d'applications.