01 IA responsable

Risques de sécurité et domaines sensibles

1.6 Les risques sécurité du code généré

Copilot peut générer du code vulnérable si le contexte ou le prompt ne sont pas assez précis.

Risque 1 : Injection SQL

Mauvais code :

Python
query = f"SELECT * FROM users WHERE id = {user_id}"

Bon code :

Python
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

Risque 2 : Command injection

Mauvais code :

Python
import os

def ping_host(host):
    os.system(f"ping -c 1 {host}")

Si host vient d’un utilisateur, c’est dangereux.

Meilleure version :

Python
import subprocess

def ping_host(host):
    subprocess.run(
        ["ping", "-c", "1", host],
        check=True
    )

Et encore mieux : valider l’input avant.

Risque 3 : Secrets hardcodés

Mauvais code :

Python
API_KEY = "prod-123456789"

Bon code :

Python
import os

API_KEY = os.getenv("API_KEY")

Risque 4 : Mauvaise gestion des permissions cloud

Mauvaise policy IAM :

JSON
{
  "Effect": "Allow",
  "Action": "*",
  "Resource": "*"
}

Copilot peut générer ça pour aller vite.

Meilleure approche :

JSON
{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject"
  ],
  "Resource": [
    "arn:aws:s3:::my-bucket/*"
  ]
}

Principe :

Toujours appliquer le least privilege.

1.10 Les domaines sensibles où il faut être prudent

Copilot est utile, mais certains domaines nécessitent une validation beaucoup plus stricte.

Sécurité

Exemples :

  • authentification ;
  • autorisation ;
  • chiffrement ;
  • gestion des secrets ;
  • IAM ;
  • firewall rules ;
  • validation d’input ;
  • gestion de sessions.

Règle :

Ne jamais accepter du code sécurité sans review.

Infrastructure cloud

Les ressources cloud (AWS, Azure, GCP ou autre) sont un piège classique : une configuration qui fonctionne peut être beaucoup trop permissive.

Copilot peut générer :

  • des policies trop permissives ;
  • des security groups ouverts ;
  • des buckets publics ;
  • des rôles IAM trop larges ;
  • des configurations réseau faibles ;
  • des secrets en clair.

Exemple dangereux :

Terraform
cidr_blocks = ["0.0.0.0/0"]

Ce n’est pas toujours mauvais, mais il faut comprendre le contexte.

Données personnelles

Attention aux systèmes qui manipulent :

  • noms ;
  • emails ;
  • adresses ;
  • numéros de téléphone ;
  • données de santé ;
  • informations financières ;
  • données RH ;
  • logs utilisateurs.

Bonne pratique :

Texte
Use anonymized sample data instead of real customer data.

Décisions automatisées

Très risqué si le système décide :

  • qui est accepté ;
  • qui est refusé ;
  • qui est suspect ;
  • qui est prioritaire ;
  • qui reçoit un prix ;
  • qui obtient un crédit ;
  • qui est signalé.

Copilot peut aider à coder, mais la conception doit être très contrôlée.

À retenir pour le GH-300

  • Les domaines sensibles (authentification, secrets, permissions, données personnelles) demandent une validation renforcée.
  • Le bon réflexe est d’agir : corriger ou refuser, tester, faire relire, plutôt que seulement nommer la faille.
  • Moindre privilège pour les permissions ; aucun secret dans le code ni dans un prompt.
  • Une décision automatisée sur des personnes exige une conception très contrôlée.

D1 · Utiliser GitHub Copilot de façon responsable · 15–20 %