Les secrets sont censés être cachés ou, à tout le moins, connus uniquement d’un ensemble spécifique et limité d’individus (ou de systèmes). Sinon, ce ne sont pas vraiment des secrets. Dans la vie personnelle, un secret révélé peut endommager les relations, conduire à la stigmatisation sociale ou, à tout le moins, être embarrassant. Dans la vie professionnelle d’un développeur ou d’un ingénieur en sécurité des applications, les conséquences de la divulgation de secrets peuvent entraîner des failles de sécurité, des fuites de données et, bien sûr, être également embarrassantes. Et bien qu’il existe des outils disponibles pour détecter le code source et les référentiels de code, il existe peu d’options pour identifier les secrets dans le texte brut, les documents, les e-mails, les journaux de discussion, les systèmes de gestion de contenu, etc.
Que sont les secrets ?
Dans le contexte des applications, les secrets sont des informations sensibles telles que les mots de passe, les clés API, les clés cryptographiques et d’autres données confidentielles dont une application a besoin pour fonctionner mais ne doivent pas être exposées à des utilisateurs non autorisés. Les secrets sont généralement stockés en toute sécurité et accessibles par programmation par l’application en cas de besoin.
L’utilisation de secrets est un aspect essentiel de la sécurisation des applications. L’accès non autorisé à ces informations sensibles peut entraîner des failles de sécurité et d’autres activités malveillantes. Pour protéger les secrets, les développeurs, les administrateurs système et les ingénieurs en sécurité utilisent diverses techniques de sécurité telles que le chiffrement, le stockage sécurisé et les mécanismes de contrôle d’accès pour garantir que seuls les utilisateurs autorisés peuvent y accéder. De plus, ils mettent en œuvre les meilleures pratiques telles que la rotation régulière des mots de passe et des clés et la limitation de la portée de l’accès aux secrets à ce qui est nécessaire au fonctionnement de l’application.
Les secrets de la chaîne d’approvisionnement logicielle
Les secrets sont un élément essentiel de la sécurité de la chaîne d’approvisionnement logicielle, qui englobe la collaboration jusqu’au déploiement, et tout ce qui se trouve entre les deux.
Un secret, comme une clé d’accès ou un mot de passe, est souvent la seule chose qui se dresse entre un attaquant et des données ou des systèmes sensibles. Par conséquent, il est essentiel de garder ces secrets confidentiels et sécurisés. Lorsque des secrets sont compromis, cela peut entraîner une violation de données dévastatrice, qui peut causer d’importants dommages financiers et à la réputation d’une organisation.
Les secrets sont une cible fréquente des attaques de la chaîne d’approvisionnement logicielle. Les attaquants ciblent souvent des secrets pour accéder aux systèmes, aux données ou aux serveurs de l’entreprise. Ils peuvent facilement obtenir ces secrets s’ils ont été divulgués par erreur à une source publique. La protection des secrets dans la sécurité de la chaîne d’approvisionnement logicielle est essentielle pour s’assurer que les attaquants ne peuvent pas les exploiter pour compromettre les systèmes et les données de l’entreprise. Une bonne gestion des secrets peut aider à empêcher l’accès non autorisé aux systèmes et données critiques, protégeant ainsi les organisations des attaques de la chaîne d’approvisionnement.
Comment gardez-vous les secrets secrets ?
Pour vous protéger contre les fuites de secrets, vous pouvez utiliser les pratiques suivantes :
- Utilisez des variables d’environnement pour stocker les secrets : au lieu de coder en dur les secrets dans votre code, stockez-les dans des variables d’environnement. Cela facilite la gestion des secrets et garantit qu’ils ne sont pas accidentellement engagés dans un référentiel de code.
- Utilisez un fichier .gitignore : créez un fichier .gitignore pour exclure les fichiers contenant des secrets du suivi par Git. Cela empêchera que des informations sensibles soient accidentellement validées dans un référentiel de code. Si vous suivez le point 1 ci-dessus, assurez-vous que si les secrets sont stockés dans un fichier de variable d’environnement, ce fichier est spécifié dans .gitignore.
- Utilisez un outil de gestion des secrets : un outil de gestion des secrets peut aider à stocker et à gérer en toute sécurité les secrets des applications ou du système. Cela garantit que les secrets sont chiffrés et accessibles uniquement aux utilisateurs autorisés.
- Utilisez le chiffrement : chiffrez les secrets avant de les stocker dans des référentiels de code. Cela fournit une couche de sécurité supplémentaire et rend plus difficile pour les attaquants d’accéder aux informations sensibles.
- Utiliser l’authentification à deux facteurs (2FA) : activez 2FA pour les référentiels de code afin d’empêcher tout accès non autorisé. Cela ajoute une couche de sécurité supplémentaire et rend plus difficile pour les attaquants d’obtenir un accès non autorisé à un référentiel de code.
En suivant ces meilleures pratiques, vous pouvez vous protéger contre l’exposition accidentelle d’informations sensibles dans nos référentiels de code et nos gestionnaires de contrôle des sources. Mais qu’en est-il des autres systèmes, tels que les systèmes de gestion de contenu, les documents en texte brut, les e-mails, les journaux de discussion et d’autres actifs numériques ? pas stocké dans un référentiel ?
Présentation de Too Many Secrets par Checkmarx
Too Many Secrets (2MS) est un projet open source dédié à aider les gens à protéger leurs informations sensibles telles que les mots de passe, les informations d’identification et les clés API contre leur apparition sur les sites Web publics et les services de communication. 2MS prend en charge Confluence aujourd’hui et nous ajouterons bientôt la prise en charge de Discord. De plus, il est également facilement extensible à d’autres plateformes de communication ou de collaboration.
L’installation et l’exécution de 2MS sont extrêmement simples et rapides. Intégré à Go, tout ce dont vous avez besoin est de cloner le référentiel, de créer le projet et d’exécuter le binaire sur votre plate-forme. Vous trouverez ci-dessous la liste des commandes que j’ai utilisées pour démarrer et fonctionner sous OSX (en utilisant Bash 5.1.16):
# brew install go
# clone de git https://github.com/Checkmarx/2ms.git
# cd 2ms
# allez construire
# ./2ms –confluence https://
.atlassian.net/wiki –confluence-spaces –confluence-username –confluence-token
2MS est construit sur un moteur de détection de secrets (actuellement gitleaks) et comprend divers plugins pour interagir avec les plates-formes populaires. Cela signifie que n’importe qui dans la communauté open source peut contribuer, améliorer et étendre 2MS assez facilement.
Apprendre encore plus
Nous croyons qu’en travaillant ensemble, nous pouvons créer un monde numérique plus sûr. Pour en savoir plus ou télécharger vous-même le projet, rendez-vous sur https://github.com/Checkmarx/2msdisponible sur GitHub.
Note: Cet article a été rédigé de manière experte et contribué par Bryant Schuck, chef de produit chez Checkmarx.
Poster un commentaire