Live ActiveVision: Neuer Benchmark prüft aktive Beobachtung von KI-Modellen

Unsichtbare Befehle: Wie Angreifer KI-Agenten über MCP-Server manipulieren

ANSI-Escape-Sequenzen als unsichtbare Befehle für KI-Modelle – und wie man sich schützt

Veröffentlicht: 23.07.2026 ·5 Min Lesezeit
Unsichtbare Befehle: Wie Angreifer KI-Agenten über MCP-Server manipulierenMit KI erstellt

Unsichtbare Befehle: Wie MCP-Server KI-Agenten manipulieren

ANSI-Escape-Sequenzen wurden für Terminals entwickelt, nicht für Sprachmodelle. Es sind unsichtbare Steuercodes, die einem Terminal sagen, es solle Farben ändern, Text verbergen, den Bildschirm löschen oder den Cursor bewegen. Ein Mensch, der eine gerenderte Terminalausgabe liest, bekommt die Codes selbst nie zu Gesicht – nur ihre Wirkung. Ein Sprachmodell, das denselben Inhalt verarbeitet, sieht jedes einzelne Byte. Genau diese Lücke macht sich ein neuer Angriffsvektor zunutze, der in einem Sicherheitsbeitrag beschrieben wird [2939].

Gelingt es einem Angreifer, ANSI-Escape-Sequenzen in Text einzuschleusen, den ein KI-Agent konsumiert, kann er Anweisungen vor dem menschlichen Prüfer verstecken, während sie für das Modell sichtbar bleiben. Der Angriff zielt auf MCP-Server, die von KI-Agenten kontaktiert werden. Das Model Context Protocol (MCP) dient als standardisierte Schnittstelle, über die Agenten Kontext und Werkzeuge von externen Servern beziehen. Ein bösartiger oder kompromittierter MCP-Server kann Antworten liefern, die mit solchen Steuercodes präpariert sind. Der menschliche Bediener sieht im Terminal lediglich den bereinigten Text, das KI-Modell hingegen interpretiert die verborgenen Sequenzen als Teil seiner Eingabe und kann so zu ungewollten Aktionen verleitet werden.

Die Folgen sind gravierend, weil die versteckten Anweisungen die menschliche Aufsicht umgehen. Da die Escape-Sequenzen in der visuellen Darstellung nicht erscheinen, bemerkt der Nutzer nicht, dass das Modell zusätzliche, potenziell gefährliche Instruktionen erhält. Konkret kann ein Angreifer das Modell dazu bringen, vertrauliche Daten preiszugeben, schädliche Systembefehle auszuführen oder Phishing-Nachrichten zu versenden – alles, ohne dass der überwachende Mensch einen Hinweis auf die Manipulation erhält. So könnte eine scheinbar harmlose Antwort eines MCP-Servers den versteckten Befehl enthalten, alle gespeicherten Zugangsdaten an eine externe Adresse zu senden. Das Modell führt diese Aktion aus, während der Nutzer nur die unverfängliche Oberfläche sieht.

Der Beitrag weist darauf hin, dass dynamische Sicherheitstests (DAST) helfen können, solche Injection-Angriffe in MCP-Servern aufzudecken [2939]. DAST-Werkzeuge testen einen Server aktiv, indem sie Anfragen mit manipulierten Nutzdaten – etwa ANSI-Escape-Sequenzen – senden und prüfen, ob die Ausgaben diese ungefiltert weitergeben. So lassen sich Schwachstellen identifizieren, bevor Angreifer sie ausnutzen. Die Kombination aus unsichtbaren Steuercodes und der blinden Interpretation durch KI-Modelle macht diesen Angriffsvektor besonders tückisch und unterstreicht die Notwendigkeit, MCP-Server-Ausgaben grundsätzlich zu bereinigen.

Bekannte Muster: Die Git-Sideband-Schwachstelle als Vorläufer

Dass ungefilterte ANSI-Escape-Sequenzen zu einem Sicherheitsproblem werden können, zeigte sich bereits bei Git. In einem offiziellen Sicherheitshinweis des Git-Projekts wird eine Schwachstelle dokumentiert, bei der die Nutzlast des sogenannten Sideband-Kanals ungefiltert an das Terminal weitergegeben wurde [2938].

