Guide de sécurité pour les logiciels open source — Meilleures pratiques pour sécuriser vos projets

Sonya MoissetSonya Moisset
50 min read

Table of contents

Christine Peterson a inventé le terme “open source software” ou OSS en 1998. Elle fait référence à des logiciels qui sont librement disponibles pour toute personne souhaitant les utiliser, les modifier et les distribuer.

Le code source de l’OSS est ouvertement disponible et toute personne ayant les compétences techniques nécessaires peut le modifier. Cela permet à une communauté de développeurs de collaborer et de contribuer au développement et à l’amélioration des logiciels.

Cela distingue l’OSS des logiciels propriétaires ou à code source fermé, où le code source n’est pas facilement disponible.

L’OSS est souvent développé et maintenu par une communauté de bénévoles et est généralement distribué sous une licence open source spécifique qui définit les conditions d’utilisation et de distribution. Des exemples d’OSS incluent le système d’exploitation Linux, le serveur web Apache et le langage de programmation Python.

L’un des principaux avantages de l’OSS est qu’il donne aux utilisateurs plus de contrôle sur le logiciel qu’ils utilisent car ils peuvent examiner le code.

De plus, il est considéré comme plus stable et plus sûr que les logiciels propriétaires. Cela s’explique par le fait qu’il suit des normes ouvertes, ce qui rend moins probable sa disparition si ses mainteneurs cessent de travailler dessus.

L’OSS dispose également d’une communauté d’utilisateurs et de développeurs qui peuvent aider à identifier et à résoudre tout problème. Néanmoins, il présente ses propres défis en matière de sécurité.

Attaques de logiciels open source

Dans cette section, nous examinerons certaines des attaques les plus courantes contre les logiciels open source.

Attaques de typosquatting

Le typosquatting, également connu sous le nom de détournement d’URL, est une forme d’attaque cybernétique dans laquelle un attaquant enregistre un nom de domaine similaire à celui d’un site web bien connu, mais avec une légère faute de frappe. L’attaquant crée ensuite une fausse version du site Web d’origine dans le but de tromper les utilisateurs pour qu’ils saisissent leurs informations personnelles, telles que des mots de passe ou des numéros de carte de crédit.

Par exemple, si un site Web populaire est www.example.com, un typosquatteur peut enregistrer www.examplle.com, dans l’espoir que les utilisateurs taperont accidentellement la mauvaise URL et se retrouveront sur le faux site Web. Le faux site peut ressembler à l’original, ce qui rend difficile pour les utilisateurs de réaliser qu’ils ont été redirigés vers un site différent.

Les attaques de typosquatting peuvent également avoir lieu dans l’OSS où des acteurs malveillants poussent des paquets malveillants vers un registre dans l’espoir de tromper les utilisateurs pour qu’ils les installent.

Voici un exemple avec le package react avec une faute de frappe. Dans ce cas, vous n’installerez pas React, mais potentiellement un package malveillant qui a un objectif final complètement différent.

Apprenez-en davantage sur les attaques de typosquatting ici.

Nous avons vu ces types de packages dans les registres PyPi et npm, le plus notable d’entre eux étant crossenv.

Le package crossenv a pris un nom similaire au package populaire cross-env et a enveloppé la même fonctionnalité, sauf qu’il a également capturé des variables d’environnement et les a envoyées à un serveur distant contrôlé par un attaquant.

En savoir plus sur crossenv ici.

Le typosquatting peut avoir des conséquences graves, notamment le vol d’identité, la fraude financière et la propagation de logiciels malveillants.

Pour éviter de tomber victime du typosquatting, il est important de scanner soigneusement les packages de votre code avec des outils de sécurité et de les importer à partir de sources connues.

Packages malveillants

Les packages malveillants, également connus sous le nom de logiciels malveillants, sont des packages conçus intentionnellement pour nuire ou exploiter les systèmes informatiques. Ils sont souvent distribués par divers moyens, tels que des pièces jointes d’e-mail, des sites Web malveillants ou des téléchargements de logiciels infectés.

Une fois que les packages malveillants sont installés sur un ordinateur, ils peuvent causer une variété de problèmes. Le principal serait le vol de données où l’attaquant peut accéder à des informations sensibles, telles que des mots de passe, des numéros de carte de crédit ou des fichiers personnels.

Il y a également des cas de perturbation du système où le logiciel malveillant peut endommager ou supprimer des fichiers système importants, ralentissant l’ordinateur ou le rendant inutilisable. L’attaquant peut également utiliser le logiciel malveillant pour espionner ou surveiller les activités de la victime, y compris les frappes de clavier, les courriels et la navigation sur le web. Et il peut se propager ou pivoter, où le logiciel malveillant peut se propager à d’autres ordinateurs sur le même réseau, causant ainsi des dommages supplémentaires.

Voici un exemple avec le paquet malveillant fallguys. Les attaquants surfent généralement sur les tendances et ce jeu a été assez populaire pendant la pandémie. Les joueurs pourraient penser qu’en téléchargeant ce paquet, ils pourraient obtenir un avantage dans le jeu.

En savoir plus sur fallguys ici.

Malheureusement pour eux, ce paquet contient du code malveillant qui tenterait de lire des fichiers sensibles locaux et d’exfiltrer des informations via un webhook Discord. Le code accédait à des chemins spécifiques disponibles sur les systèmes Windows situés à /AppData/Local/Google/Chrome/User Data/Default/Local Storage/leveldb.

Il est important de prendre des mesures pour protéger votre ordinateur contre les paquets malveillants, comme maintenir votre système d’exploitation et vos logiciels à jour.

Si vous soupçonnez que votre ordinateur a été infecté par un logiciel malveillant, vous devez agir rapidement pour minimiser les dommages et empêcher la propagation de l’infection.

Mainteneurs GitHub compromis

Les mainteneurs GitHub compromis font référence aux personnes responsables de la maintenance de projets de logiciels libres hébergés sur GitHub, qui ont vu leurs comptes piratés ou pris en charge par des attaquants.

Cela peut se produire lorsque les informations d’identification du compte GitHub du mainteneur, telles que leur nom d’utilisateur et leur mot de passe, sont obtenues par un attaquant par le biais de moyens tels que des attaques de phishing, la réutilisation de mots de passe ou en étant victime d’ingénierie sociale sur GitHub.

Une fois que l’attaquant a le contrôle du compte d’un mainteneur, il peut effectuer diverses actions malveillantes.

Ils peuvent publier des paquets malveillants où un attaquant peut publier de nouveaux paquets ou des mises à jour de paquets existants contenant des logiciels malveillants, infectant potentiellement les utilisateurs qui les téléchargent et les installent.

Ils peuvent propager des logiciels malveillants où un attaquant peut utiliser le compte compromis pour propager des logiciels malveillants à d’autres utilisateurs ou organisations, soit par le biais du référentiel lui-même, soit par d’autres moyens, tels que des e-mails de phishing.

Ils peuvent également altérer le code où un attaquant peut apporter des modifications au code du référentiel, introduisant des vulnérabilités ou des portes dérobées qui peuvent être utilisées pour une exploitation ultérieure.

Dans cet exemple avec le paquet event-stream, l’attaquant a parcouru toutes les questions sur le référentiel pour chercher des fonctionnalités auxquelles il pourrait contribuer. Il a commencé à gagner la confiance du mainteneur et des autres contributeurs en poussant d’abord des changements cosmétiques. Puis, quand il a obtenu plus de permissions, il a poussé sa charge utile malveillante dans la base de code qui ciblait un portefeuille Bitcoin.

En savoir plus à propos de cette attaque ici.

Les mainteneurs de GitHub compromis constituent une menace sérieuse pour la sécurité et la stabilité de l’écosystème du logiciel open source. Il est important que les mainteneurs prennent des mesures pour protéger leurs comptes et surveiller leurs référentiels pour détecter toute activité suspecte.

Cela peut inclure l’utilisation de mots de passe forts et uniques, l’activation de l’authentification à deux facteurs et la vérification régulière de l’activité dans leurs référentiels pour tout changement inhabituel ou non autorisé.

Le Protestware

Le protestware fait référence à un logiciel ou à une technologie utilisé comme forme de protestation ou d’activisme politique. Il est conçu pour remettre en question ou perturber les systèmes, les politiques ou les pratiques jugés injustes ou nuisibles.

