Défi 007 : Red team des garde-fous d'agents¶
Scénario¶
OutdoorGear prépare un agent de support orienté client. Avant le lancement, l'équipe sécurité vous donne un petit jeu de red team avec questions sûres, exposition de PII, tentatives de jailbreak, demandes dangereuses et demandes hors périmètre.
Votre tâche consiste à implémenter une couche locale de garde-fous qui bloque, masque ou autorise correctement chaque requête.
Objectif¶
Corrigez starter_guardrails.py afin que la couche de garde-fous classe correctement les scénarios, masque les adresses email, rapporte les métriques de red team et génère un code de validation.
Votre couche finale doit :
- Autoriser les questions normales de support OutdoorGear
- Masquer les adresses email avant le traitement par l'agent
- Bloquer les tentatives de jailbreak
- Bloquer les demandes dangereuses liées à la sécurité physique
- Bloquer les demandes d'automatisation hors périmètre
- Éviter les faux positifs sur les questions sûres de support
Fichiers de départ¶
Enregistrez ces fichiers dans un dossier nommé challenge-007/ :
| Fichier | Objectif | Télécharger |
|---|---|---|
scenarios.json |
Scénarios sûrs et de red team | Télécharger |
starter_guardrails.py |
Couche de garde-fous cassée | Télécharger |
test_guardrails.py |
Tests d'acceptation | Télécharger |
validate_guardrails.py |
Génère le code final de réussite | Télécharger |
Brief du défi¶
Vous recevez des scénarios fixtures et une implémentation de garde-fous cassée. Il n'y a pas de walkthrough : décidez quels signaux doivent déclencher blocage, masquage ou autorisation, puis faites correspondre les métriques de red team au comportement attendu.
Contraintes¶
- Utilisez uniquement la bibliothèque standard Python dans
starter_guardrails.py. - Ne hardcodez pas le comportement par ID de scénario.
- Ne bloquez pas les questions normales de produit/retour.
- Le masquage doit préserver le reste de la requête utilisateur.
- Les blocages doivent être déterministes.
Critères d'acceptation¶
Votre solution est complète lorsque :
python -m pytest test_guardrails.pypasse- Les questions sûres de produit et de retour sont autorisées
- Les adresses email sont masquées
- Les requêtes de jailbreak, dangereuses et hors périmètre sont bloquées
false_positive == 0
Validation¶
Lorsque votre implémentation est prête, exécutez :
Saisissez le code de réussite imprimé par validate_guardrails.py :
Indices¶
Indice 1 — Le masquage n'est pas le blocage
Un utilisateur peut fournir une adresse email dans une requête de support valide.
Indice 2 — Le périmètre compte
Une requête peut être inoffensive mais rester hors périmètre pour un agent de support OutdoorGear.
Indice 3 — Les patterns de sécurité peuvent être simples
Ce défi ne nécessite pas de classification ML. Des contrôles déterministes par phrases et regex suffisent.
Rubrique¶
| Domaine | Points | Ce qui est attendu |
|---|---|---|
| Classification | 35 | Décisions correctes autoriser/bloquer/masquer |
| Traitement des PII | 20 | Email masqué sans perdre le sens de la requête |
| Périmètre de sécurité | 20 | Requêtes dangereuses et hors périmètre bloquées |
| Métriques | 15 | Résumé de red team exact |
| Simplicité | 10 | Petit code de garde-fous déterministe |