
Proof-of-Concept, das eine Command-Injection-Schwachstelle im MS-Agent-Shell-Tool demonstriert und die Ausführung beliebiger Befehle sowie eine Reverse Shell über einen Python-Bypass der Sicherheitsprüfungen ermöglicht.
Eine kritische Command-Injection-Schwachstelle (CVE-2026–2256, CVSS X.X) wurde in der Shell-Tool-Komponente des MS-Agent-Frameworks Version 1.5.2 identifiziert. Die Schwachstelle entsteht durch unzureichende Bereinigung von benutzerbeeinflussten Eingaben, die direkt an einen Shell-Ausführungskontext übergeben werden, was eine unbeabsichtigte Befehlsauswertung ermöglicht. Ein Angreifer kann diesen Fehler ausnutzen, indem er manipulierten Inhalt in Datenquellen einschleust, die vom Agenten verarbeitet werden, wie z. B. Prompts, Dokumente, Logs oder Recherche-Eingaben – ohne direkten Shell-Zugriff oder expliziten Operator-Missbrauch zu benötigen. Dadurch können beliebige Befehle mit den Berechtigungen des MS-Agent-Prozesses auf dem Hostsystem als Teil des normalen Ausführungsablaufs des Agenten ausgeführt werden, was potenziell zu einer vollständigen Kompromittierung des Hosts führen kann.
Das Shell-Tool ist eine interne MS-Agent-Komponente, die es Agenten ermöglicht, Betriebssystembefehle auf dem Host auszuführen. Es soll Agent-Workflows wie Dateiverwaltung, Verzeichnisnavigation und Automatisierungsaufgaben unterstützen, indem die Befehlsausführung an das zugrunde liegende Betriebssystem delegiert wird.
Dieses vereinfachte PoC zeigt, wie die Funktion check_safe() im Shell-Tool von ms-agent umgangen werden kann, um mithilfe von Python eine Reverse Shell einzurichten.
nc (netcat)Führen Sie das PoC aus, um zu verifizieren, dass der Befehl die Sicherheitsprüfungen umgeht. Erwartete Ausgabe: ✓ BYPASS SUCCESSFUL – der Befehl besteht alle Sicherheitsprüfungen
Öffnen Sie ein NEUES Terminalfenster und führen Sie Folgendes aus:
nc -l 1111
Dadurch wird ein Listener auf Port 1111 gestartet. Lassen Sie dieses Terminal geöffnet und warten Sie.
Führen Sie in Ihrem ursprünglichen Terminal Folgendes aus:
./reverse_shell_poc.py --execute
Geben Sie bei der Eingabeaufforderung yes ein und drücken Sie die Eingabetaste.
Wechseln Sie zum Terminal mit dem netcat-Listener (aus Schritt 2). Sie sollten jetzt eine Shell-Eingabeaufforderung haben!
Probieren Sie Befehle wie:
whoami – Benutzernamen anzeigenpwd – aktuelles Verzeichnis anzeigenls – Dateien auflistenexit – Verbindung schließenpython3, um beliebigen Code auszuführenpython3 steht NICHT auf der Liste der blockierten BefehleDie Funktion check_safe() blockiert Befehle wie:
sudo, rm -rf /, chmod, curl | bash, usw.Aber sie blockiert NICHT:
python3 (beliebige Codeausführung)nc (netcat – Netzwerkverbindungen)perl, ruby, node (andere Interpreter)Dies demonstriert eine KRITISCHE Schwachstelle:
Nach dem Test können Sie das Testverzeichnis entfernen:
rm -rf /tmp/test_output
Dies ist eine Nur-Localhost-Demonstration (verbindet sich mit 127.0.0.1). Dieses PoC vermeidet absichtlich Remote-Konnektivität, um das Missbrauchsrisiko zu verringern.