Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-52618 — Documenta la CVE-2026-52618 con un PoC per l'iniezione di comandi del sistema operativo in @webfer/mcp-ansible-drupal tramite le extraVars di executeDeployment, oltre a indicazioni per il rilevamento e le mitigazioni. | Kitploit
Strumenti/GitHubGitHub/s1ko/cve-2026-52618
Analisi delle VulnerabilitàExploitSicurezza dell'IA
GitHubs1ko/cve-2026-52618

CVE-2026-52618

Documenta la CVE-2026-52618 con un PoC per l'iniezione di comandi del sistema operativo in @webfer/mcp-ansible-drupal tramite le extraVars di executeDeployment, oltre a indicazioni per il rilevamento e le mitigazioni.

Vedi Repository
1 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-52618 — @webfer/mcp-ansible-drupal: iniezione di comandi del sistema operativo tramite extra vars di executeDeployment

spawn(cmd[0], cmd.slice(1), { shell: true }) riunisce un array di argomenti in una singola stringa /bin/sh -c senza escaping, quindi un metacarattere di shell in un valore extraVars fornito allo strumento MCP executeDeployment viene eseguito sull'host che esegue il server.

Scarica lo strumento
CVECVE-2026-52618
CWECWE-78 (neutralizzazione impropria di elementi speciali usati in un comando del sistema operativo)
Package@webfer/mcp-ansible-drupal (npm)
Affected2.0.0
Fixed in2.0.3 (pubblicata il 2026-06-01)
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 Alto (transporto stdio). AV:N → 9.8 Critico se il server è incapsulato in un transport di rete.
Reported bys1ko (github.com/s1ko, [email protected])
CVE assigned2026-07-13, MITRE CNA-LR

Questo problema è risolto. Aggiorna alla 2.0.3 o successiva.

Modello di minaccia

Gli argomenti degli strumenti MCP sono influenzabili da un attaccante. Sono prodotti da un LLM a partire dal contenuto che l'agente elabora — documenti, pagine web, output di strumenti — quindi un'iniezione indiretta di prompt mette l'attaccante in controllo dei valori che un handler di strumenti riceve. Un handler che convoglia uno qualsiasi di questi valori in una shell trasforma tale influenza in esecuzione di codice sull'host che esegue il server MCP. Questo è lo stesso modello del caso precedente aws-mcp-server / CVE-2026-5058.

La conseguenza è che «il chiamante è un LLM affidabile» non è una mitigazione. Gli argomenti degli strumenti sono input non attendibili.

Esecuzione

src/helpers/runAnsible.ts nella 2.0.0 costruiva un array di argomenti e poi lo eseguiva con la shell abilitata:

root@kitploit:~
const proc = spawn(ansibleCmd[0], ansibleCmd.slice(1), { shell: true });

Con shell: true, Node non esegue ansibleCmd[0] con gli elementi rimanenti come argv. Unisce l'intero array in un'unica stringa e la passa a /bin/sh -c, senza applicare quoting o escaping agli elementi. Qualsiasi elemento contenente ;, &&, |, backtick o $() fuoriesce quindi dal comando previsto.

Il percorso raggiungibile è lo strumento MCP executeDeployment (src/tools/executeDeployment.ts), che inoltra gli extraVars forniti dal chiamante nell'array come --extra-vars key=value. Un valore di ; touch /tmp/marker ; produce:

root@kitploit:~
/bin/sh -c "ansible-playbook -i inv.ini play.yml ... --extra-vars deploy_env=; touch /tmp/marker ; echo INJECTED"

Un sink secondario nella stessa versione interpolava projectRoot in execSync('ansible-vault encrypt ' + vaultPath).

Riproduzione

poc/driver.mjs chiama runAnsible direttamente con un valore extraVars appositamente costruito e verifica la presenza del file marker. Non è necessario che ansible-playbook sia installato — il comando iniettato viene eseguito nella stessa stringa /bin/sh -c indipendentemente dal fatto che il binario iniziale venga risolto.

root@kitploit:~
npm pack @webfer/[email protected] && tar xf webfer-mcp-ansible-drupal-2.0.0.tgz
node poc/driver.mjs

Risultato atteso su una versione affetta:

root@kitploit:~
{"target":"@webfer/mcp-ansible-drupal 2.0.0","sink":"runAnsible -> spawn(cmd[0], cmd.slice(1), {shell:true})","vector":"executeDeployment extraVars value","marker":"/tmp/PWNED_ansible","created":true,"verdict":"CONFIRMED - command injection executed"}

Validato il 2026-06-01 in un container isolato e ri-validato il 2026-06-13 con un marker touch benigno. Eseguilo solo contro infrastrutture che sei autorizzato a testare.

Rilevamento

  • Qualsiasi valore --extra-vars che raggiunge ansible-playbook e contiene ;, &&, ||, |, un backtick o $(. I valori legittimi di variabili Ansible non li contengono praticamente mai.
  • Un processo sh -c la cui riga di comando contiene ansible-playbook e un secondo comando dopo un separatore — un segnale a livello di albero dei processi (auditd, eBPF, Falco, EDR) che non dipende dai log applicativi.
  • Figli inattesi del processo del server MCP. ansible-playbook, git e ansible-vault sono attesi; una shell, un interprete o un client di rete non lo sono.
  • Log delle chiamate agli strumenti MCP in cui gli argomenti di executeDeployment contengono metacaratteri di shell. Registra gli argomenti degli strumenti — la maggior parte delle implementazioni MCP non lo fa, ed è l'unico punto in cui il valore iniettato è visibile in termini applicativi.

MITRE ATT&CK T1059.004 Interprete di comandi e scripting: Unix Shell.

Mitigazione

Aggiorna a @webfer/mcp-ansible-drupal 2.0.3 o successiva. Il sorgente attuale chiama spawn(ansibleCmd[0], ansibleCmd.slice(1), { … }) senza l'opzione shell, quindi l'array viene passato come argv e i metacaratteri perdono il loro significato.

La regola generale per gli handler degli strumenti MCP, e ciò che la correzione applica qui:

  • Non abilitare mai shell: true quando è già disponibile un array di argomenti. La forma a array esiste proprio per evitare la shell.
  • Non costruire mai un comando tramite interpolazione di stringhe di un argomento di uno strumento. Usa execFile/spawn con un vettore di argomenti esplicito.
  • Valida il contenuto, non solo il tipo. Un z.string() di Zod dimostra che il valore è una stringa e nulla su ciò che contiene. Usa un allowlist quando il set di valori è noto; rifiuta i metacaratteri di shell quando non lo è.
  • Esegui il server MCP come utente non privilegiato con l'accesso a file system e rete più ristretto di cui lo strumento ha effettivamente bisogno.

NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; mitigazioni CWE-78 M1 e M2.

Cronologia

DataEvento
2026-06-01Vulnerabilità validata dinamicamente contro la 2.0.0
2026-06-012.0.3 pubblicata su npm con shell: true rimosso
2026-06-13Ri-validata su un secondo host
2026-07-13MITRE CNA-LR assegna CVE-2026-52618, s1ko accreditato come scopritore
2026-08-22Questo write-up pubblicato

Riferimenti

  • Pacchetto npm — https://www.npmjs.com/package/@webfer/mcp-ansible-drupal
  • Repository — https://github.com/webfer/MCP-Ansible-Drupal
  • Precedente per il modello di minaccia MCP — CVE-2026-5058 (aws-mcp-server)

Bollettini complementari dello stesso ciclo di ricerca: CVE-2026-52616, CVE-2026-52617.

Licenza

MIT — vedi LICENSE.