Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Mots de passe et clés au mauvais endroit

Après cette leçon: Je peux trouver un secret au mauvais endroit et dire où il doit être.

Leçon de 55 min3 commandesLab WrongSecrets : trouver des secrets codés en dur et apprendre où ranger les secrets

La clé du fichier de l'an dernier

Un stagiaire publie le code d'un site sur un dépôt en ligne. Un fichier de réglages contient la clé de l'hébergeur. Le lendemain, il retire la ligne et enregistre à nouveau.

Tout le monde croit l'affaire close. Un an plus tard, un inconnu lit l'ancienne version du fichier. La clé fonctionne toujours.

La règle unique

Attention

Ce laboratoire est une application qui cache de faux secrets volontairement. Cherchez dans votre copie privée, et nulle part ailleurs : elle n'a aucune sortie vers Internet. Chercher des secrets dans un système qui n'est pas le vôtre, ou sans permission, est un délit dans presque tous les pays.

À la fin de cette leçon

Remarque

Je peux trouver un secret au mauvais endroit et dire où il doit être.

Mots-clés

MotCe que ça veut direExemple
Secretun mot de passe, une clé ou un jeton qui doit rester privé
Variable d'environnementun réglage nommé donné à un programme quand il démarreMOT_DE_PASSE_BASE
Gestionnaire de secretsun coffre qui ne remet les secrets qu'aux programmes autorisés
Historiquetoutes les versions passées de chaque fichier d'un dépôt de code
Renouvelerremplacer un secret par un nouveau
Image de conteneurune copie emballée d'un programme et de ses fichiers

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un secret fuit par bien des endroits

Un secret fuit partout où une copie peut être lue par quelqu'un qui n'y avait pas droit. Le code n'est qu'un endroit parmi d'autres.

Il peut être dans un fichier source, dans d'anciennes versions ou dans une image de conteneur. Il peut être dans un fichier de réglages, dans un journal, ou dans un script envoyé à chaque visiteur. Un secret dont le navigateur a besoin est connu de tous.

Exemple travaillé : où vit chaque copie

EndroitQui peut le lireMieux
Un fichier sourceQuiconque a le codeLe lire dans l'environnement
D'anciennes versionsQuiconque a une copie de l'historiqueLe renouveler, puis nettoyer l'historique
Une image de conteneurQuiconque peut la téléchargerLe donner au lancement, pas à la fabrication
Un script envoyé aux navigateursChaque visiteurLe garder sur le serveur
Un fichier journalTous ceux qui lisent les journauxNe jamais l'écrire

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Regardez l'application de votre laboratoire

Votre laboratoire fait tourner WrongSecrets. Démarrez-le, puis lancez ces trois commandes. Elles regardent seulement.

La première demande si l'application va bien. La deuxième demande quelles pages de gestion elle offre à n'importe qui. La troisième montre le début d'un script qu'elle envoie à chaque visiteur.

L'application va-t-elle bien ?

Commande
curl -s -w "\n" http://wrongsecrets:8080/actuator/health

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Quelles pages de gestion offre-t-elle ?

Commande
curl -s http://wrongsecrets:8080/actuator | grep -o 'actuator/[a-z]*' | sort -u

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le début du script de chaque visiteur

Commande
curl -s http://wrongsecrets:8080/js/index.js | head -n 1 | cut -c 1-120

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que disent les trois réponses

La première affiche une courte ligne qui se termine par "status":"UP". La deuxième affiche trois noms : auditevents, health et info. Demandez-vous lequel un inconnu ne devrait pas lire.

La troisième affiche du code d'allure brouillée. Il est brouillé, pas verrouillé : le navigateur doit tout lire pour l'exécuter, et vous aussi.

Une erreur fréquente

Attention

Beaucoup pensent que supprimer un secret d'un fichier l'efface. C'est faux : les anciennes versions restent dans l'historique, dans chaque copie et dans chaque image déjà fabriquée. Considérez comme perdu tout secret qui a été exposé. Renouvelez-le d'abord. Nettoyez ensuite.

Un secret a sa place dans un coffre

Le programme demande le secret à son démarrage. Le gestionnaire de secrets vérifie qui demande et le remet. Rien n'est écrit dans le code ni dans l'image.

Donnez à chaque programme seulement les secrets dont il a besoin. Renouvelez-les selon un calendrier : une fuite ne sert alors à l'attaquant que peu de temps.

Les secrets ont des formes qu'un programme repère

Beaucoup de secrets se ressemblent. Une clé de cloud commence par AKIA et compte 20 lettres et chiffres. Un fichier de clé privée commence par une ligne de tirets et le mot BEGIN. Une ligne mot_de_passe = "..." porte une valeur.

Les outils de balayage cherchent ces formes dans le code et l'historique. Ils en trouvent beaucoup, pas toutes. Une trouvaille est un signal pour renouveler.

Un tout petit balayeur

Code: python
lignes = [
    "nom = boutique",
    "cle = AKIAABCDEFGHIJKLMNOP",
    "mot_de_passe = ouvre-sesame",
]
# Ajoutez une quatrième ligne qui contient une forme de secret, puis lancez le code.
numero = 0
for ligne in lignes:
    numero = numero + 1
    if "AKIA" in ligne or "mot_de_passe" in ligne:
        print("à vérifier : ligne", numero)

À propos de ce labo et de sa source: Lab WrongSecrets : trouver des secrets codés en dur et apprendre où ranger les secrets

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.