Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-52618 — Dokumentiert CVE-2026-52618 mit einem PoC für OS-Befehlsinjektion in @webfer/mcp-ansible-drupal über executeDeployment extraVars, plus Erkennungshinweise und Gegenmaßnahmen. | Kitploit
Tools/GitHubGitHub/s1ko/cve-2026-52618
SchwachstellenanalyseExploitationKI-Sicherheit
GitHubs1ko/cve-2026-52618

CVE-2026-52618

Dokumentiert CVE-2026-52618 mit einem PoC für OS-Befehlsinjektion in @webfer/mcp-ansible-drupal über executeDeployment extraVars, plus Erkennungshinweise und Gegenmaßnahmen.

Repository anzeigen
24vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-52618 — @webfer/mcp-ansible-drupal: OS-Befehlsinjektion über executeDeployment-Extra-Variablen

spawn(cmd[0], cmd.slice(1), { shell: true }) fügt ein Argument-Array wieder zu einem einzigen /bin/sh -c-String zusammen, ohne zu escapen, sodass ein Shell-Metazeichen in einem extraVars-Wert, der an das MCP-Tool executeDeployment übergeben wird, auf dem Host ausgeführt wird, auf dem der Server läuft.

CVECVE-2026-52618
CWECWE-78 (Improper Neutralization of Special Elements used in an OS Command)
Paket@webfer/mcp-ansible-drupal (npm)
Betroffen2.0.0
Behoben in2.0.3 (veröffentlicht am 2026-06-01)
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 8.4 High (stdio-Transport). AV:N → 9.8 Critical, wenn der Server in einen Netzwerk-Transport eingebettet ist.
Gemeldet vons1ko (github.com/s1ko, [email protected])
CVE zugewiesen2026-07-13, MITRE CNA-LR

Dieses Problem ist behoben. Aktualisieren Sie auf 2.0.3 oder höher.

Bedrohungsmodell

MCP-Tool-Argumente werden von Angreifern beeinflusst. Sie werden von einem LLM aus dem Inhalt erzeugt, den der Agent verarbeitet — Dokumente, Webseiten, Tool-Ausgaben —, sodass indirekte Prompt-Injection einen Angreifer in die Lage versetzt, die Werte zu kontrollieren, die ein Tool-Handler empfängt. Ein Handler, der einen dieser Werte in eine Shell einspeist, verwandelt diesen Einfluss in Codeausführung auf dem Host, auf dem der MCP-Server läuft. Dies ist dasselbe Modell wie im Präzedenzfall aws-mcp-server / CVE-2026-5058.

Die Konsequenz ist, dass „der Aufrufer ist ein vertrauenswürdiges LLM" keine Abschwächung darstellt. Tool-Argumente sind nicht vertrauenswürdige Eingaben.

Ausführung

src/helpers/runAnsible.ts in 2.0.0 erstellte ein Argument-Array und führte es dann mit aktivierter Shell aus:

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

Mit shell: true führt Node ansibleCmd[0] nicht mit den übrigen Elementen als argv aus. Es fügt das gesamte Array zu einem einzigen String zusammen und übergibt ihn an /bin/sh -c, wobei auf die Elemente keine Quotierung oder Escaping angewendet wird. Jedes Element, das ;, &&, |, Backticks oder $() enthält, bricht daher aus dem beabsichtigten Befehl aus.

Der erreichbare Pfad ist das MCP-Tool executeDeployment (src/tools/executeDeployment.ts), das vom Aufrufer übergebene extraVars als --extra-vars key=value in das Array weiterleitet. Ein Wert von ; touch /tmp/marker ; ergibt:

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

Eine sekundäre Senke in derselben Version interpolierte projectRoot in execSync('ansible-vault encrypt ' + vaultPath).

Reproduktion

poc/driver.mjs ruft runAnsible direkt mit einem manipulierten extraVars-Wert auf und prüft auf die Marker-Datei. ansible-playbook muss nicht installiert sein — der injizierte Befehl läuft in derselben /bin/sh -c-Zeichenkette, unabhängig davon, ob die führende Binärdatei aufgelöst wird.

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

Auf einer betroffenen Version wird Folgendes erwartet:

{"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"}

Validiert am 2026-06-01 in einem isolierten Container und erneut validiert am 2026-06-13 mit einem harmlosen touch-Marker. Führe es nur gegen Infrastruktur aus, für deren Test du autorisiert bist.

Erkennung

  • Jeder --extra-vars-Wert, der ansible-playbook erreicht und ;, &&, ||, |, einen Backtick oder $( enthält. Legitime Ansible-Variablenwerte tun das praktisch nie.
  • Ein sh -c-Prozess, dessen Kommandozeile ansible-playbook und einen zweiten Befehl nach einem Trennzeichen enthält — ein Prozessbaum-Signal (auditd, eBPF, Falco, EDR), das nicht von Anwendungs-Logging abhängt.
  • Unerwartete Kindprozesse des MCP-Server-Prozesses. ansible-playbook, git und ansible-vault sind zu erwarten; eine Shell, ein Interpreter oder ein Netzwerk-Client nicht.
  • MCP-Tool-Call-Logs, in denen executeDeployment-Argumente Shell- Metazeichen enthalten. Logge Tool-Argumente — die meisten MCP-Deployments tun das nicht, und es ist der einzige Ort, an dem der injizierte Wert in Anwendungsbegriffen sichtbar ist.

MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell.

Gegenmaßnahmen

Aktualisiere auf @webfer/mcp-ansible-drupal 2.0.3 oder höher. Der aktuelle Quellcode ruft spawn(ansibleCmd[0], ansibleCmd.slice(1), { … }) ohne shell-Option auf, sodass das Array als argv übergeben wird und Metazeichen ihre Bedeutung verlieren.

Die allgemeine Regel für MCP-Tool-Handler und was der Fix hier anwendet:

  • Aktiviere niemals shell: true, wenn bereits ein Argument-Array verfügbar ist. Die Array-Form existiert genau, um die Shell zu vermeiden.
  • Baue niemals einen Befehl durch String-Interpolation eines Tool-Arguments. Verwende execFile/spawn mit einem expliziten Argument-Vektor.
  • Validiere den Inhalt, nicht nur den Typ. Ein Zod z.string() beweist, dass der Wert ein String ist, und nichts darüber, was darin steht. Verwende eine Allowlist, wo die Wertemenge bekannt ist; lehne Shell-Metazeichen ab, wo sie es nicht ist.
  • Führe den MCP-Server als unprivilegierter Benutzer mit der engsten Dateisystem- und Netzwerkreichweite aus, die das Tool tatsächlich benötigt.

NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; CWE-78 Gegenmaßnahmen M1 und M2.

Zeitleiste

DatumEreignis
2026-06-01Schwachstelle dynamisch gegen 2.0.0 validiert
2026-06-012.0.3 mit entferntem shell: true auf npm veröffentlicht
2026-06-13Erneut validiert auf einem zweiten Host
2026-07-13MITRE CNA-LR vergibt CVE-2026-52618, s1ko als Entdecker genannt
2026-08-22Dieser Write-up veröffentlicht

Referenzen

  • npm-Paket — https://www.npmjs.com/package/@webfer/mcp-ansible-drupal
  • Repository — https://github.com/webfer/MCP-Ansible-Drupal
  • Präzedenzfall für das MCP-Bedrohungsmodell — CVE-2026-5058 (aws-mcp-server)

Begleitende Advisories aus demselben Research-Durchlauf: CVE-2026-52616, CVE-2026-52617.

Lizenz

MIT — siehe LICENSE.

Tool herunterladen