Iniezione del comando MCP

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

Iniezione del comando MCP — Fasi della formazione

  1. 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.

  2. Guardalo funzionare

    Prima una normale richiesta, per sapere cosa fa lo strumento con il nome che gli viene assegnato.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. Cosa individua l'avviso

    L'avviso ha ristretto il campo a uno strumento e a una forma di input.

  10. 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