L’utilisation de protestware est controversée et peut avoir des conséquences légales, car elle implique souvent des actes illégaux ou contraires à l’éthique, tels que le piratage, l’accès non autorisé ou la perturbation des services. De plus, cela peut avoir des conséquences involontaires, telles que causer du tort à des parties innocentes ou compromettre la sécurité des utilisateurs du logiciel.

Si vous voulez en savoir plus sur le protestware, vous pouvez lire cet article.

Attaques de la chaîne d’approvisionnement logiciel

Une attaque de la chaîne d’approvisionnement est lorsqu’un tiers qui a accès aux données et aux systèmes d’une organisation est utilisé pour infiltrer l’infrastructure numérique de l’organisation.

Une vulnérabilité peut être introduite à n’importe quel point de la chaîne d’approvisionnement, y compris la conception, le développement, la fabrication, la distribution ou la livraison d’un produit ou service.

Par exemple, un attaquant peut compromettre un fournisseur de logiciels qui fournit des composants logiciels utilisés par de nombreuses organisations, ou altérer des composants matériels lors de la fabrication ou de l’expédition. L’attaquant peut alors utiliser la compromission pour propager des logiciels malveillants ou exfiltrer des données sensibles des systèmes de la cible.

La nature ouverte des logiciels open source les rend vulnérables aux attaques de la chaîne d’approvisionnement. Dans le cas d’initiatives open source, des acteurs malveillants peuvent introduire des vulnérabilités dans les logiciels produits, ce qui facilite la propagation de nouvelles menaces aux entreprises qui utilisent ces logiciels.

Une vulnérabilité peut être introduite à n’importe quel moment dans la chaîne d’approvisionnement.

Dans une attaque de chaîne d’approvisionnement logicielle, les attaquants utilisent du code malveillant pour compromettre un «composant amont» de la chaîne dans le but final de compromettre la cible de l’attaque: le «composant aval».

La compromission du composant amont n’est pas l’objectif final — c’est une opportunité pour les attaquants de compromettre la cible de l’attaque en insérant un logiciel malveillant ou en fournissant une porte dérobée pour un accès ultérieur.

Cela ne concerne pas uniquement les packages JavaScript, comme nous l’avons vu avec quelques exemples dans la section des attaques open source. Il s’agit d’un problème pour tous les écosystèmes.

Nous avons eu un excellent exemple avec la vulnérabilité Log4j en 2021. Si vous souhaitez en savoir plus sur cette vulnérabilité, consultez ces ressources.

L’une des exploitations de Log4j permet l’exécution de code à distance sur les serveurs exécutant des applications vulnérables sans nécessiter d’authentification. Cela a valu à la vulnérabilité une note de gravité de 10 sur l’échelle CVSS (Common Vulnerability Scoring System).

En savoir plus sur RCE ici.

Log4j est utilisé dans de nombreuses applications commerciales, et les organisations pourraient être vulnérables sans savoir qu’elles utilisent en réalité la bibliothèque de logging.

Pour atténuer le risque d’attaques de la chaîne d’approvisionnement, les organisations devraient mettre en place des mesures de sécurité tout au long de leur chaîne d’approvisionnement, y compris en effectuant des vérifications de sécurité sur les fournisseurs, en mettant en œuvre des processus de signature de code et de démarrage sécurisé, et en surveillant régulièrement leurs systèmes pour détecter les signes de compromission.

En outre, il est important de maintenir à jour les composants logiciels et matériels avec les derniers correctifs et mises à jour de sécurité pour réduire le risque d’exploitation. Pourquoi les attaques de la chaîne d’approvisionnement logicielle sont-elles attractives pour les pirates informatiques ?

Pourquoi les attaques de la chaîne d’approvisionnement logicielle sont-elles attractives pour les hackers ?

Les attaques de la chaîne d’approvisionnement logicielle sont attractives pour les hackers pour plusieurs raisons.

Tout d’abord, en ciblant une vulnérabilité dans la chaîne d’approvisionnement, l’attaquant peut potentiellement compromettre de nombreuses organisations et leurs clients, plutôt qu’une seule cible. Cela permet à l’attaquant d’élargir son impact et de voler potentiellement de grandes quantités de données sensibles ou de causer des dommages importants.

Les attaques de la chaîne d’approvisionnement logicielle sont difficiles à détecter car elles impliquent souvent la manipulation de produits ou de composants logiciels avant qu’ils n’atteignent l’organisation cible. Cela peut rendre difficile pour la cible de détecter l’attaque, en particulier si l’attaquant est capable de maintenir l’accès aux systèmes compromis pendant une période prolongée.

De plus, les organisations ont souvent confiance dans les produits et services fournis par leurs fournisseurs, ce qui facilite l’exploitation de cette confiance par l’attaquant pour mener à bien l’attaque. De plus, les mesures de sécurité peuvent ne pas être aussi strictes pour les fournisseurs ou les vendeurs tiers, ce qui facilite la compromission de ces systèmes par l’attaquant.

Enfin, les informations et les systèmes des organisations sont souvent des cibles précieuses pour les attaquants, en particulier s’ils contiennent des informations sensibles telles que la propriété intellectuelle, les données financières ou les informations personnelles. En compromettant la chaîne d’approvisionnement, l’attaquant peut accéder à ces actifs précieux.

Pourquoi la sécurité des applications est-elle importante ?

Les applications stockent et traitent souvent des informations sensibles, telles que des données personnelles, des informations financières et des propriétés intellectuelles. Assurer la sécurité de ces applications est essentiel pour protéger ces informations sensibles contre le vol, la manipulation ou l’accès non autorisé.

De plus, les applications sont essentielles pour les opérations quotidiennes de la plupart des organisations, et une violation de sécurité dans une application peut causer des perturbations significatives dans les opérations commerciales et des pertes financières. En mettant en œuvre des mesures de sécurité robustes pour les applications, les organisations peuvent contribuer à assurer la disponibilité et la stabilité de leurs applications et maintenir la continuité des activités face aux menaces de sécurité.

Nous savons qu’une violation de sécurité dans une application peut nuire à la réputation d’une organisation, causant des dommages à sa marque et une perte de confiance de la clientèle. En investissant dans la sécurité des applications, les organisations peuvent protéger leur réputation et renforcer la confiance des clients.

De plus, de nombreux secteurs et organisations sont soumis à des réglementations qui leur imposent de mettre en œuvre des mesures de sécurité robustes pour leurs applications et de protéger les informations sensibles. Ne pas se conformer à ces réglementations peut entraîner des sanctions légales et des pertes financières.

Enfin, une violation de sécurité dans une application peut entraîner des pertes financières pour l’organisation, telles que le coût des mesures correctives, les frais juridiques et la perte d’activité en raison de dommages à la réputation. La mise en place de mesures de sécurité robustes pour les applications peut aider à prévenir ces pertes financières et à protéger le résultat net de l’organisation.

Qu’est-ce que la sécurité des applications web ?

La sécurité des applications Web fait référence aux mesures et pratiques prises pour sécuriser les sites Web et les applications Web contre diverses menaces de sécurité.

Cela implique la mise en place d’une gamme de mesures de sécurité, notamment des contrôles d’accès, l’authentification et l’autorisation, le chiffrement, la validation des entrées, et plus encore. Ces mesures sont mises en œuvre tout au long du cycle de vie du développement logiciel (SDLC) pour identifier et corriger les vulnérabilités de sécurité.

L’objectif de la sécurité des applications Web est de garantir que les données et les systèmes accessibles par les applications Web sont protégés contre l’accès non autorisé, la manipulation et la destruction.

Un exemple de pipeline SDLC.

Dans ce flux de travail, nous pouvons mettre en place des garde-fous de sécurité à chaque étape de notre pipeline.

À l’étape de codage, nous pourrions avoir un outil de sécurité intégré dans notre IDE ou utiliser la CLI pour analyser notre code et nos packages. Nous pourrions déclencher des analyses au niveau du référentiel ou les intégrer à notre pipeline CI/CD pour nous assurer que nous testons notre code. Les registres peuvent également être surveillés pour nous assurer que nous récupérons des packages ou des images non vulnérables.

Sécuriser votre SDLC est crucial.

Les organisations telles que l’OWASP (Open Worldwide Application Security Project) suivent les vulnérabilités trouvées et fournissent une liste que les développeurs et les équipes de sécurité peuvent utiliser comme point de départ pour leur programme de sécurité des applications.

