Parce que… c’est l’épisode 0x319!

Shameless plug

Description

Contexte de la recherche

Dans cet épisode de Polysécure, l’animateur reçoit Gaëtan Ferry, chercheur en sécurité chez GitGuardian, pour discuter d’une recherche originale sur la génération de mots de passe par les grands modèles de langage (LLM). Le point de départ est un article publié début 2026 par Irregular, une entreprise israélienne, qui avait démontré que les mots de passe générés par les LLM présentaient des biais statistiques importants, variables selon les modèles. Cette découverte a poussé l’équipe de GitGuardian à se demander si ces mots de passe biaisés se retrouvaient réellement « dans la nature », c’est-à-dire utilisés par de vraies personnes sur de vrais systèmes.

GitGuardian dispose d’un avantage unique pour répondre à cette question : son activité principale consiste à détecter des secrets (mots de passe, clés API, etc.) exposés publiquement, notamment sur GitHub. L’entreprise possède donc une base de données massive de secrets, dont une catégorie dite « générique » — des chaînes de caractères qui ressemblent à des mots de passe mais ne suivent aucun format standardisé identifiable.

Méthodologie : les chaînes de Markov

Pour détecter automatiquement si un mot de passe avait été généré par un LLM, l’équipe a eu l’idée de reconstruire une structure statistique classique : les chaînes de Markov, l’ancêtre technique des LLM, utilisées par exemple dans la prédiction de texte sur les claviers de téléphone. Ces chaînes excellent à capturer des biais statistiques dans une séquence de caractères.

La méthode a consisté à interroger 40 modèles de LLM différents, en leur demandant de générer des centaines de mots de passe chacun. À partir de ces échantillons, plusieurs types de chaînes de Markov ont été construits, prenant en compte (ou non) la position des caractères dans le mot de passe. Ces structures permettent ensuite, face à un mot de passe arbitraire, d’estimer la probabilité qu’il ait été généré par un LLM, un peu comme une mesure d’entropie relative à une base de référence précalculée.

Des biais spectaculaires

Les résultats ont confirmé, voire amplifié, les observations d’Irregular. L’exemple le plus frappant concerne un modèle (Opus, à l’époque de l’étude) qui ne générait des mots de passe uniques que dans 35 % des cas — autrement dit, il répétait le même mot de passe dans 65 % des requêtes. Un modèle de Mistral faisait encore pire : il ne générait qu’un seul et unique mot de passe, toujours identique, laissant penser qu’il se contentait de restituer une valeur mémorisée durant son entraînement plutôt que d’en générer une nouvelle.

Gaëtan Ferry explique ce phénomène par la tokenisation : certains modèles (comme GPT, étudié par Irregular) découpent le mot de passe en plusieurs tokens indépendants, ce qui introduit une certaine variabilité, alors que d’autres semblent traiter le mot de passe comme un token unique, menant à une quasi-absence de diversité. Un biais récurrent, observé sur presque tous les modèles, est l’alternance rigide entre catégories de caractères (minuscule, majuscule, chiffre, symbole) selon un schéma répétitif — un pattern idéal à capturer dans une chaîne de Markov. Sur un modèle donné, par exemple, un symbole « # » est suivi d’un « 8 » dans 90 % des cas.

Ce comportement s’explique par la nature même des LLM : entraînés à reproduire des régularités linguistiques, ils sont fondamentalement conçus pour être prévisibles — l’exact opposé de ce qu’exige une bonne génération de mot de passe, qui requiert une forte entropie.

Résultats sur les données réelles

En appliquant cette classification à un échantillon d’environ 3 millions de secrets génériques collectés entre janvier et mars 2026, l’équipe a identifié environ 28 000 mots de passe présentant une très forte probabilité d’avoir été générés par un LLM, avec un seuil de confiance élevé. Bien que ce nombre représente une fraction modeste de l’échantillon total, la tendance est constante : environ 1 500 à 2 500 nouveaux mots de passe générés par LLM apparaissent chaque semaine sur GitHub, un rythme jugé préoccupant compte tenu qu’il ne s’agit que du sous-ensemble visible publiquement — la réalité en environnements privés étant probablement plus large encore.

L’analyse du contexte d’apparition de ces mots de passe révèle deux scénarios typiques : soit un humain a manifestement demandé au LLM de générer un mot de passe pour l’insérer dans un fichier de configuration (par exemple une base de données), soit — plus troublant — un agent de développement autonome a lui-même pris la décision de générer et d’intégrer le mot de passe dans du code, comme dans un fichier de configuration Terraform observé par l’équipe, le tout dans un commit signé par l’agent d’IA lui-même, sans intervention humaine apparente.

Une anecdote marquante

Lors d’une présentation de ces résultats en conférence, Gaëtan Ferry a vu une personne quitter précipitamment la salle en voyant une diapositive listant des exemples de mots de passe faibles générés par un LLM. Cette même personne est revenue lui expliquer qu’elle avait justement demandé, ce matin-là, à un LLM de générer un mot de passe pour un service en ligne — et qu’elle venait de réaliser qu’il s’agissait exactement du même mot de passe affiché à l’écran. Un exemple frappant, selon lui, du fait que même des publics avertis en sécurité adoptent ce genre de pratique risquée.

Conclusion

Gaëtan Ferry conclut que le problème dépasse la simple question de la qualité du mot de passe généré : demander à un LLM hébergé chez un tiers de générer un secret expose potentiellement ce secret avant même qu’il n’apparaisse à l’écran de l’utilisateur, via les journaux et infrastructures du fournisseur. Il y voit une incompréhension plus profonde de la nature du LLM et des bonnes pratiques de gestion des secrets, et espère que ce partage contribuera à faire évoluer les pratiques des développeurs.

Collaborateurs

Crédits

Télécharger .m4a (28.4M) Télécharger .mp3 (23.6M)

Tags: ia, sstic


Tweet