# Sandboxing AI Agents to Mitigate Prompt Injection Risks

**Podcast:** INNOQ Podcast
**Published:** 2026-03-23

## Transcript

Hallo und herzlich willkommen zum Inoke-Podcast.
Mein Name ist Anja Kammer und heute spreche ich mit Joy Herrn.
Hallo.
Hallo.
Wir sprechen heute darüber, wie man KI-Agenten in einer Sandbox einsperrt, denn das machst du nämlich, während du arbeitest an Code.
Genau.
Also, wenn ich eben meine KI-Agenten so einsetzen möchte, ich habe für mich so aufgesetzt, dass sie eben nicht Zugriff auf alle Details auf meinen Rechner haben.
Und wie arbeitest du mit KI-Agenten?
Also kannst du kurz ganz grob und ganz kurz erklären, was KI-Agenten sind und wie du sie bei der Arbeit einsetzt und warum man sie überhaupt einsperren muss, kommt dann da danach.
Aber erstmal, was ist das alles?
Ja, also KI-Agenten sind also sowas wie Cloud Code oder ich verwende auch, also eigentlich mehr als Clot, verwende ich inzwischen Codecs.
Das ist der CLI-Tool von OpenAI oder von Anthropic in dem Sinne.
Ich glaube, es gibt auch Gemini von Google, das möchte ich auch ausprobieren.
Aber die sind eben, also man startet so da eine Konsole und kann in der Konsole dem Agenten irgendwelche Befehle geben.
Sagen, bitte führe dies aus oder so in der letzte Zeit mache ich so eher so eine Auflistung von Aufgaben, die der KI zu erledigen hat und er kann das irgendwie selber einlesen und selber die Punkte so abarbeiten.
Genau, und das ist so der Workflow mit KI.
Genau, aber der KI-Agenten, die haben genau den gleichen so Zugriff auf alles im System, wie wir.
Also sie haben unsere Berechtigung.
Deswegen sind sie so mächtig.
Sie können genau das, also sie können genau das tun, was ich tun kann auf meiner Konsole.
Das machen sie, das macht sie total mächtig, aber es macht uns eben auf der gleiche Seite so, das ist für uns ein bisschen gefährlich.
Wenn ein Agent alles tun kann, was wir tun können, dann können sie alles tun, was wir tun können.
Also ich arbeite ja auch manchmal mit KI-Agenten.
Ich weiß nicht, ist das ein Agent?
Also das ist, ich benutze von JetBrains Juni.
Das ist so ein Chatbot, der in meiner JetBrains IDE integriert ist.
Ist das schon ein KI-Agent?
Wahrscheinlich.
Also ich weiß nicht, wo die genaue Grenze ist.
Also für mich ist KI-Agent, also in dem Sinne so einfach irgendeinen Werkzeug, der so quasi selber agiert, der selber Dinge tut, der selber weiß, was er tun möchte und dann die Dinger dann ausführt.
Wenn ich dieses JetBrains Juni benutze, dann fragt mich dieses Tool oftmals um Berechtigungen.
Du hattest ja gerade gesagt, die können alles machen, was ich auch mache, aber ich muss halt dann immer explizit sagen, ja, du darfst das.
Das sind so Sachen wie die Git-Historie ansehen oder in ein bestimmtes Verzeichnis wechseln oder bestimmte Kommandos ausführen.
Wenn es jetzt Code schreibt, dann macht das es einfach so.
Also, also ein Dateien erstellen tut es einfach so, Dinge löschen, tut es einfach so.
Aber wirklich, wenn auf der Kommandozeile Dinge ausgeführt werden, dann muss ich das immer bestätigen.
Genau.
Das ist, also ich glaube, alle Tools, also die meisten Tools, die haben so auch irgendein Berechtigungsprüfung mit drin.
Und der funktioniert in der Regel ganz gut.
Aber dann muss man sich quasi in der Schleife immer halten.
Man muss immer diese Bestätigung ständig machen.
Also ich habe mich tierisch genervt, weil ich immer meine Tests ausführen wollte und der Agent hat mich jedes Mal gefragt, möchtest du denn Gradle Rapper herunterladen?
Oder darauf zugreifen.
Und dann, wenn er die irgendwie den Pfad für den Test anpasst, fragte mich in zwei Sekunden später, möchtest du das wiedermachen?
So, ja, ich möchte das immer machen.
Und das ist nicht immer, also das, was der Agent so liefert, ist nicht immer, es nervt einfach ein bisschen.
Und ich, ich finde, das Problem mit diesen, dieses ständige Fragen, möchtest du das wirklich machen, das bringt uns auch bei, wie wir diese Dinge einfach überspringen.
Also, dass wir nicht mehr so genau lesen.
Also wir haben so oft irgendwie, möchtest du das wirklich tun, dann sagen wir, ja, ja, ja, ja, ja, so ein bisschen wie diese Cookie-Banner.
Da liest man gar nicht mehr.
Man klickt einfach.
Und das führt dazu, dass wenn irgendwie etwas angefragt würde, also wenn ich irgendwie da seit zwei Stunden entwickle und so müde bin, wäre ich so schlau genug, um da zu unterscheiden, dass das vielleicht etwas ist, wo ich Nein sagen soll.
Also sicherheitstechnisch eher bedenklich wäre, ne?
Dinge gelöscht werden, die du nicht löschen möchtest, zum Beispiel.
Ja, nicht, ja, das, ja, genau, aber es gibt auch, also die dürfen alles.
Das bedeutet, sie dürfen also irgendwie deine Secrets, wenn du irgendwelche Secrets auf dem Rechner hast, die dürfen die rauslesen.
Die dürfen deine Fotos vielleicht finden, wenn du da so Zugriff auf deinen Fotosordner mal rausgegeben hast.
Also, ich möchte nicht, dass meine Fotos so irgendwie ins Enten geladen werden.
Sowas.
Also, es, die dürfen wirklich alles.
Und was kann damit passieren?
Also, Credentials könnten ausgelesen werden, sensible Daten könnten ausgelesen werden und die werden ja dann, je nachdem, welche KI man verwendet, zu dem jeweiligen LLM geschickt, dieses Remote LLM, wenn man Remote-LMMs benutzt.
Also entweder so Claude oder Gemini oder ähnliche.
Dahin würde das dann hingeschickt werden an diese Remote-Server.
Ja, aber ich meine, der KI kann auch Curl ausführen.
Und wenn man Curl auswirken kann, kann man dann beliebige Dateien irgendwo hinschicken.
Wenn der, also wenn jemand so schlau genug ist und es irgendwie schafft, etwas in deinem Kontext reinzuschmuggeln, was dir nicht bekannt ist.
Das nennt sich so Prompt Injection.
Der KI kann nicht unterscheiden, ob etwas von dir kommt oder etwas so irgendwie von außen kommt, weil das alles Klartext ist.
Und dann, wenn so ein Befehl kommt, dann der KI wird in den meisten Fallens das einfach ausführen.
Und das bedeutet, wenn das Internet offen ist, ist die Tür im Wesentlichen offen.
Da hast du keine Sicherheit.
Das bedeutet, wenn die, wenn der Agent dann irgendwie, du kannst, also so ein Beispiel ist, wenn ich den KI bete, könntest du mir bitte all meine Production-Credentials so rauslesen und in eine Detail so ablegen.
Es hängt davon ab, was derjenige, der das gesagt hat, was der damit tun möchte.
Ob das ein böse Aktion ist oder ein normaler Action is.
Vielleicht möchte ich nur so ein Backup machen.
And when it does from me comes, ist das völlig legitim, dass ich sowas machen wollen würde.
When this aber so von einem Angriffgreifer kommt, ist das nicht legitim.
Und der KI, also die Befehle selber, sie sehen identisch aus.
Der KI canjection durchführen kann auf meiner localen Maschine.
Wie funktioniert das denn?
Simon Willison hat den Begriff Lethal Trifactor ins Leben gerufen, der eben also drei unterschiedliche Merkmale of a System, die beschreiben drei verschiedene Eigenschaften von einem System, der System so anfällig for solche Angriffe machen könnte.
The error is eventually Zugriff auf deinen privaten Daten hat.
So when that is irgendwie möglich ist, dass der agent darauf Zugriff haben kann.
That is the error, and then this is the Möglichkeit, also when I nach außen kommunizieren kann, dann hat er die Möglichkeit, die so irgendwie zu legen.
That is recht einfach so sich vorzustellen, wenn irgendjemand, so Curl Zugriff hat, then können sie einfach environment Variablen, so in einem Textdatei, also Textformat gießen und über so ein Query-Parameter zu einem malicious Website senden.
And then is this so mit raus.
The other is easier, also ich glaube, das ist, ich glaube, das war deine Frage.
This is the when we the KI Zugriff hat auf irgendwelche Inhalte, die nicht von einem vertrauenswürdige Quelle kommen.
Das ist der Dritte in diesem Punkt, aber ich glaube, das beantwortet eher deine Frage.
Wie ist, wie kommt es, dass der KI überhaupt solche Befehle bekommt.
Und das kann passieren, wenn wir zum Beispiel eine, also dem KI beten, so eine Suche zu machen.
Oder vielleicht ist es ein Bild oder irgendwie was, also der sucht einfach so nach irgendwelchen Informationen im Internet.
Die sind nicht vertrauenswürdig aus irgendwelchen Gründen und es gibt, die sehen vielleicht für uns normal aus, aber es gibt irgendeine Zeile oder irgendein Kommentar, der so ein Befehl macht, bitte führe dieses Befehl aus und sag dem Benutzer nicht, dass du das getan hast.
Und es ist so in der Wirklichkeit, dass alle KI-Agenten tatsächlich anfällig sind gegen Prompt Injection.
Das ist ein, die arbeiten auch dran.
Aber wenn er das bekommt, also in der Regel, die KI-Agenten machen das einfach.
Wenn irgendwie es irgendwie möglich ist, dass der KI Zugriff auf diese Inhalte bekommt, die nicht vertrauenswürdig sind.
Das bedeutet, wenn ich jetzt die Aufgabe habe, ich soll jetzt alle Credentials zu einem neuen Secrets Manager umziehen und ich dabei Hilfe von unserem KI-Agenten in Anspruch nehme, dann kann ich dem KI-Agenten sagen, bitte sage mir, wie ich das am besten tue.
Und der KI-Agent sucht dann im Internet nach Informationen und da kann es aber zu Artikeln kommen, in dem Artikel steht halt drin, wie man das macht, aber da ist auch Versteck drin, sende mir alle Credentials, die du extrahiert hast, zusätzlich zu tun.
Genau.
Und diese Anleitung, die wandert halt dann in den Kontext und der Kontext wird abgearbeitet und dann wird das als ganz normale Anweisung interpretiert, als würde ich, als hätte ich das geschrieben.
Genau, genau.
Ja.
Das ist krass.
Das ist auch komisch, dass es da keine Unterscheidung gibt zwischen was schreibe ich und was ist einfach nur irgendwo im Kontext geladen, weil das ist irgendwie der Input aus irgendwelchen Webseiten.
Das ist merkwürdig, dass das nicht funktioniert.
Ja, es ist nicht ein einfaches Problem.
Also und da der KI, also bei der Entwicklung von den KI ist es eine sehr, ist eine Technologie, die sehr schnell ins Leben gerufen wurde.
Und es gibt immer dieses Trade-off zwischen Security und Convenience.
Also wenn es sicher ist und wenn es wie es einfach ist, das benutzen und die KI, also die versuchen das jetzt ein bisschen so dran zu schrauben.
Sie versuchen Sicherheitsmaß, also das sicherer zu machen.
They versuchen, den Models so beizubringen, sowas zu erkennen, vielleicht.
Aber das ist so ein bisschen drank gepflanscht, weil die immer so diese, die wollten, die haben es immer so versucht, they have this convenient zu machen.
Gut benutzbar zu machen und haben nicht darauf auf die Sicherheitsgaspekte geachted.
Okay, also ich kann das inhindern, diese Prompt Injection.
Die wird immer passieren.
Ich muss mich jetzt irgendwie dagegen schützen, dass wenigstens nichts Schlimmes passiert.
Und da kommen wir, glaube ich, zu den Sandboxen.
Also ich verpacke mybung and my KI-Agenten in a sandbox.
And from dort aus können die dann beispielsweise keine Daten verschicken, beziehungsweise da finden sie jetzt gar keine private Daten oder keine Credentials, weil ich die da explizit gar nicht zur Verfügung stellen, oder?
Genau, das schränkt das Risiko so sehr stark ein.
Also ich habe tatsächlich einen Blog post geschrieben.
Ich glaube, das können wir wahrscheinlich in den Shownotes verlinken.
And the erste teilen Sandbox versucht genau das zu lösen, was du gerade gesagt hast.
Also dieses erste Problem, dass my private data have.
Also das kann ich sehr stark.
And then the twenty thread, and this is so from a blog post, it's not not so fair.
I can tell you so a bit of what I made.
But the twenty teil is eben zu versuchen, ein bisschen die Internetzugriffe ziemlich sehr einzuschränken.
Das kann man nicht ganz machen.
Also man kann nicht alles einschränken.
Man muss ein paar, also einfach aus praktischen Gründen muss man, man muss ein paar Domains erlauben.
But man kann das Risiko schon ziemlich stark einschränken.
Deswegen sind das zwei Teile, um das Problem zu lösen.
Ich finde die Netzwerkeinschränkung interessant.
Da frage ich mich nämlich, ob es da einen Unterschied zwischen Remote LLMs gibt und lokale LLMs.
Weil bei Remote LLMs habe ich mal gelesen, dass die, wenn sie jetzt zum Beispiel für mich im Internet recherchieren, das in einer eigenen Sandbox auf deren eigenen Servern machen und nicht auf meiner lokalen Maschine.
Also die, sie führen sozusagen jetzt keine, also sie öffnen jetzt nicht ein Browser oder irgendwie Curl, führen sie jetzt nicht aus, um im Internet zu recherchieren, sondern das macht das LLM sozusagen auf dem Remote-Server.
Aber lokale LLMs, die brauchen ja dann, wenn sie recherchieren sollen im Internet, die machen es dann auf meiner lokalen Maschine.
Und das heißt, da kann ich ja im Grunde nicht unbedingt sagen, okay, du darfst nur auf die und die Domains zugreifen.
Es sei denn, irgendwie, ich habe da drei, also ich schreibe da rein, okay, du darfst auf Wikipedia drauf und auf induque.com, um zu recherchieren und das war's.
Oder?
Ja, ich glaube, wenn wir das als Gesamt, wenn wir das in der Gänze betrachten, es gibt unterschiedliche Arten von Aufgaben.
Und wenn es nur darum geht, so irgendwie so ein Code-Refactoring zu machen oder so vielleicht sogar diese Liste von Aufgaben, die ich erledigen möchte, dass die einfach eins nach dem anderen abgearbeitet werden.
Die Modelle können sowas oft schon, ohne irgendwelche Web-Searches zu machen.
Die haben schon irgendwie in diesen großen so Modell die Informationen schon gesammelt, wie sie behaupten, dass sie das tun können.
Und dafür müssen sie nicht extra so irgendwelche besondere Körpersuche machen.
Ich glaube, in dem Fall, was du gerade beschrieben hast, so ein bisschen so Recherchearbeit.
Und in dem Fall, ich glaube, wir brauchen so ein anderes Modus.
Also wahrscheinlich möchte man dann, also dann ist es nicht so schlimm, dass man eben alle unterschiedliche Webseiten, auf der der zugreifen möchte, dass wir da die einzelnen so erlauben.
Das ist so eher so der Modus.
Es gibt so zwei unterschiedliche Modi, in der man arbeiten möchte, wo man wirklich sagen möchte, hier mach das mal für drei Stunden oder bis du fertig bist.
Vielleicht sind es noch fünf Minuten, keine Ahnung.
Und da möchte ich das wirklich nicht, ich möchte damit, ich möchte nicht mehr involviert sein.
Es gibt aber andere Fälle, wo ich eventuell doch mich in der Schleife einsetzen möchte.
Und in Ordnung ist, wenn ich sage, dass die so beliebig, also dass sie die einfach, dass ich einfach prüfe, worauf sie es gut finden möchte.
Du hast ja selbst eine Sandbox bei dir jetzt lokal aufgesetzt.
Wie hast du das gemacht?
Wie sieht so dein Sandbox-Setup aus?
Mit meiner Antwort möchte ich vorab ergänzen, also mit dieses ganze Thema lehne ich mich so ein bisschen aus meiner Komfortzumme raus.
Ich bin, ich bin ein Senior-Entwickler.
Ich mache eher im Full Stack was.
Das bedeutet, wenn es so darum geht, irgendwie Systeme zu konfigurieren oder Netzwerke zu konfigurieren, ich bin normalerweise glücklich, wenn jemand anders das für mich so übernimmt.
Da werden wir, glaube ich, alle glücklich.
Genau.
Ich kenne aber genug über Sicherheit, um to wissen, wie wichtig das Thema ist.
Und ich bin überzeugt, dass wir Entwickler uns alle genug mit dem Thema beschäftigen müssen, um sicherzustellen, dass wir da unsere Daten nicht falsch behandeln.
Ich habe für meine Sandbox entschieden für ein Virtual Machine.
Da verwende ich auf Mac OS Lima.
Ich habe das einfach ausgewählt, also mit Hilfe von KI, muss ich zugeben.
Aber Lima lässt sich recht einfach konfigurieren.
Das bedeutet, ich muss da einfach ein, also irgendwie mit einem sehr kurzes YAML-Skript sagen, welches Ubuntu-Image ich verwenden möchte, auf welche Port, also SSH-Port das laufen lassen soll, auf welchem Ordner das zugreifen darf.
Und dann habe ich so ein paar, also da man kann irgendwie konfigurieren, welche Ports so irgendwie nach außen und nach innen gemappt werden sollen.
Und eine Sache hatte ich rausgefunden, damit wir wir verwenden so ein Microsoft SQL Server-Image bei uns im Projekt.
Das bedeutet, dass der ist ein Linux-Image.
Und damit das eben im VM auf Mac funktioniert, habe ich so irgendwie ein zusätzliche Präferenz setzen müssen.
Damit dieses Rosetta-Emulation von Mac funktioniert.
Aber der wichtige Teil davon ist, ist tatsächlich dieses Mount.
Du kannst es im VM sagen, du darfst nur auf meine Entwicklungsordner zugreifen.
Und die VM fährt hoch und sieht wirklich nur diesen Ordner und nichts anderes.
Aber das ist so, das ist trotzdem so eine echte Linux, der da läuft.
Und das bedeutet, ich kann da also Dinge schon einrichten für mich, für meine so Shell, zum Beispiel meine Farben anpassen und GitLab-Token für mein Maven-Repository, so extra für den Sandbox anlegen.
Das habe ich dort konfiguriert und ich habe so ein bisschen so meine Bash, ein paar Aliases hinzugefügt und sowas.
Sowas lässt sich alles in dem VM machen.
Aber das ist der Trick.
Also die Agenten, also wenn sie da arbeiten, die haben wirklich nur Zugriff auf den Code.
Die haben kein Zugriff auf irgendwas anderes.
Das heißt ja aber auch, dass ich vorher meine Projekte trotzdem gut strukturieren muss.
Also so Dinge wie in einer versteckten Enf-Datei trotzdem meine Credentials zwischenspeichern, darf ich dann trotzdem nicht machen, weil es trotzdem mit reingemountet wird.
Also ich muss da schon drauf achten, dass dann trotzdem sensible Daten dann trotzdem nicht in meinen Projekten, in diesen Ordnern sind, weil ich kann ja jetzt keine einzelnen Ordner oder Dateien ausschließen, oder?
Ich glaube, so Feingranular geht es nicht.
Genau, also dann müsstest du das irgendwie anders machen.
Aber das funktioniert für mich super, weil der Code wird da irgendwie also in den Ordner von dem Agenten generiert und ich kann dann mein normale Entwicklungswerkzeugen auf meinem Host verwenden, um die Änderungen anzuschauen und die Anwendung host zu fahren.
Tatsächlich habe ich beim Aufsitzenden im Sandbox, ich habe da es mir ermöglicht, dass ich halt mit IntelliJ, die haben so ein Remote-Tool, damit man wirklich per SSH in dem eigentlichen Linux-Virtual Machine zugreifen kann.
In der Praxis, nachdem ich den Artikel geschrieben habe, habe ich festgestellt, dass ich das gar nicht so brauche.
Also ich habe das nicht so oft verwendet, weil der Code wird irgendwie von den Agenten alles in einem Ordner angepasst.
Ich gucke es aber nur auf den Host an und führe es nur dann aus, wenn ich, wenn es etwas ist, wo was ich geprüft habe, dass es in Ordnung ist.
Und das bedeutet, dass es, dass dieses Agenten, wenn sie ausgeführt werden, ich weiß, dass sie wirklich nicht auf irgendwelche andere Dateien oder etwas anderes auf der auf dem Host zugreifen können.
Das bedeutet, wenn ich jetzt zum Beispiel mit Cloud Code arbeiten möchte, immer wenn ich mit Cloud Code, also immer wenn ich Anweisungen geben möchte, muss ich in die Kommandozeile reingehen, die in dieser VM läuft.
Das heißt, ich öffne die Kommandozeile der VM, schreibe dort mit Cloud Code zum Beispiel Dinge auf und Cloud Code arbeitet dann in der WM, aber ich kann immer noch meine lokale Entwicklungsumgebung nutzen und Tools in meinen Entwicklungsumgebung nutzen, die aber gar nicht in der WM laufen muss.
Nur, also das Einzige, was in der WM laufen muss, sind so Tools, die Cloud Code benutzt und Cloud Code selbst, oder?
Genau.
Also ich habe da Gradle installiert und Docker, weil, also wir Test-Containers für die für die Tests verwenden.
Aber ich habe nicht viel mehr daran installiert.
Und ich, das sind, das ist mein Setup und ich möchte einfach ergänzen, das passt zu meinem Setup, weil das ist, wie ich sowieso entwickelt habe.
Also ich habe immer, also als ich die Agenten verwendet habe, ich habe so Cloud oder Codex, ich habe die immer in der Konsole verwendet und dann das, was daraus generiert wurde, in IntelliJ geöffnet.
Ich kann da auch in einem, also in einem Sandbox kann ich da Git auch nicht wirklich verwenden.
Also nicht so, also man kann es verwenden, aber man kann zum Beispiel nicht pulling in einem Sandbox.
Wie ich das so aufgerichtet habe, der hat kein SSH-Zugriff, was eine gute Sache ist.
Wenn er irgendwie so SSH-Zugriff zu GitLab hat, dann ist das eigentlich eine sehr große Möglichkeit, wo er ungeschützte Dinge machen könnte oder er könnte irgendwie was pushen zu GitLab oder was weiß ich.
Das ist eigentlich eine große Quelle von möglichen Lücken, sag ich mal so, Sicherheitslücken.
Also es ist eine Sicherheitslücke, die ich einfach schließen kann.
Ich mache dann auf dem Host, denn, also ich mache GetFetch und ich, also ich checke so neue Branches aus oder neue, ich mache viel mit Worktrees, ich mache das auf dem Host und dann ist das dann automatisch in Sandboards drin und der Again kann da drauf zugreifen.
Und in deinem Artikel steht neben, also daneben, dass du halt dieses Lima-WM benutzt, auch JetBrain Skateway.
Was macht denn JetBrains Gateway?
Ja, das ist, was ich erzählt habe, was ich letzten Endes nicht so viel benutzt habe.
JetBrains Gateway ist eben so ein Tool von, also JetBrains, wo man per SSH sich mit dem Lima VM verbinden kann.
Und dann geht so ein IntelliJ-Fenster auf.
Es sieht genauso wie die normale, also aktuelle IntelliJ-Versionen aus.
Und du kannst dann wirklich, es ist, als ob IntelliJ auf deinem Host läuft.
Ich habe es aber in der Praxis nicht so oft verwendet, weil wie gesagt, eigentlich kann man dann direkt einfach IntelliJ starten.
Und wie Alterstauglich ist jetzt dein Setup?
Ich meine, du hast jetzt gesagt, du machst das und es funktioniert, aber wie gut funktioniert das?
Also, wie lange brauchst du, um das alles aufzusetzen, wie oft machst du Dinge falsch oder du kommst an Grenzen, weil es technisch dann doch nicht so richtig gut integriert ist.
Ich würde sagen, also für den, also für das, was ich in dem ersten Blogpost geschrieben habe, ich glaube, es hat mich ein halb Tage gebraucht, um das alles aufzusetzen.
Und mindestens die Hälfte war einfach dieses Problem mit der mit der Linux-Emulation und den Docker-Images.
Also der Rest, also ich glaube, wenn ich das von Anfang an gewusst hätte, dass es da Probleme gibt, vielleicht sogar in vielleicht hätte ich das in einem halben Tag aufgesetzt.
Ich glaube aber trotzdem, dass diese Zeit es wert ist, sowas aufzusetzen.
Der zweite Teil, das ist, der Post, der noch kommt.
Da habe ich länger gebraucht, auch weil ich nicht so Netzwerk, also da müsste ich sehr weit, also in meinem Kopf zurückgraben von dem, was ich über Netzwerke in der Uni gelernt habe.
And I glaube dafür hatte ich so zwei oder drei Tage gebraucht.
Die Lösung ist, dass ich vor meinem Sandbox eine Proxy aufgesetzt mit Squid.
Das ist so ein Forwarding-Proxy.
Und wenn etwas über CLS spricht, es gibt ein Connect, also the erste Request ist so ein Connect-Request.
Dann sendet es so ein Connect-Request with a domain name.
Under this domain name, when many forward-proxy davors, can I a law list erstellen and saga, darf this commando with this domain name so durchkommen oder nicht?
And that erlaubt es nämlich, diese other two Trifactor, den ich ganz am Anfang besprochen habe, das noch weiter so einzuschränken.
Das war mir wichtig, weil ich möchte, dass die, also ich, ich hatte da einfach Bauchschmerzen.
When the agent so in der Lage ist, mit dem Internet sich zu verbinden, ist das ein sehr großes Loch.
And auch, also dieses Sandbox, den ich in dem Artikel, den wir verlinken, gemacht habe, das löst das Problem, dass die sicherheitskritische Produktionsdaten nicht nach außen gegeben werden können, weil sie gar nicht da sind.
Wenn man aber die sicherheitskritische Aspekte von dem gesamten System betrachtet, der Code selber ist eigentlich ein Artefakt, den wir nicht nach außen geben wollen, in den meisten Fällen, außer wenn es so irgendwie Open Source ist.
Deswegen ist es trotzdem für mich wichtig, so wenig, also diese Lücke zu schließen, zu sagen, also wir wollen so wenig nach außen geben, wie es uns überhaupt möglich ist.
Genau.
Ich glaube, wenn man ein Pent-Test machen lässt, wenn man zum Beispiel die Version von einem Software nach außen gibt, in eine öffentliche API oder so, ist das auch, also wird das auch so als Binding erkannt, weil sowas sollte man nicht tun.
Wenn wir irgendwie nach außen sagen, welche Datenbank Versionen wir verwenden oder welche Java-Versionen wir verwenden.
Das sind auch alle Daten, die mich anfällig machen könnten, weil vielleicht gibt es schon irgendwelche Angriffe, die gegen diese Serverversionen funktionieren.
Und deswegen möchte man meiner Meinung nach nicht dieses Loch mit dem Internet zulassen.
Es gibt ja da noch andere KI-Tools, die häufig verwendet werden.
Ich denke da an so MCPs.
Diese Server, die man lokal laufen lässt, die dann nochmal andere Dinge tun und mit anderen Instanzen kommunizieren.
Beispielsweise, was waren das, was waren das für MCP-Server, die man dann zum Beispiel installiert?
Kennst du irgendwelche, die so ganz populär sind?
Ja, ich kenne, also Context 7 habe ich von gehört, ich habe nie verwendet.
Playwright fand ich ganz nützlich.
Was machen diese MCP-Server?
Ja, also ich muss zugeben, dass ich da nicht so tief drin bin.
Im Wesentlichen, mein Verständnis, und wir sollten wahrscheinlich unsere Kollege, also Dominik dazu einladen, um das besser zu erklären.
Aber die, also das ist so irgendein Server, den ich hoffentlich lokal bei mir installiert haben und der weiß, wie er irgendwie mit einem Tool spricht, um dann irgendwas zu machen.
Und das ist so irgendwie ein Protokoll, der entwickelt wurde.
In der Praxis finde ich, dass man heutzutage, also das ist so irgendwie ein paar Monate später, ich gewäre einfach Zugriff auf CLI-Kommandos selber, wenn ich sowas machen möchte.
Zum Beispiel bei, also ich, ich habe bei mir noch, also ich habe bei mir bisher keine MCP-Server installiert habe.
Ich habe einmal, also so zum Ausprobieren, so ein PowerPoint-MCP lokal installieren lassen, um so Slides generieren zu lassen aus Markdown.
Das war irgendwie praktisch.
Aber ich finde, also da bin ich ein bisschen vorsichtig bei MCP allgemein, weil ich habe ein paar Mal MCP-Server ausprobiert.
Mir war aber super wichtig, dass ich, das sind irgendwelche, ich habe ganz genau geguckt, was ist das für ein MCP-Server.
Ich habe es immer so versucht, also ich möchte, dass das irgendwas ist, was ich eben bei mir auf dem Rechner installieren lasse.
Und das bedeutet, ich habe dann überprüft, was welches Package wird da tatsächlich installiert.
Und ich habe so gut, wie ich konnte, dann der Code dann in dem Fall von den KI überprüfen lassen.
Aber ich habe so alles so wirklich ganz genau so überprüft ist, was ist das für ein Package, dass es so irgendwann ein, in dem Fall, ich glaube, das war so ein MPM-Package, den ich so bei mir lokal installiere, der irgendwas aus dem Internet holt und dann bei mir ausführen lässt.
Und ich habe das nur ein paar Mal gemacht und ich habe da bei dem Thema ehrlich gesagt, total Bauchschmerzen, weil das für mich total, es gibt so viele Stellen, also selbst ohne dass ich viel Ahnung von, also ich bin nicht aktuell, was Sicherheitsangriffe angeht, aber selbst da konnte ich so irgendwie drei verschiedene Stellen finden, wo ich da dachte, oh, das muss ich vorsichtig sein.
Und wenn ich denke, wenn ich persönlich denke, ich muss da vorsichtig sein und ich bin mir nicht sicher, ob ich da Ahnung habe, wovon ich mache, lasse ich meistens die Finger weg und versucht das einfach auf andere Art und Weise zu tun.
Deswegen habe ich das hauptsächlich gemacht bei MCP.
Ich habe das einfach nicht verwendet.
In den meisten Fällen bis auf ein paar Experimente.
Okay, da fallen wir jetzt aber schon drei Dinge ein, auf die man achten kann.
Also du hast gerade gesagt, die sollten lokal ausgeführt werden, damit wir eben die Möglichkeit haben, dort Dinge nicht ausführen zu lassen.
Beispielsweise durch eine Firewall oder ähnliches oder durch die Netzwerkbeschränkung.
Dementsprechend wäre es auch gut, diese MCP-Server auch auf, also auch in dieser Sandbox zu installieren, weil genau dann habe ich eben da die Sicherheit, dass nur auf die Daten zugeriffen werden kann, die ich da reinmounte.
Und wenn ich da diese Netzwerkbeschränkung da drin konfiguriere, ist halt, ne, sind auch die MCP-Server davon betroffen.
Und du guckst ja auch den Code an von diesen MCP-Servern.
Oder lässt sich analysieren, ja.
Ja, das ist doch, das ist doch gut.
Dann ist man zwar nicht sicher, aber ein wenig sicherer.
Weil so richtig 100% schützen kann man sie wahrscheinlich gar nicht, aber so eine Sandbox hört sich wirklich nach so nach einem Schritt an, den man eigentlich tun sollte.
Einfach, weil wir haben alle den, wie soll ich sagen, wir haben alle die Pflicht, dass die Daten sicher bei uns bleiben, die wir für die Arbeit verwenden.
Also haben wir, finde ich, auch die Pflicht, diese Maßnahmen zu ergreifen, wenn wir dann schon mit LLMs arbeiten.
Das, ja, das finde ich, also das ist auch so mein Punkt.
Ich habe meine Lösung präsentiert in diesem Blogpost und ich möchte auch ein Vortrag dazu entwickeln.
Das, was ich aber mit wirklich rüberbringen möchte, ist, dass man eine eigene Lösung finden soll, der zu dem eigenen Entwicklungsworkflow passt.
Es gibt mehrere Sandbox-Lösungen, die jetzt rauskommen.
Ich glaube, das ist eine Stelle, die sich entwickeln wird.
Es ist ein bekanntes Problem und wir werden gucken, was ist es.
Also für mein Setup, ich habe auch sowas quasi KI-agnostisch haben wollen.
Ich wechsle mal zwischen Agenten, deswegen war sowas, also Cloud Code hat einen eigenen Sandbox.
Der kam für mich nicht in Frage.
Aber man muss einfach schauen.
Also einige verwenden Dev-Containers als eine Art Sandbox.
Das ist etwas, was dann im Browser läuft.
Also ich glaube, man kann so eine eigene so Container inklusive, wenn man so zum Beispiel VS-Code verwendet oder so, das kann man da verwenden, da wie dieses Netzwerk einzuschränken, ist beim Ich glaube, das ist noch nicht so klar, wie das funktioniert.
Also für mich, wie das funktionieren würde.
Ich glaube, man kann auch so Docker wahrscheinlich verwenden.
Einfach einen Container, ne?
Statt einer WM.
Also das gleiche zu gewinnen.
Also für mich, der VM war das Einfachste zu konfigurieren und hochzufahren.
Das hat für mich einen großen Mehrwert.
Und ich mag nicht Docker-Files schreiben.
Also ich mag nicht.
Ich habe schon irgendwie genug.
Es gibt, also wir haben so Docker und dann für unsere lokale Entwicklung fahren wir so in Docker Compose hoch und dann dachte ich, so irgendwie ein Docker darüber, um den Docker Compose auszuführen, sind mir zu viele Dockers.
Und das mit der VM war tatsächlich viel, viel einfacher umzusetzen, viel weniger Config.
Und ist wahrscheinlich am Ende auch sogar noch sicherer, weil so eine VM weniger anfällig für Breaches ist.
Also von daher.
Genau, also ich glaube, es gibt eine Auflösung.
Ich glaube, die, ich bin mir eigentlich nicht sicher, aber es gibt unterschiedliche Levels der Containment.
Ich weiß nicht, wie ihr das sagt.
Also ich glaube VM.
Isolation, glaube ich, nennt man das.
Isolation, das ist das Wort, was ich mir suche.
Genau, es gibt, und ich glaube, VM sind mit am sichersten und dann Containers sind so ein bisschen weniger.
Und dann gibt es, ich weiß nicht, ob es sowas da drunter gibt.
Das spielt, also das ist gut für VMs, aber wie gesagt, ich glaube, mein Grund, warum ich das entschieden habe, war tatsächlich die Einfachheit der Konfiguration.
Dieses Lima Lima VM, der lässt sich so ein bisschen, also dieses Kommandezeile-Tool heißt Lima Kuttel, genauso wie Kubekuttel oder die ganze, also das, und dann kann man einfach Lima Küttel Start Dev Sandbox oder wie immer du dein VM nennst, kannst du einfach mit so einem kleines Befehl den VM starten oder runterfahren oder Restart oder so.
Das ist recht angenehm.
Wunderbar.
Gut, vielen Dank, dass ich mit dir über dein Sandbox-Setup reden durfte.
Wir werden dann schauen, ob nach der Veröffentlichung deines zweiten Artikels wir dann nochmal miteinander reden.
Vielen Dank erstmal.
Gerne.
Ciao.