La liste OWASP Top 10 la plus récente a été publiée en 2021 et inclut des vulnérabilités telles que le contrôle d’accès cassé, les attaques par injection, les configurations de sécurité mal effectuées et plus encore.

Parcourir la liste des 10 principales vulnérabilités OWASP ici.

L’analogie de l’Iceberg

L’analogie de l’”Iceberg” est souvent utilisée pour décrire les couches d’une application moderne, y compris le code d’application, les bibliothèques open source, les conteneurs et l’infrastructure en tant que code.

L’analogie est basée sur l’idée que — tout comme un iceberg, qui a seulement une petite partie visible au-dessus de l’eau tandis que la plupart se trouve sous la surface — les applications modernes ont de nombreuses couches qui ne sont pas immédiatement visibles mais sont essentielles à leur fonctionnement.

Le profil de risque des applications modernes avec une surface d’attaque plus grande.

Au sommet de l’iceberg, nous avons le code d’application visible, qui est le code que les développeurs écrivent pour créer la fonctionnalité de l’application. Mais sous la surface, il y a de nombreuses couches qui ne sont pas immédiatement visibles mais sont essentielles au fonctionnement de l’application.

La première couche sous la surface est celle des bibliothèques open source, qui sont souvent utilisées par les développeurs pour gagner du temps et augmenter la productivité. Ces bibliothèques contiennent du code qui a été écrit par d’autres développeurs et peuvent être utilisées pour effectuer des tâches courantes, telles que la gestion des requêtes HTTP ou des bases de données.

La couche suivante est celle des conteneurs, qui sont utilisés pour empaqueter et déployer des applications de manière cohérente et efficace. Les conteneurs sont utilisés pour isoler l’application du système hôte et fournir un environnement standardisé pour exécuter l’application.

Enfin, au bas de l’iceberg, nous avons l’infrastructure en tant que code, qui fait référence au code utilisé pour automatiser le déploiement et la gestion de l’infrastructure qui prend en charge l’application. Cela inclut des ressources telles que des machines virtuelles, des réseaux et du stockage.

L’analogie de l’iceberg met en évidence la complexité des applications modernes et l’importance de adopter une approche holistique pour les sécuriser.

Pour garantir que l’application est sécurisée, vous devrez considérer et sécuriser toutes ces couches, y compris le code de l’application, les bibliothèques open source, les conteneurs et l’infrastructure en tant que code.

Comment implémenter le SDLC dans les projets open source

La sécurité des applications Web est un aspect crucial pour garantir la sécurité d’un projet. Cela implique de mettre en place des mesures de sécurité tout au long du cycle de vie du développement logiciel (SDLC) pour identifier et traiter les vulnérabilités de sécurité dans le projet et sa configuration.

Une façon de sécuriser votre projet open source est d’utiliser les outils et les applications de sécurité disponibles sur le GitHub Marketplace. Cela peut également s’appliquer à vos projets personnels que vous souhaitez présenter lors d’un entretien d’embauche!

Cela permettra d’obtenir le même niveau de protection que pour un projet propriétaire.

GitHub Marketplace

Le GitHub Marketplace a été introduit en 2016 et offre aux développeurs une plateforme pour trouver et intégrer des outils dans leurs flux de travail. Il offre une large gamme de produits et de services, notamment:

  1. Outils de révision et d’analyse de code: Outils pour automatiser la révision de code, analyser la qualité du code et vérifier les vulnérabilités de sécurité.

  2. Outils d’intégration et de déploiement continu: Outils pour automatiser la construction, les tests et le déploiement de code vers des environnements de production.

  3. Outils de gestion de projet: Outils pour suivre la progression du projet, gérer les tâches et collaborer avec d’autres membres d’une équipe de développement.

  4. Outils de communauté et de communication: Outils pour améliorer la communication et la collaboration au sein d’une équipe de développement et avec la communauté élargie.

  5. Outils de surveillance et de performance: Outils pour surveiller les performances et la disponibilité du code dans les environnements de production.

  6. Outils de conformité et de sécurité: Outils pour assurer la conformité aux réglementations et normes de l’industrie, et pour améliorer la sécurité du code.

  7. Éducation et formation: Cours et ressources pour apprendre à connaître GitHub, le développement logiciel et les technologies connexes.

GitHub Marketplace propose plus de 10 000 actions !

Le Marketplace est conçu pour faciliter la découverte et l’intégration d’outils dans le flux de travail des développeurs, ce qui simplifie le processus de développement et augmente l’efficacité.

De nombreux outils et services disponibles dans le Marketplace sont créés par des développeurs tiers et sont conçus pour fonctionner parfaitement avec GitHub. Cela permet aux développeurs de gérer leur code et leurs projets de manière plus efficace.

Comment utiliser les applications et actions GitHub sur le GitHub Marketplace

Le processus d’utilisation d’une application ou d’une action sur le GitHub Marketplace peut varier en fonction de l’outil spécifique. Vous pouvez parcourir le GitHub Marketplace pour trouver des applications et des actions qui répondent à vos besoins. Une fois que vous en trouvez une que vous voulez utiliser, cliquez dessus pour en savoir plus à son sujet.

Selon l’application ou l’action, il existe plusieurs façons de l’utiliser. Certaines peuvent nécessiter une installation ou une configuration, tandis que d’autres peuvent être utilisées immédiatement.

https://github.com/marketplace/snyk

L’application ou l’action sera livrée avec des instructions sur la façon de l’utiliser. Vous pouvez généralement les trouver sur la page de l’application ou de l’action dans le Marketplace ou dans la documentation.

En tant que responsable d’un projet, vous vérifierez si cet outil convient à votre base de code. Nous pouvons voir si GitHub a vérifié l’application, les langages pris en charge, une description de l’outil et plus d’informations sur l’organisation.

Lorsque vous faites défiler la page du produit, vous devriez voir la section Prix et configuration. Presque tous les outils et actions disponibles sur le GitHub Marketplace ont un plan gratuit pour les dépôts publics et les projets open source.

Lorsque vous cliquez sur le bouton vert, Install for free, vous pouvez passer en revue la commande.

Ce qu’il faut considérer lors de la sélection d’outils ou d’applications

Lors de la sélection d’outils ou d’applications, il est important de prendre en compte des facteurs tels que la pile technologique utilisée, le nombre d’étapes dans le pipeline, et si vous pouvez mettre en place des garde-fous à chaque étape.

Vous pouvez également considérer l’objectif de l’outil et si il possède les fonctionnalités dont vous avez besoin pour répondre à vos exigences. Certains outils peuvent avoir une large gamme de fonctionnalités, tandis que d’autres peuvent être plus spécialisés pour des cas d’utilisation spécifiques.

Vérifiez si l’outil est compatible avec votre pile de développement et votre environnement. Cela inclut la compatibilité avec les langages de programmation, les frameworks, les systèmes d’exploitation et autres outils que vous utilisez déjà.

Cherchez également des outils qui disposent d’une documentation complète, de tutoriels et de ressources de support disponibles. Cela peut vous aider à démarrer rapidement avec l’outil, et à résoudre les problèmes que vous pourriez rencontrer.

Vous pouvez vérifier les avis d’utilisateurs de l’outil pour voir ce que les autres ont expérimenté. Cela peut vous donner une idée des forces et des faiblesses de l’outil, ainsi que de sa qualité globale.

Enfin, n’oubliez pas de prendre en compte les implications de sécurité de l’outil, surtout s’il aura accès à des données ou systèmes sensibles. Cherchez des outils qui ont été audités indépendamment pour les vulnérabilités de sécurité et qui ont des pratiques de sécurité solides en place.

En prenant en compte ces facteurs, vous pouvez prendre une décision éclairée lors de la sélection d’une application ou d’un outil à partir du GitHub Marketplace.

Mais surtout,

Comment utiliser le GitHub Marketplace pour atténuer les risques dans votre projet open source

Vous pouvez exploiter les applications et actions de sécurité disponibles sur le GitHub Marketplace pour sécuriser votre pipeline à chaque étape de votre cycle de développement logiciel.

Identifiez les exigences de sécurité pour votre cycle de développement logiciel, telles que les outils de sécurité dont vous avez besoin et quand vous en avez besoin. Cela vous aidera à sélectionner les applications et actions de sécurité appropriées.

Ensuite, intégrez les outils de sécurité dans votre pipeline pour identifier les vulnérabilités et les problèmes de sécurité à chaque étape du cycle de vie du logiciel. Par exemple, vous pouvez utiliser un outil de balayage de code pour détecter les problèmes de sécurité dans votre code, ou un outil de balayage de conteneur pour identifier les vulnérabilités dans vos conteneurs.

