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

Retrouver un secret oublié dans du code

Après cette leçon: Je peux repérer un secret oublié dans du code et dire où le ranger à la place.

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

Une clé laissée sur la porte

Un secret, dans un programme, est une information qui donne un accès : un mot de passe, une clé d'accès, un jeton. Quand un développeur l'écrit dans son code, tous ceux qui lisent le code le lisent aussi.

Dans cette leçon, tu apprends à reconnaître un secret oublié, et à le ranger au bon endroit.

À la fin de cette leçon

Remarque

Je peux repérer un secret oublié dans du code et dire où le ranger à la place.

Mots clés

MotCe que ça veut direExemple
Secretune information qui donne un accèsun mot de passe
Clé d'accèsun long texte qui prouve qui tu es à un service
Jetonune clé d'accès qui ne dure qu'un temps
Variable d'environnementune valeur donnée au programme depuis l'extérieur de son code
Historiquela liste de toutes les versions passées d'un projet

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

Où les secrets s'échappent-ils ?

Presque toujours par accident. Un élève écrit un mot de passe dans son programme « pour tester » et envoie le projet en ligne.

D'autres secrets sont dans un fichier de réglages, dans un message d'erreur affiché à l'écran, ou sur une capture d'écran.

Les endroits où on les retrouve

EndroitExemplePourquoi c'est un risque
Le codemdp = "azerty2026" dans un fichier .pyTous les lecteurs du code le lisent
Un fichier de réglagesUn fichier .env envoyé avec le projetIl part en ligne avec le reste
L'historiqueUne ancienne version où le mot de passe est écritEffacer la ligne ne l'efface pas du passé
Un message d'erreurUne page qui affiche l'adresse de la base et son mot de passeTout visiteur peut la voir

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

Comment reconnaître un secret ?

Un secret a souvent une forme. Le nom de la variable le dit : mdp, password, token, cle. La valeur est souvent entre guillemets.

Certaines clés ont même un début connu : une clé d'accès de cloud commence par AKIA, suivi de seize lettres et chiffres. Les outils de recherche de secrets cherchent ces formes.

Chercher une forme dans une ligne

Code: python
ligne = 'cle = "AKIAIOSFODNN7EXAMPLE"'
# Une clé d'accès de cloud commence par AKIA.
if "AKIA" in ligne:
    print("Cette ligne ressemble à une clé de cloud.")
else:
    print("Rien de suspect.")
# Remplace AKIA par AKIB dans la ligne : que se passe-t-il ?

Une erreur fréquente

Attention

Beaucoup pensent qu'effacer la ligne du code fait disparaître le secret. Il reste dans l'historique, et dans toutes les copies déjà faites. Après une fuite, on révoque le secret et on en crée un nouveau.

Où ranger un secret à la place ?

Le programme lit le secret à l'extérieur de son code : dans une variable d'environnement, ou dans un coffre de secrets que le service fournit.

Un fichier .env sert pour les essais, mais on le met dans la liste des fichiers que le projet ignore. Ainsi il ne part jamais en ligne.

La règle du lab

Important

Cherche seulement dans l'application de ton propre lab, et seulement avec la permission de ton enseignant. Les secrets de ce lab sont faux. Ne cherche jamais un vrai secret chez quelqu'un d'autre.

Avant de commencer

Remarque

Appuie sur Start the lab et attends que l'application soit prête. Appuie sur Open et lis seulement le Challenge 0 : il explique le jeu. Les autres défis sont le travail du lab.

Demande à l'application si elle va bien

Commande
curl -s 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.

Donne un secret au programme depuis l'extérieur

Commande
MA_CLE=abc123 sh -c 'echo "la clé vaut $MA_CLE"'

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.

Relance sans donner de valeur

Commande
sh -c 'echo "la clé vaut $MA_CLE"'

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 montrent les deux commandes

La première donne la valeur abc123 au programme seulement pour cette commande. Il la lit avec $MA_CLE, et la valeur n'est écrite nulle part dans le code.

La deuxième montre que la valeur n'est plus là : le secret ne reste pas dans la commande. Le même principe vaut pour un vrai programme.

À 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.