Aller au contenu

Défi 007 : Red team des garde-fous d'agents

Niveau : L300 Type : Défi Durée : ~60 min 💰 Coût : Gratuit (local)

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.py passe
  • 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 :

python -m pytest test_guardrails.py
python validate_guardrails.py

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

Labs associés