https://api.orcarouter.ai/v1/...; cambiano solo le
chiavi e le policy nel gateway. Per l’anatomia dell’attacco sottostante, leggi
Prompt injection e
Chiamate a tool pericolose; questa
pagina è la risposta.
I ruoli che ogni passaggio richiede sono indicati inline. Leggere il feed
Matches del guardrail è aperto a qualsiasi Member; le viste Events,
Runs e trace del firewall richiedono Developer+; revocare una chiave,
applicare una postura di autonomia e modificare una policy richiedono
Developer+; marcare un guardrail match come falso positivo richiede
Admin.
1. Il loop di incident response per la sicurezza AI
Tre fasi, eseguite in ordine. Non saltare dritto all’hardening — contieni prima così l’attaccante perde l’accesso mentre indaghi.Contieni
Revoca la chiave compromessa così l’attaccante non può fare un’altra
chiamata. Conia un rimpiazzo fresco e strettamente con scope.
Delimita
Leggi i feed Events / Runs del firewall e Matches del guardrail per
vedere esattamente cosa ha fatto la chiave e cosa è scattato.
Irrigidisci
Irrigidisci la postura di autonomia e aggiungi la regola che l’avrebbe colto,
così lo stesso attacco non può ricapitolare.
2. Contieni — revoca la chiave
La prima mossa è tagliare l’accesso. Una chiavesk-orca-... trapelata continua
a funzionare finché non la revochi, quindi fai questo prima di ogni altra cosa.
Nella console, apri API Keys, trova la chiave compromessa (è mascherata in
visualizzazione — abbinala per nome, environment o ultimo uso), ed eliminala
(ruolo Developer). L’eliminazione è immediata: la richiesta successiva su
quella chiave viene rifiutata al gateway.
Poi conia un rimpiazzo, con scope al minimo che il carico di lavoro richiede —
mai la tua chiave a livello di account. In API Keys → New key (ruolo
Developer):
Limita il blast radius sulla nuova chiave
Limita il blast radius sulla nuova chiave
Imposta
credit_limit_usd a un tetto sensato (0 = illimitato) così un leak
futuro non può drenare quota, allow_ips sugli IP di egress del tuo backend
se il chiamante gira da un server fisso, e expired_time per qualsiasi cosa
temporanea (-1 = non scade mai). Usa model_limits (con
model_limits_enabled) per recintare la chiave solo ai modelli di cui ha
bisogno.Collega le tue policy alla nuova chiave
Collega le tue policy alla nuova chiave
Scegli il tuo guardrail hardenizzato dal dropdown Guardrail (imposta
guardrail_id) e la tua policy del firewall dal dropdown Firewall policy
(imposta firewall_policy_id). Entrambi i binding vivono sulla chiave nel
gateway, così la nuova chiave è governata dalla sua prima chiamata. Copia il
plaintext una sola volta — è mascherato ovunque dopo la creazione.3. Delimita — leggi i feed Events e Matches
Ora scopri cosa ha effettivamente fatto la chiave. Il gateway ha già registrato ogni chiamata a tool e ogni regola che è scattata — con scope a livello di workspace, nessuna strumentazione extra.| Feed | Dove | Ruolo | A cosa risponde |
|---|---|---|---|
| Firewall → Events | per chiamata a tool | Developer+ | Ogni valutazione — verdetto, superficie, tool, args, l’esecuzione a cui appartiene. |
| Firewall → Runs | aggregato | Developer+ | “Cosa ha effettivamente fatto questa sessione di agent” — mix di verdetti, tool e modelli distinti. |
| Guardrails → Matches | per hit di regola | Member | Ogni regola di guardrail che è scattata — tipo, azione, stage, dettaglio. |
deny e audit per
vedere cosa è stato bloccato rispetto a cosa è passato sotto una postura
solo-observe.
Incrocia Guardrails → Matches per la stessa finestra. Se una regola
Prompt-Injection Basics ha segnalato la richiesta — frasi come “ignore
previous instructions” o “reveal your system prompt” — atterra qui con il
tipo e lo stage della regola.
Il feed Matches registra la sottostringa corrispondente solo quando Log
raw content è attivo per quel guardrail — è disattivato per default (la
postura conservativa sulla privacy). Con esso disattivato vedi comunque che
una regola è scattata e la sua meta-stringa di dettaglio, solo non il testo
letterale. Attivalo per guardrail quando ti serve la sottostringa per triage;
l’impostazione è non-retroattiva.
POST /api/guardrail/match/:id/mark-fp, Admin) così smette di distorcere il
tuo segnale mentre metti a punto.
4. Irrigidisci — chiudi il gap
Il contenimento ferma questo attaccante; l’hardening ferma il prossimo. Due mosse: irrigidisci subito la postura del workspace, poi aggiungi la regola specifica che avrebbe colto ciò che hai appena visto.Percorso rapido — alza il livello di autonomia
Se l’incidente ha esposto un agent che girava troppo aperto, ribalta l’intera postura del workspace in una transazione. In Firewall → Posture, applica il livello di autonomiatight
(ruolo Developer). In una mossa questo imposta default-deny, nega la shell
distruttiva, nega i nomi di tool SSRF a forma di fetch, e applica i guardrail
PII Shield e Secrets & API-Key Blocker. Ogni modifica è una transazione
con undo a un clic dallo snapshot di audit, così puoi tornare dritto indietro
se è troppo stretto.
Percorso preciso — aggiungi la regola che l’avrebbe colto
Per la prompt injection in particolare, OrcaRouter fornisce un preset Prompt-Injection Basics (categoria safety) — una regola per keyword che segnala le frasi di injection comuni per revisione senza bloccare l’utente. Parti da lì per ottenere segnale, poi escala. Il suo fratello più stretto, il Jailbreak / Role-Play Blocker, blocca la stessa classe con un regex. In Guardrails → New guardrail (ruolo Developer; la sandbox di Test esegue le regole candidate inline —llm_judge fa una chiamata a modello a
pagamento — quindi è Developer+ anche), applica il preset Prompt-Injection
Basics, poi aggiungi una regola llm_judge per cogliere le injection offuscate
che una lista di keyword manca:
judge_fail_open: false per trattare un errore o timeout del judge come un block
quando un controllo mancato è inaccettabile. Dimostra l’intera policy nel tab
Test e contro un corpus Eval prima di collegarla a una chiave.
Fai il rollout della nuova regola in sicurezza
Non applicare una regola fresca alla cieca sul traffico live. Per il firewall, impostashadow_mode: true sulla policy — ogni verdetto applicativo viene
declassato a audit e loggato come [shadow] would …, così la osservi scattare
sul feed Events prima che cambi qualsiasi traffico. Per i guardrail, imposta
l’azione di una nuova regola a flag all’inizio, osserva il feed Matches,
poi promuovila a block o mask. Vedi
modalità di applicazione per il
percorso completo observe → shadow → enforce.
5. Verifica la correzione
Conferma che il loop sia chiuso prima di considerarlo risolto.Riproduci l'attacco nella sandbox
Incolla il prompt malevolo nel tab Test del guardrail allo stage
input e
conferma che il verdetto sia ora un block (o flag). Per un incidente di
chiamata a tool, esegui in dry-run la chiamata incriminata in Firewall →
Test (Developer+) e conferma che il verdetto sia deny. Nessuna delle due
sandbox invia nulla a monte o persiste alcunché.Conferma che la vecchia chiave sia morta
Invia una richiesta sulla chiave revocata e conferma che sia rifiutata. Un
guardrail bloccato restituisce HTTP 400
guardrail_blocked; una chiamata
a tool negata restituisce HTTP 400 firewall_blocked — e un block non
costa alcuna quota (i block allo stage di input scattano prima del
metering; i block di output rimborsano la quota pre-consumata) ed è marcato
skip-retry.Snapshot della timeline
Ogni modifica al guardrail scrive una riga di version-history che puoi fare
diff e revert. Le modifiche al firewall sono catturate nella traccia
di audit, e un’applicazione di livello di autonomia porta uno snapshot di undo
a un clic. Insieme al log di audit del workspace, quello è il tuo record
dell’incidente — chi ha cambiato cosa, quando, e quale fosse la postura prima
e dopo.
6. Runbook a colpo d’occhio
| Fase | Azione | Dove | Ruolo |
|---|---|---|---|
| Contieni | Elimina la chiave trapelata | API Keys | Developer+ |
| Contieni | Conia un rimpiazzo con scope | API Keys → New key | Developer+ |
| Delimita | Leggi chiamate a tool + verdetti | Firewall → Events / Runs | Developer+ |
| Delimita | Leggi le regole che sono scattate | Guardrails → Matches | Member |
| Irrigidisci | Alza la postura | Firewall → Posture (tight) | Developer+ |
| Irrigidisci | Aggiungi la regola che coglie | Guardrails / Firewall | Developer+ |
| Verifica | Riproduci nella sandbox | Tab Test | Developer+ |
7. Dove andare dopo
Checklist di go-live
La passata di hardening pre-produzione — dai scope alle chiavi e blinda la
postura prima di spedire.
Prompt injection
L’attacco a cui questo runbook risponde, end to end.
Modalità di applicazione
Observe → shadow → enforce — fai il rollout di una nuova regola senza rompere
il traffico.
Fermare l'esfiltrazione
Blinda le destinazioni in uscita se l’incidente ha toccato la rete.
