https://api.orcarouter.ai/v1/... ; seules les clés et les politiques dans
la passerelle changent. Pour l’anatomie d’attaque sous-jacente, lisez
Injection de prompt et
Appels d’outils dangereux ;
cette page est la réponse.
Les rôles dont chaque étape a besoin sont indiqués en ligne. Lire le flux
Matches de guardrail est ouvert à tout Member ; les vues Events,
Runs et de trace du firewall nécessitent Developer+ ; révoquer une
clé, appliquer une posture d’autonomie, et éditer une politique nécessitent
Developer+ ; marquer une correspondance de guardrail comme faux positif
nécessite Admin.
1. La boucle de réponse aux incidents de sécurité IA
Trois phases, exécutées dans l’ordre. Ne sautez pas directement au durcissement — contenez d’abord afin que l’attaquant perde l’accès pendant que vous enquêtez.Contenir
Révoquez la clé compromise afin que l’attaquant ne puisse pas faire un
autre appel. Frappez un remplacement frais et étroitement scopé.
Cadrer
Lisez les flux Events / Runs du firewall et Matches du guardrail
pour voir exactement ce que la clé a fait et ce qui s’est déclenché.
Durcir
Resserrez la posture d’autonomie et ajoutez la règle qui l’aurait
attrapée, afin que la même attaque ne puisse pas se reproduire.
2. Contenir — révoquer la clé
Le premier mouvement est de couper l’accès. Une clésk-orca-... fuitée
continue de fonctionner jusqu’à ce que vous la révoquiez, donc faites ceci
avant toute autre chose.
Dans la console, ouvrez API Keys, trouvez la clé compromise (elle est
masquée à l’affichage — repérez-la par nom, environnement, ou dernière
utilisation), et supprimez-la (rôle Developer). La suppression est
immédiate : la toute prochaine requête sur cette clé est rejetée à la
passerelle.
Puis frappez un remplacement, scopé au minimum dont la charge de travail a
besoin — jamais votre clé à portée de compte. Dans API Keys → Nouvelle
clé (rôle Developer) :
Plafonner le rayon d'explosion sur la nouvelle clé
Plafonner le rayon d'explosion sur la nouvelle clé
Définissez
credit_limit_usd à un plafond raisonnable (0 = illimité)
afin qu’une future fuite ne puisse pas drainer le quota, allow_ips sur
les IPs d’egress de votre backend si l’appelant tourne depuis un serveur
fixe, et expired_time pour tout ce qui est temporaire (-1 = n’expire
jamais). Utilisez model_limits (avec model_limits_enabled) pour
clôturer la clé aux seuls modèles dont elle a besoin.Attacher vos politiques à la nouvelle clé
Attacher vos politiques à la nouvelle clé
Choisissez votre guardrail durci dans le menu déroulant Guardrail
(définit
guardrail_id) et votre politique firewall dans le menu
déroulant Firewall policy (définit firewall_policy_id). Les deux
liaisons vivent sur la clé dans la passerelle, de sorte que la nouvelle
clé soit gouvernée dès son premier appel. Copiez le texte en clair une
seule fois — il est masqué partout après création.3. Cadrer — lire les flux Events et Matches
Maintenant, découvrez ce que la clé a réellement fait. La passerelle a déjà enregistré chaque appel d’outil et chaque règle qui s’est déclenchée — à portée d’espace de travail, sans instrumentation supplémentaire.| Flux | Où | Rôle | Ce qu’il répond |
|---|---|---|---|
| Firewall → Events | par appel d’outil | Developer+ | Chaque évaluation — verdict, surface, outil, args, l’exécution à laquelle elle appartient. |
| Firewall → Runs | agrégé | Developer+ | « Ce que cette session d’agent a réellement fait » — répartition des verdicts, outils et modèles distincts. |
| Guardrails → Matches | par hit de règle | Member | Chaque règle de guardrail qui s’est déclenchée — type, action, stage, détail. |
deny et audit pour voir ce qui a été bloqué versus ce qui
est passé sous une posture observe-only.
Recoupez Guardrails → Matches pour la même fenêtre. Si une règle
Prompt-Injection Basics a signalé la requête — des phrases comme
« ignore previous instructions » ou « reveal your system prompt » —
elle atterrit ici avec le type et le stage de la règle.
Le flux Matches enregistre la sous-chaîne correspondante uniquement
quand Log raw content est activé pour ce guardrail — il est désactivé
par défaut (la posture prudente en matière de vie privée). Avec lui
désactivé, vous voyez quand même *qu’*une règle s’est déclenchée et sa
méta-chaîne de détail, juste pas le texte littéral. Activez-le par guardrail
quand vous avez besoin de la sous-chaîne pour le triage ; le réglage est
non-rétroactif.
POST /api/guardrail/match/:id/mark-fp, Admin) afin qu’elle cesse de
fausser votre signal pendant que vous ajustez.
4. Durcir — fermer la lacune
Le confinement arrête cet attaquant ; le durcissement arrête le prochain. Deux mouvements : resserrez immédiatement la posture de l’espace de travail, puis ajoutez la règle spécifique qui aurait attrapé ce que vous venez de voir.Chemin rapide — élever le niveau d’autonomie
Si l’incident a exposé un agent qui tournait trop ouvert, basculez toute la posture de l’espace de travail en une seule transaction. Dans Firewall → Posture, appliquez le niveau d’autonomietight (rôle Developer). En un seul mouvement, cela définit deny
par défaut, refuse le shell destructeur, refuse les noms d’outils SSRF de
forme « fetch », et applique les guardrails PII Shield et Secrets &
API-Key Blocker. Chaque changement est une seule transaction avec
annulation en un clic à partir du snapshot d’audit, de sorte que vous
puissiez revenir directement en arrière si c’est trop strict.
Chemin précis — ajouter la règle qui l’aurait attrapée
Pour l’injection de prompt spécifiquement, OrcaRouter livre un preset Prompt-Injection Basics (catégorie safety) — une règle de mot-clé qui signale les phrases d’injection courantes pour revue sans bloquer l’utilisateur. Commencez là pour obtenir du signal, puis escaladez. Son frère plus strict, le Jailbreak / Role-Play Blocker, bloque la même classe avec un regex. Dans Guardrails → Nouveau guardrail (rôle Developer ; la sandbox Test exécute les règles candidates en ligne —llm_judge fait un appel
de modèle payant — donc c’est Developer+ aussi), appliquez le preset
Prompt-Injection Basics, puis ajoutez une règle llm_judge pour
attraper les injections obfusquées qu’une liste de mots-clés manque :
judge_fail_open: false pour traiter une erreur ou un timeout
de juge comme un block quand une vérification manquée est inacceptable.
Prouvez toute la politique dans l’onglet Test et contre un corpus
Eval avant de l’attacher à une clé.
Déployez la nouvelle règle en toute sécurité
N’appliquez pas une règle fraîche à l’aveugle sur du trafic en direct. Pour le firewall, définissezshadow_mode: true sur la politique — chaque
verdict appliquant est rétrogradé en audit et journalisé comme [shadow] would …, de sorte que vous le regardiez se déclencher sur le flux
Events avant qu’il ne change le moindre trafic. Pour les guardrails,
définissez l’action d’une nouvelle règle sur flag d’abord, surveillez le
flux Matches, puis promouvez-la en block ou mask. Voir
modes d’application pour le
chemin complet observe → shadow → enforce.
5. Vérifiez le correctif
Confirmez que la boucle est fermée avant de la déclarer résolue.Rejouer l'attaque dans la sandbox
Collez le prompt malveillant dans l’onglet Test du guardrail au
stage
input et confirmez que le verdict est maintenant un block (ou
flag). Pour un incident d’appel d’outil, exécutez en dry-run l’appel
incriminé dans Firewall → Test (Developer+) et confirmez que le
verdict est deny. Aucune sandbox n’envoie quoi que ce soit en amont ni
ne persiste quoi que ce soit.Confirmer que l'ancienne clé est morte
Envoyez une requête sur la clé révoquée et confirmez qu’elle est
rejetée. Un guardrail bloqué renvoie une HTTP 400
guardrail_blocked
; un appel d’outil refusé renvoie une HTTP 400 firewall_blocked —
et un block ne coûte aucun quota (les blocks au stade input se
déclenchent avant le metering ; les blocks de sortie remboursent le
quota pré-consommé) et est marqué skip-retry.Capturer la chronologie
Chaque changement de guardrail écrit une ligne d’historique de versions
que vous pouvez comparer et restaurer. Les changements de
firewall sont capturés dans la piste d’audit, et un apply de niveau
d’autonomie porte un snapshot d’annulation en un clic. Ensemble avec le
journal d’audit de l’espace de travail, c’est votre enregistrement
d’incident — qui a changé quoi, quand, et quelle était la posture avant
et après.
6. Runbook en un coup d’œil
| Phase | Action | Où | Rôle |
|---|---|---|---|
| Contenir | Supprimer la clé fuitée | API Keys | Developer+ |
| Contenir | Frapper un remplacement scopé | API Keys → Nouvelle clé | Developer+ |
| Cadrer | Lire les appels d’outils + verdicts | Firewall → Events / Runs | Developer+ |
| Cadrer | Lire les règles qui se sont déclenchées | Guardrails → Matches | Member |
| Durcir | Élever la posture | Firewall → Posture (tight) | Developer+ |
| Durcir | Ajouter la règle qui attrape | Guardrails / Firewall | Developer+ |
| Vérifier | Rejouer dans la sandbox | Onglets Test | Developer+ |
7. Où aller ensuite
Checklist go-live
La passe de durcissement pré-production — scopez les clés et verrouillez
la posture avant de déployer.
Injection de prompt
L’attaque à laquelle ce runbook répond, de bout en bout.
Modes d'application
Observe → shadow → enforce — déployez une nouvelle règle sans casser le
trafic.
Arrêter l'exfiltration
Verrouillez les destinations sortantes si l’incident a touché le réseau.