Assurez-vous d’automatiser les vérifications de sécurité pour garantir que les problèmes de sécurité sont détectés dès que possible dans le processus de développement. Cela peut contribuer à réduire le risque d’introduction de problèmes de sécurité dans la base de code.

Vous pouvez également configurer des politiques de sécurité pour vous assurer que votre équipe de développement suit des pratiques de codage sécurisées et respecte les exigences de conformité. Cela peut inclure l’application de l’utilisation de bibliothèques et de frameworks spécifiques, ou la vérification et les procédures de test de code sécurisées obligatoires.

N’oubliez pas de surveiller et de gérer les alertes de sécurité pour vous assurer que les vulnérabilités et les problèmes de sécurité sont traités en temps opportun. Cela peut inclure la mise en place de notifications pour les alertes de sécurité, la priorisation des vulnérabilités et le suivi de la progression de la résolution.

Si vous ne savez pas par où commencer, vous pouvez envisager de construire un pipeline de base qui comprendrait :

  • un outil d’analyse de composition logicielle pour se concentrer sur l’identification des logiciels libres dans une base de code afin que les mainteneurs et les contributeurs puissent gérer leur exposition aux problèmes de sécurité et de conformité des licences.

  • un outil pour prévenir la prolifération de secrets, qui est la distribution non désirée de secrets tels que des clés API et des identifiants à travers plusieurs systèmes.

  • un outil pour couvrir l’analyse de code statique, qui est une méthode de débogage en examinant le code source avant l’exécution d’un programme où il analyse un ensemble de code par rapport à un ensemble de règles de codage.

L’analyse de composition logicielle

L’analyse de composition logicielle (SCA) est le processus d’identification et d’analyse des différents composants, bibliothèques et dépendances qui constituent une application logicielle.

L’objectif de la SCA est d’identifier les vulnérabilités connues ou les risques de sécurité dans les composants utilisés dans le logiciel et de veiller à ce que le logiciel soit construit à l’aide de composants sécurisés et à jour.

La SCA est une étape importante du processus de développement logiciel, car elle contribue à garantir que le logiciel est exempt de vulnérabilités que les attaquants pourraient exploiter.

Vous effectuez généralement une SCA à des intervalles réguliers tout au long du cycle de développement, et c’est un aspect important des pratiques de développement de logiciels sécurisés (comme le cycle de développement de logiciels sécurisés).

Les outils et services SCA peuvent scanner le logiciel et ses composants, les comparant à une base de données de vulnérabilités et de risques de sécurité connus. Vous pouvez ensuite utiliser les résultats de l’analyse pour identifier et résoudre tout problème de sécurité, tel que des composants obsolètes ou des composants présentant des vulnérabilités connues, avant qu’ils ne puissent être exploités par des attaquants.

Analyse de la composition logicielle avec Renovate

Mend Renovate est un outil open source pour automatiser la gestion des dépendances dans un projet logiciel.

Comme d’autres outils de gestion de dépendances, il aide à maintenir à jour les dépendances d’un projet, réduisant ainsi le risque de vulnérabilités de sécurité et d’autres problèmes liés à des dépendances obsolètes.

https://github.com/marketplace/renovate

Voici un exemple de demande de fusion (pull request) créée par Renovate. La demande de fusion contiendra toutes les informations nécessaires sur la version du package, les notes de version et les éventuels changements de rupture avant la fusion.

Analyse de composition logicielle avec Dependabot

Dependabot est un service proposé par GitHub qui automatise le processus de mise à jour des dépendances d’un projet logiciel. Il aide les développeurs à maintenir leurs dépendances à jour, réduisant ainsi le risque de vulnérabilités de sécurité et d’autres problèmes associés aux dépendances obsolètes.

Dependabot surveille les dépendances d’un projet et envoie des demandes de fusion pour les mettre à jour lorsqu’une nouvelle version est disponible. Les demandes de fusion comprennent des informations détaillées sur les mises à jour, telles que le numéro de version de la nouvelle version, un résumé des changements et un lien vers les notes de version. Ces informations aident les développeurs à évaluer rapidement l’impact de la mise à jour et à décider s’ils doivent la fusionner dans leur code source.

Pull Request Dependabot

Analyse de composition logicielle avec Snyk

Snyk est un outil de sécurité pour les dépendances de logiciels open source. Il aide les développeurs à identifier et à corriger les vulnérabilités de leurs dépendances, ainsi qu’à surveiller leurs projets pour détecter de nouveaux problèmes de sécurité.

Snyk s’intègre à des plateformes de développement populaires telles que GitHub et GitLab. Il fournit aux développeurs des informations sur la sécurité de leurs dépendances, notamment la gravité des vulnérabilités, leur date de découverte et ce qu’il faut faire pour les corriger. L’outil fournit également des correctifs de sécurité automatisés, que vous pouvez facilement appliquer pour corriger les vulnérabilités connues.

Snyk prend en charge un large éventail de langages de programmation et de gestionnaires de packages, ce qui en fait une solution polyvalente pour sécuriser les dépendances de logiciels open source. Il fournit également des rapports et des analyses détaillés, aidant les développeurs à comprendre la posture de sécurité de leurs projets et à prendre des mesures pour résoudre les vulnérabilités de sécurité.

Pull Request Snyk

Si vous voulez en savoir plus sur les vulnérabilités, vous pouvez explorer la base de données de vulnérabilités de logiciels libres de Snyk. C’est une base de données complète qui fournit des informations sur les vulnérabilités de sécurité connues dans les packages et bibliothèques open source.

Cette base de données est constamment mise à jour avec de nouvelles vulnérabilités et offre aux utilisateurs la possibilité de rechercher des vulnérabilités par nom de package, numéro de version ou vulnérabilité spécifique.

La base de données fournit également des informations sur la gravité de chaque vulnérabilité et offre des conseils de remédiation pour aider les développeurs à traiter les vulnérabilités identifiées dans leur code.

La base de données de vulnérabilités de logiciels libres de Snyk est une ressource précieuse pour les développeurs qui construisent des applications avec des composants open source. Elle peut vous aider à identifier les problèmes de sécurité potentiels et à prendre des mesures pour les prévenir avant qu’ils ne deviennent un problème.

https://security.snyk.io/

Notifications par e-mail pour l’analyse de composition logicielle

Lorsque vous utilisez un outil d’analyse de composition logicielle, les notifications par e-mail peuvent être une fonctionnalité utile pour vous tenir informé des vulnérabilités potentielles dans vos dépendances open source.

Vous pouvez configurer ces notifications pour recevoir des alertes lors de la découverte de nouvelles vulnérabilités, lorsque des vulnérabilités existantes ont été corrigées ou lorsque de nouvelles versions de dépendances sont disponibles pour traiter les problèmes de sécurité.

En activant ces notifications, vous pouvez rapidement identifier et répondre aux menaces potentielles pour la sécurité et rester à jour sur les mises à jour de vos dépendances. Cela vous aide à maintenir la sécurité de vos applications.

Exemples de notifications de Dependabot et Snyk.

Qu’est-ce que la prolifération des secrets ?

La prolifération des secrets fait référence au problème croissant des secrets non contrôlés et non sécurisés dans les projets logiciels.

Les secrets, tels que les clés API, les mots de passe et autres informations sensibles, sont couramment utilisés dans le développement logiciel pour accéder en toute sécurité aux ressources ou protéger les données sensibles. Cependant, les secrets sont souvent stockés sous forme non cryptée dans le code source, les fichiers de configuration et autres artefacts, les rendant vulnérables au vol et à la mauvaise utilisation.

La prolifération des secrets peut survenir lorsque les secrets sont partagés ou dupliqués sur plusieurs systèmes, référentiels et équipes, ce qui rend difficile de les suivre tous et de s’assurer qu’ils sont gérés de manière sécurisée. Cela peut entraîner un éventail de problèmes de sécurité et de conformité, tels que des violations de données, des accès non autorisés et des violations réglementaires.

Pour faire face à la prolifération des secrets, les organisations et les équipes de développement de logiciels doivent mettre en place des stratégies efficaces pour gérer les secrets, telles que le chiffrement des informations sensibles, le stockage des secrets dans un emplacement centralisé sécurisé et la fourniture d’un accès uniquement aux utilisateurs autorisés. Ils doivent également disposer de processus robustes pour garantir que les secrets sont gérés de manière sécurisée tout au long de leur cycle de vie, de leur création à leur suppression.

