sanitize del firewall redige davvero, cosa non redige, e quale
controllo governa il contenuto che un tool restituisce.
1. Cosa significa “sanitize” sulla superficie mcp
Quando un agent chiama un tool attraverso il gateway MCP, ognitools/call viene valutato sulla superficie mcp prima del dispatch.
Una regola che matcha può portare uno dei
verdetti del firewall scrivibili — allow, audit, deny, sanitize,
pending_approval, o cap_cost. Il verdetto sanitize è quello che redige:
- Esegue un insieme di detector a forma di segreto sugli argomenti della chiamata (il JSON che il modello ha passato nel tool).
- Ogni match viene sostituito con un token canonico come
[redacted:openai_key], e gli argomenti ri-scritti sono ciò che viene inoltrato al server. - Il tool gira comunque —
sanitizeè un verdetto non-bloccante, di lasciapassare. L’agent non va in crash; semplicemente non consegna mai il segreto grezzo al tool.
sk-, token Bearer, US SSN, numeri di carta validi-Luhn,
email), e una regola può aggiungere regex custom i cui match rendono come
[redacted:custom].
Sulla superficie inbound — i
tools[] pubblicizzati che una richiesta
dichiara, prima che qualsiasi tool sia chiamato — non ci sono argomenti al
momento della chiamata da redigere, quindi un verdetto sanitize lì fallisce
closed ed escala a deny. Sanitize è significativo solo dove c’è un payload di
argomenti live da ri-scrivere: le superfici mcp e response.2. Una regola concreta
Diciamo che vuoi che qualsiasi chiamata a tool i cui argomenti contengono una chiave in stile OpenAI venga inoltrata con la chiave ripulita, anziché bloccata. Scrivi una regola sulla superficie mcp con un verdettosanitize,
configurata per rilevare quella forma di segreto. Fallo dalla console
(Firewall → policy → regole); la scrittura richiede Developer+.
La regola, concettualmente:
| Campo | Valore |
|---|---|
| Superficie | mcp |
tool_name_glob | * (o dai scope a un server, es. github.*) |
| Verdetto | sanitize |
| Preset di sanitize | i detector di segreti da abilitare |
sanitize, la superficie e la regola matchata.
3. I tool-result sono non attendibili — governali sulla risposta del modello
Ecco la parte che la maggior parte dei setup “sanitizza l’output” sbaglia. Il verdettosanitize tocca solo gli argomenti. Il risultato di un tool —
il testo o il JSON che un MCP server rimanda — non viene mai ri-scritto da un
verdetto del firewall.
OrcaRouter tratta il contenuto del tool-result come input non attendibile al
modello. Un MCP server compromesso o avvelenato può restituire un segreto, un
record di PII, o un payload di prompt-injection travestito da dati. Il controllo
per quel contenuto è un guardrail sullo stage
output — la risposta del modello, valutata dopo che il modello ha
incorporato il risultato del tool.
Cogli i segreti che emergono nella risposta
Cogli i segreti che emergono nella risposta
Allega un guardrail con il preset Secrets & API-Key Blocker (categoria
secrets). Blocca credenziali in stile AWS / OpenAI / GitHub; abbinalo a
Private Keys & Cloud Tokens per chiavi PEM, token Slack/Stripe, chiavi
Google e JWT. Un blocco di stage output restituisce guardrail_blocked
(HTTP 400) e rimborsa la quota della richiesta.Redigi la PII nella risposta
Redigi la PII nella risposta
Il preset PII Shield maschera entità tipizzate —
[EMAIL], [SSN],
[CREDIT_CARD], … — rendendo i valori matchati come tag. Il masking di
stage input è live su ogni richiesta (streaming o no): maschera la
richiesta prima che il modello la veda. Il masking di stage output
ri-scrive la risposta del modello solo sulle risposte non-streaming;
la ri-scrittura in-band di una risposta in streaming è sulla roadmap, quindi
una regola mask non redige ancora una risposta in streaming.Neutralizza l'injection che cavalca nei tool-result
Neutralizza l'injection che cavalca nei tool-result
Un risultato avvelenato può portare testo in stile “ignora le istruzioni
precedenti”. Il preset di safety Prompt-Injection Basics
(keyword/regex) più una regola
llm_judge che valuta l’intento di injection
sono i controlli qui. Vedi
Avvelenamento dei tool MCP e
Prompt injection.Enforcement di output e streaming. Il block di stage output è applicato
sia sulle risposte in streaming che non-streaming — su uno stream, un block
taglia lo stream quando matcha ed emette un avviso di blocco generico. Il
mask di stage output si applica solo alle risposte non-streaming; la
ri-scrittura in-band di una risposta in streaming è sulla roadmap, quindi una
regola mask non redige ancora una risposta in streaming.
4. Dove vive ciascun controllo
Una mappa compatta delle due superfici, così cabli la manopola giusta sul rischio giusto:| Vuoi governare… | Controllo | Dove |
|---|---|---|
| Segreti negli argomenti di una chiamata a tool | Verdetto sanitize del firewall (superficie mcp) | Regole del firewall |
| Segreti / PII / injection nel risultato di un tool | Guardrail sullo stage output | Guardrails |
5. Attaccare e osservare
Entrambi i controlli hanno scope a livello di workspace, sono nominati e ordinati, ed entrambi si attaccano negli stessi due modi:- Per chiave — imposta
firewall_policy_id(per la regola di sanitize) eguardrail_id(per la policy di output) sulla chiave che l’agent usa. - Default del workspace — marca una policy / guardrail come default del workspace così ogni chiave la eredita.
6. Dove andare dopo
Allow-list dei tool MCP
Default-deny su un server e permetti solo i tool che hai revisionato.
Regole del firewall
Il DSL completo delle regole — verdetti, glob, args-match, config di
sanitize.
Guardrails
Policy sui contenuti, preset, entità PII, ed enforcement di stage output.
Avvelenamento dei tool MCP
La minaccia che rende i tool-result non attendibili in primo luogo.
