La détection des secrets est le processus qui consiste à trouver et à signaler les données sensibles connues sous le nom de « secrets » dans les bases de code ou d’autres emplacements au sein des environnements de développement logiciel. Cette couche de défense automatisée permet de garantir qu’aucune information sensible n’est codée en dur ou introduite dans le code source sous une forme facilement lisible ou non chiffrée.
La détection des secrets fait partie d’une approche « shift left » qui déplace la sécurité plus tôt dans le processus de développement. Les secrets peuvent proliférer au-delà du code, augmentant le risque d’exposition à des incidents de sécurité. La protection automatisée par détection des secrets peut contribuer à sécuriser les workflows des développeurs à l’échelle.
Dans le domaine de la sécurité des applications (AppSec), les secrets sont des informations numériques qui donnent accès à des utilisateurs humains ou à des identités non humaines telles que des applications, des appareils ou des workloads, et leur permettent de communiquer ou d’effectuer des actions. De par leur nature sensible, les secrets doivent rester confidentiels.
Voici quelques types de secrets courants :
Les clés d’API sont des identifiants uniques permettant d’authentifier la communication entre des services, des logiciels ou des systèmes par le biais d’une interface de programmation d’application (API).
Les tokens d’authentification et d’autorisation vérifient l’identité et autorisent l’accès aux ressources.
Les données biométriques incluent des traits physiques et comportementaux inhérents à une personne, tels que les traits de son visage, ses empreintes digitales, sa voix ou même sa démarche, qui peuvent être utilisés pour vérifier son identité.
Les certificats numériques et leurs clés privées associées sont utilisés pour authentifier les points d’accès et établir des canaux de communication sécurisés.
Les identifiants du fournisseur de cloud peuvent être utilisés pour accéder aux plateformes de cloud computing telles que AWS, Azure, Google Cloud et IBM Cloud.
Les chaînes de connexion sont des chaînes de texte contenant des instructions pour se connecter à une source de données.
Les identifiants de base de données sont des combinaisons de nom d’utilisateur et de mot de passe permettant d’accéder aux bases de données.
Les clés de chiffrement et autres clés cryptographiques sont utilisées pour signer et chiffrer ou déchiffrer des données.
Les identifiants des comptes de service permettent aux applications et aux workflows automatisés d’accéder et d’interagir avec les systèmes d’exploitation.
Les clés SSH (Secure Shell) sont utilisées pour authentifier les entités accédant aux serveurs et autres infrastructures.
Les combinaisons de nom d’utilisateur et de mot de passe sont des chaînes de caractères qui authentifient l’accès de l’utilisateur à un système.
Les secrets sont les principales cibles des acteurs malveillants. Ils peuvent faire appel à des bots pour récupérer un token exposé, un identifiant divulgué ou une erreur de configuration dans un environnement cloud natif. Les attaquants exploitent ces secrets pour obtenir un accès non autorisé aux applications et systèmes. Comme l’accès est obtenu au moyen d’identifiants vérifiés, il peut être plus difficile à détecter et peut passer inaperçu pendant de longues périodes.
La détection des secrets devient donc un élément essentiel de la stratégie de cybersécurité d’une entreprise. La détection des secrets aide les entreprises à :
Éviter le détournement de compte et l’escalade des privilèges : les hackers peuvent utiliser des identifiants divulgués pour élever leurs privilèges. Dotés de privilèges plus élevés, ils peuvent modifier les paramètres du système, perturber les serveurs et l’infrastructure, exécuter des commandes, installer des logiciels malveillants ou prendre le contrôle d’actifs.
Prévenir les violations de données : les acteurs malveillants peuvent exploiter les secrets exposés pour voler des informations personnelles sensibles ou des données d’entreprise confidentielles. Ces violations de données peuvent être coûteuses et entraîner des pertes financières, une diminution de la confiance des clients et une atteinte à la réputation.
Réduire les vulnérabilités : les secrets exposés sont des portes ouvertes. En les localisant, les entreprises peuvent éliminer ces vulnérabilités de manière proactive, mettant ainsi à mal les cyberattaques.
Obtenez des informations sur les actualités les plus importantes et les plus intrigantes en matière d’intelligence artificielle. Abonnez-vous à notre newsletter hebdomadaire Think. Lire la Déclaration de confidentialité d’IBM.
Le processus commence par l’analyse des secrets, dans laquelle les outils de détection des secrets parcourent les référentiels de code et les ressources connexes à la recherche de secrets exposés. Ces outils génèrent ensuite des alertes ou des rapports pour tout secret identifié, y compris le type de secret et son emplacement. Les équipes de développement et de sécurité peuvent s’appuyer sur ces alertes ou rapports pour orienter les étapes de résolution, comme le transfert de secrets vers une solution de gestion des secrets. Ces solutions permettent d’automatiser, de centraliser et de rationaliser la création, l’utilisation, la rotation et la protection des secrets.
La détection des secrets implique un ensemble de méthodes permettant d’identifier avec précision les secrets dans les référentiels :
Mise en correspondance des tendances
Analyse du dictionnaire
Analyse entropique
Les algorithmes de mise en correspondance des tendances recherchent des chaînes de caractères correspondant aux formats standard des secrets. Ils utilisent également des expressions régulières, qui sont des modèles de recherche composés de séquences de caractères.
Cette méthode est souvent efficace pour les secrets qui suivent une forme prédéfinie, tels que les tokens d’accès aux services cloud ou les clés d’API. Cependant, l’analyse des secrets à l’aide d’expressions régulières (également appelées regex) peut être lente, et des secrets à la composition aléatoire peuvent passer inaperçus.
En matière de détection des secrets, les dictionnaires sont des sources de données contenant des secrets connus. Ces dictionnaires peuvent servir de référence lors de la recherche de secrets.
L’analyse du dictionnaire permet de déterminer si un secret est actif ou inactif. Il se peut aussi que l’analyse ne détecte aucun secret qui ne se trouve pas dans le dictionnaire.
L’entropie mesure le caractère aléatoire ou l’imprévisibilité des données. Plus l’entropie est élevée, plus les données sont aléatoires et difficiles à prévoir. Ainsi, l’analyse entropique évalue les séquences de caractères selon des attributs aléatoires.
Cette méthode permet de découvrir des secrets potentiels qui n’adhèrent pas à des tendances connues, telles que les clés de chiffrement. Elle peut également révéler de nouveaux secrets ou des secrets à haute entropie.
Le choix est vaste en matière de systèmes de détection de secrets. Pour bien choisir une solution, les entreprises doivent prendre en compte la précision de la solution, la profondeur et l’étendue de ses capacités de détection, son évolutivité sur les grandes bases de code et le cycle de développement logiciel (SDLC), ainsi que sa compatibilité et sa simplicité d’intégration avec leur pile technologique et leurs workflows de développement logiciel.
Voici quelques outils de détection des secrets populaires :
GitLab utilise un analyseur pour la détection des secrets, spécifique aux environnements GitLab. Il offre les fonctionnalités suivantes :
Les enquêtes de protection contre la propagation des secrets sont modifiées avant d’être transmises à GitLab et bloquent les notifications push si des secrets sont repérés.
La détection des secrets dans les pipelines fonctionne comme un composant des pipelines CI/CD, inspectant les demandes de fusion et les commits à la branche par défaut d’un référentiel.
La détection des secrets côté client examine les commentaires et les descriptions dans les problèmes et les demandes de fusion.
GitLab peut répondre automatiquement à certains types de secrets divulgués en les révoquant. Pour certains niveaux de compte, la fonction de détection des faux positifs de GitLab Duo évalue les secrets identifiés afin de déterminer les faux positifs potentiels.
Gitleaks est un outil open source permettant de détecter les secrets dans les référentiels Git, les répertoires, les fichiers et autres entrées standard. Son moteur de détection est basé sur un mélange de mise en correspondance des tendances grâce aux regex et aux analyses entropiques.
Les entreprises peuvent créer des règles personnalisées pour leurs propres secrets. Ils peuvent également utiliser Gitleaks en tant que hook de pré-commit pour détecter les secrets dans le code source avant qu’ils n’atteignent le référentiel.
Vault Radar est la solution de détection de secrets de HashiCorp. Elle analyse en continu et en temps réel les secrets et les données personnelles (PII), les catégorise et les classe dans un tableau de bord pour faciliter les efforts de résolution.
Des analyses sont également effectuées pour les validations de code, les requêtes pull et l’ajout de sources de données. Les sources de données prises en charge incluent des référentiels et des plateformes tels qu’Azure DevOps, Bitbucket, GitHub et GitLab, ainsi que des plateformes de collaboration comme Confluence, Jira et Slack.
Vault Radar fournit des conseils de résolution intégrés pour certains comptes d’entreprise. Les secrets exposés peuvent également être copiés dans Vault, la plateforme de gestion des secrets de HashiCorp, dans le cadre du processus de résolution.
L’intelligence artificielle peut améliorer la précision et l’efficacité des outils de détection des secrets, dont la plupart génèrent des taux de faux positifs élevés. Les modèles d’IA peuvent être entraînés à reconnaître des caractéristiques correspondant à un plus large éventail de types de secrets, ce qui les rend plus dynamiques que les solutions basées sur des règles.
Les équipes de développement qui mettent en œuvre l’IA pour la détection des secrets peuvent bénéficier de ces avantages :
Connaissance du contexte : les modèles d’IA peuvent apprendre le contexte entourant les secrets, y compris les commentaires de code, la structure du code source et les noms de variables. Cette analyse sémantique et contextuelle permet aux modèles de mieux distinguer les véritables secrets des données d’échantillonnage ou des valeurs de test. Ainsi, la connaissance du contexte peut contribuer à augmenter les taux de vrais positifs et à réduire les taux de faux positifs.
Détection en temps réel : certains outils de détection alimentés par l’IA s’intègrent de façon fluide aux IDE, signalant les secrets codés en dur pendant que les développeurs écrivent du code et détectant les secrets exposés avant qu’ils ne soient validés ou envoyés vers les référentiels.
Priorisation automatisée et résolution : la détection des secrets pilotée par l’IA peut automatiser la priorisation des secrets signalés en attribuant un score de risque basé sur des facteurs tels que l’exploitabilité, l’impact, la localisation et la gravité. Elle peut également suggérer des correctifs, comme le remplacement des secrets exposés par des appels vers une plateforme de gestion des secrets.
L’application de l’IA pour la détection des secrets fait appel à un certain nombre de techniques :
La classification : la classification permet aux modèles de machine learning de prédire si une information est un vrai ou un faux secret. Les algorithmes de classification typiques pour la détection des secrets comprennent la régression logistique, la méthode Naïve Bayes et les machines à vecteurs de support (SVM).
Apprentissage d’ensemble : l’apprentissage d’ensemble fusionne plusieurs classificateurs afin d’augmenter la précision des prédictions.
Apprentissage profond : l’apprentissage profond, basé sur des réseaux de neurones multicouches, offre un moyen plus puissant et plus polyvalent de détecter les secrets. Les architectures d’apprentissage profond couramment employées comprennent les réseaux neuronaux convolutifs, la mémoire à long terme (LSTM) et les modèles transformeurs.
IA générative : les grands modèles de langage (LLM) constituent une autre option pour la détection de secrets. Les LLM pré-entraînés et les petits modèles de langage (SLM) affinés peuvent être utilisés pour prédire les secrets et les classer en fonction de plusieurs types. Une approche human-in-the-loop reste vitale pour valider la précision les prédictions et les classifications des LLM.
Un mélange de stratégies conventionnelles et de stratégies basées sur l’IA peut renforcer le processus de détection des secrets. La mise en correspondance des tendances et l’analyse entropique peuvent être utilisées pour rechercher des secrets, tandis que des méthodologies pilotées par l’IA valident les secrets découverts afin d’éliminer les faux positifs.
Voici quelques exemples de solutions de détection des secrets utilisant l’IA :
La plateforme de sécurité du code GitGuardian analyse les référentiels Git, les pipelines CI/CD, les images Docker et les systèmes de collaboration tels que Confluence, Jira et Slack. Les développeurs peuvent configurer des hooks de pré-commit et intégrer l’analyse dans les IDE ou utiliser l’application de ligne de commande de GitGuardian.
Le moteur de détection des secrets de GitGuardian se compose de deux types de détecteurs de correspondance de motifs : des détecteurs spécifiques dédiés à la détection de types de secrets particuliers, ce qui permet un fort rappel et une grande précision, et des détecteurs génériques pour détecter ce que certains détecteurs pourraient manquer. Divers modèles de machine learning ajoutent également des fonctionnalités précieuses, telles que le filtrage des secrets susceptibles d’être des faux positifs et l’évaluation du contexte autour d’un secret générique pour lui attribuer une catégorie et un fournisseur appropriés.
Parmi les autres fonctionnalités basées sur le machine learning, on peut citer le regroupement d’incidents similaires, qui regroupe les secrets partageant des similitudes contextuelles et la notation des risques qui utilise XGBoost (eXtreme Gradient Boosting), un ensemble d’arbres de décision qui apprend des erreurs communes pour classer les secrets en fonction de multiples signaux de risque.
GitHub Secret Protection est le système d’analyse des secrets de GitHub. Il examine l’intégralité des historiques Git sur toutes les branches d’un référentiel ainsi que les descriptions et commentaires dans les erreurs et les requêtes pull.
La fonction de protection push du système analyse chaque push en temps réel, bloquant ainsi les commits contenant des secrets. Elle peut effectuer des contrôles de validité automatiques pour vérifier si un secret découvert est actif et exposé publiquement.
GitHub Secret Protection utilise également GitHub Copilot pour détecter les secrets non structurés enregistrés dans les référentiels.
Bob est l’assistant de codage par IA d’IBM, conçu pour faciliter l’écriture du code source, le débogage, la restructuration, les révisions de code et la documentation. Il peut repérer les vulnérabilités de sécurité dans le code et, associé à sa capacité intégrée de détection, faciliter et encourager le codage sécurisé.
Bob peut être programmé pour adopter un mode agentique personnalisé qui recherche les secrets codés en dur, explique les risques de sécurité et recommande des actions pour sécuriser les secrets. Il peut remplacer les secrets par des références à une plateforme de gestion des secrets comme Vault de HashiCorp, et transférer des secrets codés en dur vers Vault à l’aide du Model Context Protocol (MCP).
La détection de secrets peut améliorer la posture de sécurité d’une entreprise. Elle est d’autant plus efficace qu’elle est intégrée aux phases de développement, de déploiement et de maintenance du SDLC.
Voici quelques bonnes pratiques que les équipes de développement peuvent garder à l’esprit lors de la mise en œuvre de la détection des secrets :
Définir les secrets les plus importants
Aller au-delà des sources liées au code
Intégrer la détection des secrets dans les pipelines CI/CD
Trier et rectifier
Éduquer les équipes de développement et DevOps
Les entreprises peuvent commencer par définir ce qui constitue un secret pour elles, puis trier ces secrets par importance pour éclairer le processus de résolution. Elles doivent également procéder à un audit de l’ensemble de leur chaîne d’approvisionnement logicielle afin de déterminer l’étendue de l’exposition aux secrets.
Les secrets peuvent se propager au-delà des sources liées au code. Cela signifie que la détection doit également prendre en compte d’autres sources possibles de divulgation de secrets, parmi lesquelles :
Outils de communication, de collaboration et de productivité des développeurs
Fichiers de configuration
Conteneurs et plateformes d’orchestration de conteneurs comme Kubernetes
Bases de données
Documentation
Journaux
Les équipes DevOps peuvent mettre en œuvre des hooks de pré-commit qui font de l’analyse des secrets une étape obligatoire avant que les développeurs ne valident du code ou ne lancent des requêtes pull et bloquent les modifications qui contiennent des secrets codés en dur. Elles doivent également vérifier que les outils sont capables d’analyser en permanence les artefacts, de créer des journaux et de générer des variables d’environnement pour détecter tout secret dévoilé avant qu’il n’atteigne les environnements d’exécution et de production.
Les entreprises doivent établir des politiques concernant la hiérarchisation et la correction des secrets révélés. Les politiques de tri peuvent inclure des évaluations des risques de sécurité posés par les différents types de secrets et les équipes responsables du tri.
Les politiques de résolution doivent clairement définir les mesures à prendre, qu’il s’agisse de la révocation ou de la rotation des secrets ou de leur remplacement par des appels à une plateforme de gestion des secrets. L’automatisation de ces corrections permet de gagner du temps et d’obtenir des réponses rapides, mais les corrections doivent être testées pour vérifier qu’un secret ne peut plus être détecté.
Les entreprises doivent inclure la détection des secrets dans le cadre de la formation d’une équipe de développement ou de DevOps en codage sécurisé. Les équipes doivent comprendre les dangers des secrets codés en dur ou exposés, ce qu’elles peuvent faire pour limiter ces dangers et comment utiliser les outils nécessaires à la détection des secrets.
Accélérez la livraison de logiciels grâce à IBM Bob, votre partenaire d’IA pour un développement sécurisé et sensible aux intentions.
Développez, déployez et gérez plus rapidement des applications d’IA grâce à des outils adaptés aux entreprises.
Repensez vos systèmes hérités grâce à une modernisation intelligente basée sur l’IA.