Exploration de la prolifération des secrets avec GitGuardian

https://github.com/marketplace/gitguardian

GitGuardian est un outil de sécurité qui aide les organisations et les développeurs à identifier et à prévenir les risques de sécurité potentiels dans leurs référentiels de code.

Il fonctionne en analysant en temps réel le code et les fichiers de configuration à la recherche de secrets, tels que des clés API, des informations d’identification et d’autres informations sensibles, qui ont peut-être été accidentellement commises dans un référentiel.

GitGuardian s’intègre à des systèmes de contrôle de version populaires, tels que GitHub et GitLab, et fournit aux développeurs des notifications et des alertes en temps réel lorsqu’il détecte des informations sensibles dans leur code.

L’outil fournit également une analyse détaillée du niveau de risque de chaque violation, y compris le type de secret, sa source et les actions que les développeurs peuvent prendre pour éviter un incident de sécurité.

GitGuardian est conçu pour fonctionner de manière transparente avec le flux de travail de développement, aidant les développeurs à se concentrer sur leur travail tout en garantissant que les informations sensibles sont protégées en permanence.

Il offre une gamme de fonctionnalités de sécurité et de conformité, telles que la rotation automatique des secrets, l’application de la politique et les rapports, ce qui en fait une solution complète pour la gestion de la sécurité des référentiels de code.

Écran avant l’installation de GitGuardian dans votre projet.

Vous pouvez choisir d’installer GitGuardian sur tous les dépôts ou sélectionner quelques dépôts. Je recommande de l’installer sur tous les dépôts. Cela vous donnera une visibilité sur tous les projets que vous avez réalisés et s’il y a des identifiants publics disponibles.

Une fois que vous avez téléchargé vos projets, vous pouvez vérifier sur le tableau de bord quels projets contiennent des secrets.

Tableau de bord GitGuardian.

Il est important de garder à l’esprit que ces outils ont de nombreux points d’intégration. Ici, nous parlons de GitHub, mais vous pouvez également les implémenter sur GitLab ou BitBucket.

Vous pouvez également implémenter ces outils en tant qu’étape supplémentaire dans votre pipeline CI/CD en fonction des outils que vous utilisez, tels que Circle CI, Jenkins, GitHub Actions, Azure pipelines, etc.

Les outils ont généralement de nombreuses intégrations pour vos projets.

Dans ce cas particulier, pour éviter l’étalement des secrets, je recommanderais d’ajouter une intégration de crochet git pré-commit. En incluant une étape pré-commit, les développeurs peuvent analyser les modifications de code pour détecter d’éventuels secrets avant de les valider dans le dépôt.

Analyse de code statique

L’analyse de code statique est une technique utilisée dans le développement de logiciels pour analyser le code sans l’exécuter. L’analyse est effectuée par des outils qui examinent le code et identifient les vulnérabilités de sécurité potentielles, les erreurs de codage et d’autres problèmes qui peuvent avoir une incidence sur la qualité et la stabilité du logiciel.

Les outils d’analyse de code statique utilisent différentes techniques, telles que la correspondance de motifs, l’analyse basée sur des règles et l’analyse de flux de données, pour identifier les problèmes potentiels dans le code. Les résultats de l’analyse sont ensuite présentés au développeur sous forme d’avertissements, d’erreurs ou d’autres notifications, que le développeur peut utiliser pour améliorer la qualité et la sécurité du code.

Vous pouvez utiliser l’analyse de code statique à différentes étapes du cycle de vie de développement de logiciels, de la conception et du développement précoces à la mise en œuvre et au déploiement. Elle peut aider à identifier les vulnérabilités de sécurité, telles que les injections SQL, les scripts intersites (XSS) et les débordements de mémoire tampon, ainsi que les erreurs de codage et les problèmes de performances.

Analyse de code statique avec SonarCloud

SonarCloud est une plateforme basée sur le cloud pour l’analyse continue de la qualité et de la sécurité du code.

SonarCloud s’intègre avec des outils de développement populaires, tels que GitHub et GitLab, et fournit aux développeurs des commentaires en temps réel sur la qualité et la sécurité de leur code.

La plateforme propose une large gamme de fonctionnalités, notamment des métriques de qualité de code, des alertes de sécurité et des rapports de couverture de test, en faisant une solution complète pour la gestion de la qualité et de la sécurité du code.

Vous pouvez choisir entre l’application:

https://github.com/marketplace/sonarcloud

ou l’action GitHub:

https://github.com/marketplace/actions/sonarcloud-scan

Une fois que vous avez importé votre projet, SonarCloud analysera la base de code:

et vous fournira des informations sur la santé de votre projet:

Cela inclut les vulnérabilités de sécurité que vous pouvez filtrer par gravité. L’outil vous informera des vulnérabilités qui posent problème et vous donnera plus de contexte pour les corriger.

Ces outils vous donnent également une cartographie de votre base de code pour la couverture de sorte que vous sachiez quelle partie de votre base de code améliorer (écriture de plus de tests, suppression de code en double et correction de vulnérabilités de sécurité).

Analyse statique de code avec GitHub CodeQL

GitHub CodeQL est un outil d’analyse de code basé sur des requêtes, développé par GitHub, qui aide les développeurs à trouver et à corriger les vulnérabilités dans leur code. Il utilise un langage de requête puissant et flexible, appelé CodeQL, pour rechercher des problèmes de sécurité et d’autres bugs dans les bases de code.

Avec GitHub CodeQL, les développeurs peuvent écrire des requêtes qui identifient des motifs spécifiques de code qui peuvent représenter des vulnérabilités de sécurité ou d’autres problèmes. Les requêtes sont ensuite exécutées contre la base de code et les résultats sont présentés au développeur sous forme d’alertes, de notifications ou d’autres retours d’informations.

Sur votre dépôt, cliquez sur l’onglet Actions et tapez CodeQL dans la barre de recherche pour trouver le flux de travail.

Vous n’avez pas besoin de créer le fichier YAML à partir de zéro. Cliquez sur Configure et vérifiez simplement que les langages de programmation inclus dans le fichier YAML sont corrects.

Ensuite, cliquez sur Start Commit. Maintenant, chaque fois qu’il y a des modifications dans votre base de code via une pull request — comme défini comme déclencheur dans le fichier YAML — l’action CodeQL analysera le code poussé et vous informera s’il y a des vulnérabilités à corriger.

Vous pourrez vérifier la progression du flux de travail sous le même onglet.

Voici un exemple de vulnérabilités trouvées par CodeQL dans un dépôt vulnérable:

Si vous cliquez sur l’une des découvertes, vous obtiendrez plus de contexte sur la vulnérabilité:

Comment ça fonctionne sur GitHub ?

Vous vous demandez peut-être maintenant comment tous ces outils vont s’articuler ensemble. Eh bien, toute la magie se produira sur la pull request, qui agira comme votre source de vérité.

Lorsqu’un contributeur crée une pull request, cela déclenchera toutes les applications, outils et actions que vous avez implémentés dans votre pipeline.

Lorsque vous faites défiler vers le bas de votre pull request, vous devriez voir la liste des outils que vous avez implémentés et leurs statuts.

Vous verrez si les outils réussissent ou échouent, s’ils sont requis ou non (selon le flux de travail de votre équipe), et toutes les autres informations dont vous avez besoin avant de fusionner la pull request dans votre branche principale.

Comment tirer parti de ChatOps

ChatOps est un modèle de collaboration qui combine des outils de communication en temps réel, tels que des plateformes de chat, avec l’automatisation et les flux de travail pour permettre aux équipes de travailler de manière plus efficace et plus efficiente.

ChatOps rassemble les personnes, les outils et les processus dans une interface centrale basée sur le chat, telle que Slack ou Microsoft Teams, où les membres de l’équipe peuvent communiquer, collaborer et automatiser des tâches et des flux de travail.

Avec ChatOps, les membres de l’équipe peuvent utiliser des commandes de chat pour déclencher des flux de travail automatisés, tels que le déploiement de modifications de code, la surveillance des alertes et les actions de réponse aux incidents.

Cela peut aider les équipes à travailler de manière plus efficace en réduisant le temps et les efforts nécessaires pour effectuer des tâches répétitives, et en améliorant la communication et la collaboration entre les membres de l’équipe.

