Que faut-il ne jamais envoyer ?
Ce que vous écrivez à un assistant de code part vers un serveur avec votre code. Il ne faut donc jamais y mettre de mot de passe, de clé d’accès ni de données personnelles.
Le code qu’il écrit peut aussi contenir des failles de sécurité. Savoir ce qui ne doit pas sortir de chez vous, et ce que le code généré oublie, évite des fuites coûteuses.
À la fin de cette leçon
Remarque
Je peux dire ce qu’il ne faut pas envoyer à un assistant et repérer les failles courantes d’un code généré.
Mots-clés
| Mot | Ce que ça veut dire |
|---|---|
| Secret | une information qui donne un accès : mot de passe, clé, jeton |
| Jeton | un texte qui prouve votre identité auprès d’un service |
| Donnée personnelle | une information sur une personne identifiable |
| Injection | une attaque où un texte reçu est pris pour une instruction |
| Paquet inventé | un nom de bibliothèque donné par l’assistant, qui n’existe pas |
| Permission | le droit demandé à l’utilisateur avant une action de l’agent |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Ce qui part vers le modèle
Votre requête, les fichiers que l’assistant lit et les résultats des commandes qu’il lance sont envoyés au modèle. Dans le laboratoire, ce modèle tourne sur un serveur de la plateforme.
Un assistant d’un autre service peut avoir d’autres règles de conservation. Lisez-les avant d’y mettre du code d’un employeur ou d’un client.
Peut-on l’envoyer à un assistant ?
| Contenu | Envoi | Pourquoi |
|---|---|---|
| Une fonction que vous écrivez en cours | Oui | Aucune donnée sensible |
| Un mot de passe de base de données | Jamais | Il donne un accès |
| Une clé d’accès à un service payant | Jamais | Quelqu’un peut la dépenser |
| Un fichier d’élèves avec noms et notes | Non | Ce sont des données personnelles |
| Le code confidentiel d’un employeur | Seulement si c’est permis | Un contrat peut l’interdire |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Cherchez les secrets avant d’envoyer
Avant d’envoyer un fichier, cherchez-y des mots comme mot_de_passe, cle_api ou jeton. La commande grep le fait sur un texte. La commande suivante crée un petit texte inventé avec printf et cherche ces noms dedans.
Elle affiche deux lignes : la 2, mot_de_passe=abc, et la 3, jeton=. La seconde n’a aucune valeur : un bon outil doit faire la différence.
Chercher des noms de secrets dans un texte
printf 'nom=Lea\nmot_de_passe=abc\njeton=\n' | grep -n -E "mot_de_passe|jeton"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 le laboratoire protège
La configuration de l’assistant du laboratoire contient une clé factice. Le vrai jeton est ajouté par le serveur de la plateforme, et vous ne le voyez jamais. La première commande lit la ligne de cette clé : la valeur est lab.
La seconde lit les permissions : modifier un fichier et lancer une commande demandent votre accord, et l’accès au web est refusé.
Lire la clé factice de la configuration
docker exec agent grep -n apiKey /home/node/.config/opencode/opencode.jsonAffiché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.
Lire les permissions de l’assistant
docker exec agent grep -n permission /home/node/.config/opencode/opencode.jsonAffiché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.
Les failles que le code généré répète
Un assistant a lu beaucoup de code, y compris du code fragile. Il recolle parfois une requête SQL avec +, ce qui ouvre une injection. Il écrit un mot de passe d’exemple dans le fichier, utilise un hachage trop faible, ou oublie de vérifier ce qu’il reçoit.
Il peut aussi citer une bibliothèque qui n’existe pas. Quelqu’un peut publier ce nom avec du code malveillant : vérifiez qu’un paquet existe avant de l’installer.
Ce qu’il faut relire et pourquoi
| Ligne ou geste | Risque |
|---|---|
| "SELECT ... WHERE nom = " + nom | Injection SQL |
| cle_api = "abc123" | Un secret écrit dans le fichier |
| pip install un-nom-invente | Un paquet piégé ou inexistant |
| exec(texte_recu) | Du code exécuté sur la parole d’un inconnu |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Erreur fréquente
Attention
Beaucoup pensent qu’il suffit d’effacer le mot de passe après l’avoir envoyé. Il est déjà parti vers un serveur. Considérez-le comme public : changez-le tout de suite chez le service concerné.
Écrire un détecteur de secrets
Dans le devoir, vous cherchez des secrets dans les lignes d’un fichier. Un secret est un nom parmi mot_de_passe, cle_api et jeton, suivi de =. La valeur doit exister : ni vide, ni des guillemets vides, ni un texte entre < et >.
Une ligne qui contient -----BEGIN et PRIVATE KEY est aussi un secret. Toutes les valeurs du devoir sont inventées.