Was Sie einem Assistenten schicken, verlässt Ihren Rechner
Datenschutz bei einem KI-Assistenten heißt: Alles, was Sie eintippen, geht an einen fremden Dienst und kann dort gespeichert werden. Sicherheit heißt außerdem, den Code, den er liefert, vor der Übernahme auf bekannte Schwächen zu prüfen.
Eine Studentin fügt eine Konfigurationsdatei ein, damit der Assistent einen Fehler findet. In der Datei steht ein Passwort. Jetzt liegt es auf einem Server, den sie nicht kontrolliert.
Am Ende dieser Lektion
Notiz
Ich kann sagen, was ich nicht in einen Assistenten einfüge und was generierter Code oft falsch macht.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Geheimnis | ein Wert, der Zugang gibt, etwa ein Passwort oder ein Schlüssel | |
| Personenbezogene Daten | Angaben, mit denen sich ein Mensch erkennen lässt | Name und Anschrift |
| Einschleusung | ein Angriff, bei dem Text als Befehl gelesen wird | |
| Abhängigkeit | ein fremdes Paket, das Ihr Code benutzt | |
| Maskieren | einen Wert vor dem Weitergeben durch Sternchen ersetzen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Fügen Sie nie Geheimnisse und fremde Daten ein
Ein Geheimnis ist ein Passwort, ein Schlüssel oder ein Zugangscode. Fügen Sie so etwas nie in einen Prompt ein.
Personenbezogene Daten wie Namen, Adressen oder Noten von anderen gehören ebenfalls nicht hinein. Das gilt auch für Texte, die Ihnen nicht gehören oder nicht öffentlich sind. Prüfen Sie vorher die Regeln Ihrer Hochschule.
Ein Beispiel: Was darf in den Prompt?
| Sie wollen mitschicken | Darf es hinein? | Was Sie stattdessen tun |
|---|---|---|
| Eine Fehlermeldung ohne Namen | Ja | Die Meldung einfügen |
| Ihre Konfigurationsdatei mit Passwort | Nein | Das Passwort durch *** ersetzen |
| Eine Kundenliste mit Adressen | Nein | Erfundene Beispielzeilen nehmen |
| Ihren eigenen Übungscode | Ja | Ohne Geheimnisse einfügen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Im Lab suchen Sie Geheimnisse in erfundenem Text
Sie arbeiten mit Text, den der Befehl printf selbst erzeugt. Alle Werte sind erfunden. Ein Befehl sucht nach Wörtern, die auf ein Geheimnis hinweisen. Ein zweiter findet eine Adresse. Ein dritter maskiert einen Wert.
Die Befehle ändern keine Datei und greifen nichts an.
Eine Zeile mit Schlüssel finden
printf 'name=anna\nkey=AB12CD34EF56GH78\nport=8080\n' | grep -nEi "key|secret|password|token"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine E-Mail-Adresse finden
printf 'Anna Becker, [email protected], 0151 2345678\n' | grep -oE "[a-z]+@[a-z.]+"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen Wert maskieren
printf 'key=AB12CD34EF56GH78\n' | sed 's/=.*/=***/'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was die drei Befehle zeigen
Der erste Befehl nennt die Zeile 2:key=AB12CD34EF56GH78, die Nummer 2 steht davor. Der zweite druckt [email protected]. Der dritte druckt key=***.
So finden Sie Geheimnisse und Adressen, bevor Sie einen Text weitergeben, und ersetzen die Werte durch Sternchen.
Ein häufiger Fehler
Warnung
Viele glauben, ein Passwort sei sicher, wenn sie es nach dem Absenden löschen. Was einmal gesendet wurde, haben Sie nicht mehr in der Hand. Nehmen Sie das Geheimnis als bekannt an und ändern Sie es sofort.
Generierter Code macht oft dieselben Sicherheitsfehler
Ein Assistent schreibt, was in vielen Beispielen häufig steht, auch wenn es unsicher ist. Typisch ist eine Einschleusung: Eine Abfrage wird aus Textteilen zusammengesetzt.
Typisch sind auch Passwörter fest im Code, Eingaben ohne Prüfung und Abhängigkeiten, die es nicht gibt oder die veraltet sind. Prüfen Sie jedes fremde Paket, bevor Sie es installieren.
Eine zusammengebaute Abfrage
# Eine Abfrage, die ein Vorschlag aus Textteilen zusammenbaut.
name = "x' OR '1'='1"
abfrage = "SELECT * FROM kunden WHERE name = '" + name + "'"
print(abfrage)
# Die sichere Form trennt den Befehl von den Werten.
print("SELECT * FROM kunden WHERE name = ?", [name])
Warum der erste Text gefährlich ist
Der erste Ausdruck lautet SELECT * FROM kunden WHERE name = 'x' OR '1'='1'. Die Bedingung '1'='1' ist immer wahr, die Abfrage liefe also für alle Zeilen.
Die zweite Form schickt Befehl und Wert getrennt. Der Wert bleibt dann ein Wert. Das ist die Regel, die Sie im Review von Datenbankcode zuerst prüfen.