Donner de la visibilité à vos canaux de communication.

ChatOps peut également aider les organisations à améliorer la sécurité en fournissant un emplacement central pour que les équipes partagent des informations liées à la sécurité et collaborent sur les tâches de sécurité.

Par exemple, les incidents de sécurité peuvent être signalés et triés via la plateforme de chat, et des commandes liées à la sécurité peuvent être déclenchées pour automatiser des flux de travail de sécurité, tels que la recherche de vulnérabilités dans les modifications de code ou la vérification des mauvaises configurations de sécurité dans l’infrastructure.

Comment utiliser Slack pour le ChatOps

Vous pouvez configurer un compte Slack gratuit et intégrer les outils que vous avez implémentés à partir de la place de marché GitHub via des webhooks ou des applications. Vous pouvez également créer des canaux spécifiques par outil ou discipline pour avoir une meilleure visibilité et des personnes dédiées lorsqu’un problème survient.

Voici un exemple du bot GitHub sur Slack. Vous avez des informations en temps réel lorsqu’une pull request est soumise en utilisant différentes couleurs pour traduire l’état de l’ensemble du workflow, y compris tous les outils que vous avez implémentés.

Bot GitHub sur Slack.

Des documents sur GitHub ?

GitHub a introduit une nouvelle fonctionnalité appelée Tables. Elle est conçue pour aider les équipes à suivre et à gérer les éléments de travail sous un format tabulaire.

Les tables sont un type de tableau qui offre une interface de type tableur pour gérer les données, avec des lignes et des colonnes que vous pouvez personnaliser pour afficher différents types d’informations.

Les tables sont hautement personnalisables, avec une variété d’options pour trier, filtrer et regrouper les données. Les utilisateurs peuvent ajouter et supprimer des colonnes, réorganiser les colonnes et même enregistrer des vues personnalisées pour une utilisation ultérieure. Vous pouvez également filtrer les tables en fonction de critères spécifiques, tels que l’état de l’issue, l’assigné ou l’étiquette.

L’un des avantages des tables est qu’elles fournissent une vue unique de plusieurs sources de données, ce qui facilite la visualisation de l’ensemble et l’identification de modèles à travers différents éléments de travail.

Par exemple, une équipe peut utiliser une table pour suivre les issues et les pull requests dans plusieurs dépôts, puis les regrouper par assigné pour voir quels membres de l’équipe sont responsables de quels éléments de travail.

En savoir plus sur la gestion de projet. https://github.com/features/issues

Les Tables sont juste une façon de gérer les projets sur GitHub, qui comprennent également les Projets et les Échéances (ou Milestones).

Les Projets sont plus flexibles que les Tables, et vous pouvez les utiliser pour gérer les éléments de travail dans une variété de formats, y compris des tableaux, des listes et des chronologies.

Vous pouvez utiliser les Échéances pour suivre la progression vers des objectifs spécifiques et regrouper les problèmes et les pull requests.

Example de Milestones et Labels

Sous un Milestone, vous aurez une liste de problèmes sur lesquels les développeurs peuvent travailler. N’oubliez pas d’ajouter les étiquettes, les projets et l’échéance à vos demandes de tirage pour suivre la progression et la faire apparaître dans les Tables ou les Projets.

Voici un exemple de tableau. Vous pouvez utiliser des projets ou des tableaux automatisés où les cartes se déplaceront en fonction de l’état de la demande de tirage. C’est également un bon moyen de montrer sur quelle fonctionnalité vous travaillez et où vous pourriez avoir besoin d’aide et de contributeurs.

GitHub propose plusieurs fonctionnalités de gestion de projet qui peuvent aider les équipes à organiser et à suivre leur travail.

Pratiques exemplaires pour les logiciels open source

Nous avons vu comment mettre en place des garde-fous de sécurité dans vos projets. Maintenant, examinons quelques pratiques exemplaires pour les logiciels open source afin de renforcer la sécurité de vos projets !

Appliquez le principe du moindre privilège

Dans le contexte de GitHub, appliquer le principe du moindre privilège signifie accorder aux utilisateurs et aux services uniquement le niveau d’accès minimal nécessaire pour effectuer leurs tâches requises, et rien de plus.

Ceci est important pour des raisons de sécurité, car cela aide à minimiser l’impact potentiel d’une violation de sécurité ou d’une menace interne.

Vous pouvez encourager vos contributeurs à créer des mots de passe forts et à utiliser l’authentification à plusieurs facteurs pour protéger davantage leurs comptes. Vous pouvez limiter l’accès aux référentiels uniquement aux utilisateurs qui en ont besoin. Par exemple, si un utilisateur a seulement besoin d’un accès en lecture à un référentiel, ne lui donnez pas un accès en écriture.

Au lieu de gérer l’accès sur la base d’un utilisateur individuel, utilisez des équipes pour gérer l’accès aux référentiels. Cela facilite l’ajout ou la suppression d’utilisateurs au fur et à mesure que leurs rôles évoluent.

Au niveau de l’organisation, commencez par définir les autorisations de base sur « No permission » afin que l’utilisateur puisse seulement cloner et extraire les référentiels publics.

De plus, GitHub fournit des jetons d’accès que vous pouvez utiliser pour vous authentifier auprès de l’API et d’autres services GitHub. Utilisez les jetons d’accès avec le moins d’accès requis pour effectuer les tâches nécessaires.

Encouragez également les utilisateurs à utiliser des applications OAuth et des applications GitHub, qui sont plus sécurisées que les jetons d’accès personnels.

Enfin, assurez-vous de vérifier régulièrement l’accès que les utilisateurs ont aux référentiels et autres ressources sur GitHub pour vous assurer qu’ils en ont toujours besoin.

Rendre l’authentification à deux facteurs obligatoire pour tous les mainteneurs et contributeurs

Rendez l’authentification à deux facteurs obligatoire pour tous les mainteneurs et contributeurs. GitHub exigera que tous les utilisateurs qui contribuent du code sur GitHub.com activent une ou plusieurs formes d’authentification à deux facteurs (2FA) d’ici fin 2023.

Vérifier les contrôles de votre projet

Dans l’onglet Settings et sous Code security and analysis, vous pouvez activer ou désactiver Dependabot pour l’analyse de composition des logiciels.

Vous pouvez faire de même pour Code scanning où vous pouvez configurer des flux de travail et des règles de protection ainsi que Secret scanning.

Contrôles de Code scanning.

Pour les Actions GitHub, vous pouvez Allow select actions et inclure les actions créées par GitHub et les actions marquées d’une coche bleue pour les créateurs vérifiés ainsi qu’une sélection d’actions spécifiées validées par votre équipe. Dans ce cas, seules ces actions peuvent être utilisées dans vos projets.

Permissions de GitHub Actions

Protégez votre branche principale

Protéger la branche principale sur GitHub est important car c’est la branche qui représente la version stable et prête à la production de votre code. C’est la branche qui est généralement déployée dans votre environnement de production, et toute modification apportée à cette branche peut avoir un impact significatif sur la stabilité et la sécurité de votre application.

GitHub vous informera si votre branche principale n’est pas protégée.

Sans protection en place, tout utilisateur ayant accès en écriture au dépôt pourrait potentiellement apporter des modifications à la branche principale sans surveillance ni contrôle, ce qui peut introduire des erreurs ou des vulnérabilités difficiles à détecter et à corriger.

En protégeant la branche principale sur GitHub, vous pouvez appliquer des politiques et des règles pour vous assurer que toutes les modifications apportées à la branche principale sont examinées et approuvées par les parties prenantes appropriées. Vous pouvez également vous assurer qu’elles répondent à certains critères, tels que la réussite de tests automatisés et de vérifications de qualité de code.

Cela contribue à réduire le risque d’erreurs ou de vulnérabilités introduites dans votre environnement de production et garantit que votre application reste stable et sécurisée.

Vous pouvez exiger que les contrôles de statut soient réussis avant la fusion, ce qui inclurait tous les outils que vous avez mis en place dans votre flux de travail.

Implementer des vérifications de statut avant la fusion.

Vous pourrez les voir lorsqu’une demande de tirage est créée. Ceux qui sont requis auront une étiquette “Required” à côté d’eux. S’ils échouent, la fusion est bloquée jusqu’à ce que vous corrigiez les problèmes.

Résultats de vérification de statut.

Activer les notifications/alertes

