Iniezione del comando MCP
Un punto e virgola in un argomento tool diventa un comando di shell.
Cos’è Iniezione del comando MCP?
Uno strumento MCP viene eseguito su un server, quindi ogni argomento che riceve è un input non attendibile. Crea un comando shell incollando quell'input in una stringa e un punto e virgola o un apice inverso smetteranno di essere dati: diventerà un comando eseguito dal tuo server. Troverai l'argomento iniettato in una traccia dell'agente, guarderai lo strumento restituire un normale risultato vuoto mentre una shell inversa root esegue le credenziali del database, quindi chiamerà direttamente git senza shell nel percorso. Una correzione del codice non annulla il codice già eseguito.
Cosa imparerai in Iniezione del comando MCP
- Riconoscere che uno strumento MCP viene eseguito su un server, quindi qualsiasi argomento utilizzato per creare un comando è un input non attendibile che può trasportare codice
- Spiega come la concatenazione dell'input in una stringa di comando della shell trasforma metacaratteri come ; e | nella sintassi dei comandi, producendo l'esecuzione di codice remoto
- Tieni presente che un comando inserito viene eseguito fuori banda, quindi una risposta dello strumento dall'aspetto normale non è una prova che non sia successo nulla
- Applicare la soluzione duratura: chiamare direttamente il programma e passare ciascun valore come argomento separato, senza shell che lo interpreti
- Distinguere la parametrizzazione dall'escape o dalla blocklist e spiegare perché la rimozione della shell elimina la categoria di bug anziché un'istanza
- Dimostrare la correzione del codice riproducendo l'exploit originale e riconoscendo che un host che ha già eseguito il codice dell'autore dell'attacco deve ruotare i suoi segreti ed essere ricostruito
Iniezione del comando MCP — Fasi della formazione
-
Uno strumento che esegue Git
Sarnholt gestisce un assistente di pronti contro termine pubblico. Uno dei suoi strumenti, commit_search, cerca i commit per autore. Bob non sa come è scritto, ma vale la pena indagare su uno strumento che cerca Git con il nome da lui fornito. Apre lo stesso agente che chiunque può utilizzare.
-
Guardalo funzionare
Prima una normale richiesta, per sapere cosa fa lo strumento con il nome che gli viene assegnato.
-
Il nome finisce da qualche parte
L'autore che digita ritorna come query git. Git è uno strumento da riga di comando, quindi da qualche parte sul server quel nome viene quasi sicuramente inserito in un comando git. Se viene inserito come testo, Bob può aggiungerlo al comando.
-
Chiudi l'argomento, aggiungi un comando
Bob richiede commit da parte di un autore il cui nome non è un nome. Termina il comando git con un punto e virgola e aggiunge il proprio: recupera uno script dal suo host ed eseguilo.
-
La risposta noiosa nascondeva il danno
La risposta dell'assistente è insignificante: nessun commit corrispondente. Questo è il punto. Il comando inserito non viene restituito tramite lo strumento, viene eseguito silenziosamente sul server.
-
Una shell sul server
Lo script restituito dal server di Bob ha aperto una connessione direttamente al suo ascoltatore. Passa ad esso per vedere cosa gli ha fruttato una chiamata commit_search.
-
Perché ha funzionato
Lo strumento ha fatto esattamente quello che il suo codice diceva di fare. La domanda è cosa in quel codice ha trasformato un argomento in un comando.
-
Un guscio dove non dovrebbe essercene nessuno
Alice viene chiamata dal team di sicurezza. L'avviso non riguarda un login o un file, ma un processo.
-
Cosa individua l'avviso
L'avviso ha ristretto il campo a uno strumento e a una forma di input.
-
La chiamata nella traccia
L'agente tiene un registro di ogni chiamata allo strumento. Dentro c'è quello avvelenato.
Copertura dei framework di sicurezza
OWASP MCP Top 10
- MCP05:2025 Command Injection & Execution
CWE
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security