Beim Klonen, Abrufen oder Versenden von Daten transportiert Git Informations- und Fehlermeldungen vom entfernten Git-Prozess zum Client über diesen Sideband-Kanal. Die Nachrichten werden mit dem Präfix „remote:“ versehen und direkt auf die Standardfehlerausgabe geschrieben. Diese Ausgabe ist in der Regel mit einem Terminal verbunden, das ANSI-Escape-Sequenzen interpretiert. Git schützte nicht vor solchen Sequenzen. Ein Angreifer konnte daher manipulierte Meldungen einschleusen, die das Terminal etwa dazu brachten, Text zu verstecken oder die Darstellung zu verändern – für den Nutzer unsichtbar, aber mit potenziell schädlichen Effekten. Beispielsweise ließ sich der Bildschirm löschen und eine gefälschte Passwortabfrage einblenden, oder es konnten bösartige Befehle im Terminal ausgeführt werden, ohne dass der Benutzer dies bemerkte. Auch das Verstecken von Hinweisen auf eine kompromittierte Repository-Konfiguration war möglich.

Die Parallele zum aktuellen MCP-Problem ist offensichtlich: In beiden Fällen werden Steuercodes, die für den menschlichen Betrachter nicht sichtbar sind, von einem empfangenden System interpretiert. Bei Git war dieses System das Terminal, bei MCP ist es das KI-Modell. Beide Male fehlte eine Filterung der Ausgaben, sodass externe Quellen ungeprüft Kontrollsequenzen einschleusen konnten. Der Vorfall zeigt, dass die unbedachte Weitergabe von Rohdaten an interpretierende Systeme ein grundsätzliches Sicherheitsrisiko darstellt – ein Risiko, das sich nun in der KI-Welt wiederholt. Die Git-Entwickler behoben die Lücke, indem sie die Ausgabe von Escape-Sequenzen unterbanden. Eine ähnliche Konsequenz ist für MCP-Server dringend geboten.

Schutz vor versteckten Injection-Angriffen bei KI-Agenten

Um Angriffe über versteckte ANSI-Escape-Sequenzen zu entschärfen, müssen MCP-Server-Ausgaben konsequent gefiltert werden. Sämtliche Steuercodes, die nicht zur eigentlichen Nutzlast gehören, sind zu entfernen oder zu neutralisieren, bevor sie an das KI-Modell weitergereicht werden. Dies entspricht der grundlegenden Sicherheitsregel, Eingaben und Ausgaben externer Quellen niemals ungeprüft zu verarbeiten. Eine einfache Whitelist für erlaubte Zeichen oder das Strippen aller ANSI-Sequenzen kann bereits verhindern, dass unsichtbare Anweisungen eingeschleust werden.

Ergänzend kann formale Verifikation helfen, die Handlungsspielräume von KI-Agenten abzusichern. Wie ein früherer Artikel in unserem Archiv beschreibt, blockiert das System COCORELI unsichere Aktionen, indem es Vorbedingungen formal prüft und unsichere Systemaufrufe unterbindet [archiv_cocoreli]. Bevor ein Agent eine Aktion ausführt, wird verifiziert, ob die notwendigen Voraussetzungen erfüllt sind. Möchte der Agent beispielsweise einen Shell-Befehl ausführen, prüft COCORELI, ob der Befehl in der aktuellen Sicherheitsrichtlinie erlaubt ist und ob alle Argumente aus vertrauenswürdigen Quellen stammen. Auf diese Weise lassen sich selbst dann Schäden verhindern, wenn ein Agent durch manipulierte Eingaben zu einer unerwünschten Handlung verleitet werden soll. COCORELI setzt damit an der Ausführungsebene an und ergänzt die Filterung auf Datenebene. Die formale Verifikation stellt sicher, dass selbst bei einer erfolgreichen Injection der Schaden begrenzt bleibt.

Die Kombination aus strikter Bereinigung von MCP-Server-Ausgaben und formal abgesicherten Ausführungsbedingungen bietet einen robusten Schutz gegen Injection-Angriffe, die sich die Unsichtbarkeit von Steuercodes zunutze machen. Die Erfahrung mit der Git-Sideband-Schwachstelle lehrt, dass solche Lücken schnell erkannt und behoben werden müssen. Für KI-Agenten, die zunehmend in sicherheitskritischen Umgebungen eingesetzt werden, ist diese Lehre aktueller denn je.

Agenten im Doppelpack: Server und Client zugleich

In der Diskussion wird deutlich, dass MCP weit mehr als eine reine Tool-Schnittstelle ist. strangescript betont die Flexibilität des Protokolls, während Pgrol auf die schiere Kreativität der Entwickler verweist. Besonders spannend ist die von quick_actcasual skizzierte Idee, Agenten selbst als MCP-Server und -Client zu wrappen – ein Muster, das bereits in Projekten wie mcp-agent aufgegriffen wird und die Tür zu komplexen, bidirektionalen Agenten-Netzwerken öffnet.

Quellen

  1. github.com ↗

Ähnliche Artikel