Activer les notifications et les alertes sur GitHub est important pour suivre les événements et les changements importants dans vos dépôts. Cela garantira également que vous êtes informé des problèmes de sécurité ou de performance potentiels en temps opportun.

Vous pouvez personnaliser les notifications et les alertes pour répondre à vos besoins. Vous pouvez inclure des choses comme les examens de demandes de tirage, les mises à jour de problèmes, les nouveaux commentaires, les modifications de code et les vulnérabilités de sécurité détectées dans vos dépendances.

En restant au fait de ces notifications et alertes, vous pouvez vous assurer que vous êtes au courant des événements importants et pouvez agir en conséquence.

Contrôler l’accès aux alertes.

Par exemple, si une nouvelle vulnérabilité est détectée dans l’une de vos dépendances, vous pouvez recevoir une notification et prendre des mesures pour corriger la vulnérabilité ou mettre à jour la dépendance. Cela peut contribuer à prévenir les violations de sécurité et à protéger votre application contre les attaques potentielles.

En outre, l’activation des notifications et des alertes peut vous aider à améliorer la collaboration et la communication au sein de votre équipe de développement, car elle offre une visibilité sur les activités et les progrès des membres de l’équipe. Cela peut aider à garantir que tout le monde est sur la même page et que des progrès sont réalisés vers les objectifs du projet.

Assurez-vous de mettre à jour la bonne adresse e-mail pour les notifications.

Examinez tous vos Webhooks et applications

L’examen de vos Webhooks et applications sur GitHub est important pour la sécurité et pour vous assurer que vos dépôts et applications fonctionnent comme prévu.

Les Webhooks sont des messages automatisés qui sont envoyés de GitHub vers un système externe, tel qu’un outil d’intégration continue ou un chatbot. Ces Webhooks peuvent offrir un moyen puissant d’automatiser votre flux de travail de développement et de s’intégrer avec des systèmes externes, mais ils peuvent également présenter un risque de sécurité s’ils ne sont pas correctement configurés.

En examinant vos Webhooks, vous pouvez vous assurer que seuls des systèmes autorisés reçoivent les messages Webhook et que les informations envoyées sont appropriées et n’exposent pas d’informations sensibles.

Vous pouvez également vous assurer que les événements Webhook sont correctement traités et qu’il n’y a pas d’erreurs ou d’autres problèmes avec la configuration.

Si vous n’avez plus besoin d’un webhook, supprimez-le de votre projet !

De même, l’examen de vos applications sur GitHub peut vous aider à vous assurer qu’elles fonctionnent comme prévu et qu’elles n’exposent aucune information sensible.

Les applications peuvent accéder à vos données de dépôt et effectuer des actions en votre nom, il est donc important de vérifier leurs autorisations et de vous assurer qu’elles sont autorisées à effectuer uniquement les actions nécessaires.

En examinant vos applications, vous pouvez vous assurer qu’elles sont correctement configurées et qu’elles n’exposent pas vos données de dépôt ou d’autres informations sensibles.

Examinez la liste de contrôle de l’aperçu de sécurité

Sous l’onglet Security de votre dépôt, vous pouvez voir la liste de contrôle de l’aperçu de sécurité. Cela comprend une politique de sécurité et des avis de sécurité, ainsi que l’endroit où vous pouvez activer les alertes Dependabot et les alertes de Code scanning.

Aperçu de la sécurité sous l’onglet Sécurité.

Vous pouvez inclure une politique de sécurité sous forme de fichier SECURITY.md dans votre projet.

Inclure une politique de sécurité.

Examinez la liste de contrôle du profil de la communauté

Cette section est plus axée sur la communauté open source et les bonnes pratiques en général. Assurez-vous que votre projet comprend une description, un fichier README, ainsi qu’un code de conduite et un guide de contribution.

Assurez-vous que votre profil de communauté est en bon état

Vous pouvez également définir des modèles pour les problèmes ou les demandes de tirage pour donner des indications aux futurs contributeurs.

Mettre en place des workflows open source

La mise en place de GitHub Actions pour les workflows open source peut aider à rationaliser le processus de développement, garantir des résultats cohérents et fiables, et améliorer la qualité et la sécurité globales du projet.

Un aspect important de la mise en place de GitHub Actions pour les workflows open source est de couvrir la première interaction avec les contributeurs et de fermer les problèmes obsolètes. C’est important car les projets open source ont souvent un grand nombre de contributeurs et il peut être difficile de suivre toutes les interactions et les problèmes qui nécessitent une attention.

Vous pouvez également utiliser les Actions GitHub pour automatiser le processus de réponse aux nouveaux problèmes ou pull requests et aider à garantir que les problèmes sont traités en temps voulu.

Par exemple, vous pouvez créer une action qui envoie une réponse automatique aux nouveaux problèmes ou pull requests, informant le contributeur que sa demande a été reçue et est en cours d’examen.

https://github.com/marketplace/actions/first-interaction

De plus, vous pouvez utiliser les Actions GitHub pour aider à fermer les problèmes obsolètes. C’est important car les projets open source ont souvent une grande quantité de problèmes ouverts qui peuvent ne plus être pertinents ou qui ont déjà été résolus. En utilisant une action pour fermer automatiquement les problèmes obsolètes après une certaine période, vous pouvez aider à maintenir votre projet organisé et à garantir que seuls les problèmes pertinents sont traités.

GitHub vous informera si certaines de vos questions semblent être périmées !

En général, la mise en place de GitHub Actions pour les workflows open source est une étape importante pour rationaliser le processus de développement, améliorer la qualité et la sécurité du projet, et garantir que les problèmes sont traités de manière cohérente et en temps voulu.

En couvrant la première interaction avec les contributeurs et en fermant les problèmes obsolètes, vous pouvez aider à maintenir votre projet organisé et efficace, et améliorer l’expérience globale des contributeurs et des utilisateurs.

https://github.com/marketplace/actions/close-stale-issues

Montrer l’état de votre projet open source

Montrer l’état de votre projet open source en utilisant des étiquettes ou des balises dans votre fichier README peut être un moyen utile de communiquer des informations importantes sur votre projet aux utilisateurs et aux contributeurs potentiels.

Ces étiquettes peuvent fournir un aperçu rapide de l’état actuel du projet et aider les utilisateurs et les contributeurs à comprendre à quoi s’attendre du projet. Vous pouvez inclure des étiquettes pour indiquer l’état de votre projet.

Cela pourrait inclure des étiquettes telles que “actif”, “mode de maintenance” ou “archivé”, pour informer les utilisateurs et les contributeurs si le projet est toujours en développement et en maintenance active.

Il est important d’informer les utilisateurs et les contributeurs des conditions de licence de votre projet. L’utilisation d’une étiquette pour indiquer le type de licence peut être un moyen rapide et facile de communiquer cette information.

Si vous utilisez des outils d’intégration continue comme Jenkins ou CircleCI, vous pouvez utiliser des étiquettes pour indiquer l’état de construction actuel du projet.

Si vous utilisez un outil de couverture de code comme Codecov, vous pouvez utiliser des étiquettes pour indiquer le pourcentage de couverture de code actuel du projet.

Si votre projet utilise des outils de sécurité, vous pouvez utiliser des étiquettes pour mettre en avant l’état de sécurité du projet. Cela peut aider les utilisateurs à comprendre la posture de sécurité de votre projet.

En général, mettre en avant l’état de votre projet en utilisant des étiquettes sur votre fichier README peut fournir des informations importantes aux utilisateurs potentiels et aux contributeurs, et peut rendre plus facile pour eux de comprendre à quoi s’attendre du projet.

Un exemple d’étiquettes pour mettre en valeur la santé d’un projet.

C’est également un bon moyen d’attirer plus de contributeurs à votre projet. Les développeurs aiment contribuer à des projets qui ont des flux de travail stables.

Voici un exemple de création d’un badge d’état pour CodeQL:

Vous devrez copier/coller le code Markdown dans votre fichier README.

Et cela ressemblera à ceci:

Vérifier / Ajouter une licence

Ajouter une licence à votre projet de logiciel libre (OSS) est important pour plusieurs raisons. En ajoutant une licence, vous précisez à autrui ce qu’ils peuvent et ne peuvent pas faire avec votre logiciel. Cela fournit une protection juridique à la fois pour vous et pour les autres qui souhaitent utiliser ou contribuer à votre projet.

Une licence facilite la compréhension par d’autres développeurs de la façon dont ils peuvent utiliser et contribuer à votre projet. Cela peut aider à construire une communauté forte et engagée autour de votre logiciel.

Ajouter une licence à votre projet peut aider à éviter les confusions et les malentendus sur ce qui est permis ou non. Cela peut aider à prévenir les problèmes et les litiges par la suite.

Si vous ne savez pas par où commencer, vous pouvez choisir une licence open source qui convient à votre projet ici. GitHub peut alors générer la licence sélectionnée que vous pouvez ajouter à votre projet.

Vous pouvez ensuite modifier certaines informations telles que l’année ou le nom complet. La licence sera ensuite sauvegardée sous forme de fichier LICENSE.md ou LICENSE.txt dans votre dépôt.

Choisissez la bonne licence pour votre projet.

5 conseils pour la sécurité des logiciels open source

Maintenant que nous avons une meilleure compréhension de ce à quoi ressemble une application moderne, comment la protéger à l’aide d’outils et comment renforcer vos projets, laissez-moi vous partager 5 conseils en matière de sécurité.

Conseil #1 — Adoptez une approche DevSecOps

Adopter une approche DevSecOps est une étape importante pour construire un logiciel sûr et résilient. DevSecOps réunit les équipes de développement, de sécurité et d’exploitation pour s’assurer que la sécurité fait partie intégrante du cycle de développement de logiciels dès le début.

En intégrant la sécurité à chaque étape du processus de développement, les organisations peuvent identifier et résoudre les problèmes de sécurité dès le début et construire un logiciel plus sécurisé.

DevSecOps implique l’utilisation d’outils de sécurité automatisés, de tests continus et d’analyse de code pour identifier les vulnérabilités et garantir que la sécurité est intégrée à tous les aspects du processus de développement de logiciels.

Cette approche peut aider les organisations à réduire le risque de violations de sécurité et à construire un logiciel plus sûr et plus résilient qui peut résister aux menaces en évolution.

Conseil #2 — Adressez les vulnérabilités des logiciels open source

L’adresse des vulnérabilités des logiciels open source est cruciale pour maintenir la sécurité des applications logicielles. Les bibliothèques et frameworks open source sont largement utilisés par les développeurs pour construire des logiciels, mais ils peuvent également introduire des vulnérabilités que les attaquants peuvent exploiter.

Pour remédier à ces vulnérabilités, les organisations peuvent utiliser une variété d’outils et de techniques, tels que l’analyse de composition de logiciels et le balayage de vulnérabilités, pour identifier et suivre les vulnérabilités dans les composants open source.

Ils peuvent également donner la priorité et remédier à ces vulnérabilités en utilisant une approche fondée sur les risques, qui consiste à évaluer la probabilité et l’impact d’une vulnérabilité, puis à donner la priorité aux problèmes les plus critiques pour la rémédiation.

En outre, les organisations peuvent tirer parti des bases de données de vulnérabilités open source et des divulgations de vulnérabilités pilotées par la communauté pour rester à jour sur les dernières vulnérabilités et problèmes de sécurité.

Conseil #3 — Automatisez les tâches de sécurité simples

L‘automatisation des tâches de sécurité est une étape cruciale pour atteindre une posture de sécurité plus efficace et efficiente. En automatisant les tâches de sécurité répétitives, les organisations peuvent libérer leurs équipes de sécurité pour se concentrer sur des problèmes plus complexes et critiques.

Cela peut également aider à améliorer la cohérence dans les processus de sécurité, à réduire les erreurs et les omissions, et à permettre une détection et une réponse plus rapides aux incidents de sécurité.

Vous pouvez appliquer l’automatisation à diverses tâches de sécurité, notamment la numérisation des vulnérabilités, l’analyse de code, les tests de sécurité, le contrôle d’accès, la réponse aux incidents et la surveillance de la conformité.

Conseil #4 — Soyez conscient de vos propres actifs

Être conscient de vos propres actifs et de votre visibilité est un aspect crucial de la maintien d’une posture de sécurité solide. Les organisations doivent avoir une compréhension claire de leur propre infrastructure, de leurs systèmes et de leurs données, et s’assurer qu’elles ont une visibilité sur tous les aspects de leurs opérations.

Cela comprend la surveillance de leurs réseaux, applications et points de terminaison pour détecter les signes de compromission, ainsi que la révision régulière de leurs contrôles d’accès et de leurs privilèges pour s’assurer qu’ils sont appropriés et à jour.

De plus, les organisations doivent être conscientes de leurs actifs accessibles au public et prendre des mesures pour réduire leur exposition aux menaces potentielles, comme l’utilisation de pare-feux, de pare-feux d’applications Web et d’autres mesures de sécurité.

Conseil #5 — Fournir une formation à la sécurité pour les développeurs

Dans le monde actuel de fréquentes violations de sécurité et d’attaques cybernétiques, il est crucial que les développeurs aient une bonne compréhension des meilleures pratiques de sécurité. La formation à la sécurité pour les développeurs peut les aider à comprendre comment écrire du code sécurisé, identifier les vulnérabilités et adopter des mesures de sécurité tout au long du cycle de vie du développement de logiciels.

En fournissant une formation à la sécurité aux développeurs, les organisations peuvent s’assurer que leurs développeurs disposent des connaissances et des compétences nécessaires pour créer des applications sécurisées et prévenir les incidents de sécurité.

La formation à la sécurité peut également aider à créer une culture de sensibilisation à la sécurité au sein de l’organisation et à s’assurer que tous les membres de l’équipe comprennent l’importance de la sécurité et sont en mesure de contribuer aux efforts de sécurité de l’organisation.

Vous pouvez utiliser la plate-forme Snyk Learn comme point de départ. Snyk Learn enseigne aux développeurs comment rester sécurisés grâce à des leçons interactives explorant les vulnérabilités dans une variété de langages et d’écosystèmes.

La plateforme Snyk Learn. https://learn.snyk.io/

Comment avoir de l’impact dans la communauté open source

Hacktoberfest est un événement annuel sponsorisé par DigitalOcean et GitHub, où des développeurs du monde entier contribuent à des projets open source tout au long du mois d’octobre.

L’événement vise à encourager les contributions aux projets open source et est ouvert à tous, quel que soit leur niveau de compétence.

Pour participer, les développeurs doivent s’inscrire sur le site web de Hacktoberfest, puis effectuer quatre demandes d’extraction valides vers n’importe quel projet open source participant sur GitHub.

Une fois que les pull request sont acceptées, le développeur recevra un t-shirt exclusif en édition limitée. Hacktoberfest est un excellent moyen pour les développeurs de s’impliquer dans la communauté open source et de contribuer aux projets qu’ils utilisent et sur lesquels ils comptent.

https://hacktoberfest.com/

Principales leçons à retenir pour la sécurité open source 101

  1. La mise en place de pratiques de développement de logiciels sécurisées est cruciale pour se protéger contre les cyberattaques et protéger les données des utilisateurs.

  2. Les projets open source peuvent bénéficier de l’utilisation d’outils de sécurité tels que l’analyse de composition de logiciels, l’analyse de code statique et les scanners de vulnérabilités pour identifier et remédier aux risques de sécurité potentiels.

  3. Le GitHub Marketplace propose une variété d’applications et d’actions de sécurité qui peuvent être utilisées tout au long du cycle de développement de logiciels pour automatiser les tâches de sécurité, appliquer les meilleures pratiques et protéger le projet contre les vulnérabilités.

  4. La pratique d’une bonne hygiène de sécurité, comme l’activation des notifications et des alertes, la vérification des webhooks et des applications et la protection de la branche principale, peut aider à prévenir les accès non autorisés et les violations de données.

  5. Fournir une formation en sécurité aux développeurs peut aider à sensibiliser à l’importance de la sécurité et à intégrer les pratiques de codage sécurisé dans le processus de développement de logiciels.

J’espère que cet article vous aidera à améliorer la posture de sécurité de vos projets !

Vous pouvez me suivre sur Twitter ou sur LinkedIn. N’oubliez pas de #GetSecure, #BeSecure et #StaySecure

Oh, et une dernière chose avant de partir…

NE POUSSEZ PAS VOS CLES SUR GITHUB!!!

0
Subscribe to my newsletter

Read articles from Sonya Moisset directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sonya Moisset
Sonya Moisset

Staff Security 🥑 || 4x GitHub 🌟 2024 || ☁️ OpenUK Security Advisory Board Member