Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Passwörter und Schlüssel am falschen Ort

Nach dieser Lektion: Ich kann ein Geheimnis am falschen Ort finden und sagen, wohin es gehört.

Lektion, 55 Min.3 BefehleWrongSecrets-Lab: fest einprogrammierte Geheimnisse finden und lernen, wohin Geheimnisse gehören

Das Passwort in der Datei vom letzten Jahr

Ein Entwickler fügt das Zahlungspasswort eines Shops in eine Datei ein, um etwas zu testen. Er speichert die Datei im Code-Archiv. Am nächsten Morgen löscht er die Zeile und speichert erneut.

Alle denken, es sei weg. Ein Jahr später liest ein Fremder die alte Version der Datei. Das Passwort funktioniert noch.

Die eine Regel

Warnung

Dieses Lab ist eine Anwendung, die absichtlich falsche Geheimnisse versteckt. Durchsuchen Sie nur Ihre eigene, private Kopie und nichts sonst. Sie hat keine Verbindung ins Internet. Wer auf fremden Seiten oder in fremden Archiven nach Geheimnissen sucht und sie nutzt, begeht eine Straftat.

Am Ende dieser Lektion

Notiz

Ich kann ein Geheimnis am falschen Ort finden und sagen, wohin es gehört.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Geheimnisein Passwort, ein Schlüssel oder ein Token, das privat bleiben muss
Umgebungsvariableeine benannte Einstellung, die ein Programm beim Start bekommtDB_PASSWORT
Geheimnisspeicherein verschlossener Speicher, der Geheimnisse nur an erlaubte Programme gibt
Versionsverlaufalle früheren Fassungen aller Dateien in einem Code-Archiv
Rotierenein Geheimnis durch ein neues ersetzen
Container-Imageeine gepackte Kopie eines Programms und seiner Dateien

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Geheimnisse gelangen an vielen Orten nach außen

Ein Geheimnis ist verloren, sobald jemand, für den es nicht bestimmt war, eine Kopie lesen kann. Code ist nur ein Ort.

Es kann in einer Quelldatei stehen, in alten Fassungen oder in einem Container-Image. Es kann in einer Einstellungsdatei stehen, in einem Protokoll oder in einem Skript, das jeder Besucher bekommt. Ein Geheimnis, das der Browser braucht, kennt jeder.

Beispiel: wo jede Kopie liegt

OrtWer es lesen kannBesser
Eine QuelldateiJeder mit dem CodeAus der Umgebung lesen
Alte FassungenJeder mit einer Kopie des VerlaufsRotieren, dann den Verlauf bereinigen
Ein Container-ImageJeder, der das Image laden kannZur Laufzeit geben, nicht beim Bauen
Ein Skript für BrowserJeder BesucherAuf dem Server behalten
Eine ProtokolldateiJeder, der Protokolle liestGeheimnisse nie ausgeben

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Anwendung in Ihrem Lab

Ihr Lab betreibt WrongSecrets. Starten Sie es und führen Sie dann diese drei Befehle aus. Sie sehen nur hin. Der erste fragt, ob die Anwendung gesund ist. Der zweite fragt, welche Verwaltungsseiten sie jedem anbietet. Der dritte zeigt die ersten Zeichen eines Skripts, das sie jedem Besucher schickt.

Ist die Anwendung gesund?

Befehl
curl -s -w "\n" http://wrongsecrets:8080/actuator/health

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Welche Verwaltungsseiten bietet sie an?

Befehl
curl -s http://wrongsecrets:8080/actuator | grep -o 'actuator/[a-z]*' | sort -u

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der Anfang des Skripts für jeden Besucher

Befehl
curl -s http://wrongsecrets:8080/js/index.js | head -n 1 | cut -c 1-120

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 Ausgaben sagen

Die erste gibt eine kurze Zeile aus, die mit "status":"UP" endet. Die zweite gibt drei Namen aus: auditevents, health und info. Fragen Sie sich, welche davon ein Fremder nicht lesen sollte.

Die dritte gibt unleserlich wirkenden Code aus. Er ist verschleiert, nicht verschlossen. Der Browser muss ihn ganz lesen, um ihn auszuführen, und Sie können es auch.

Ein häufiger Fehler

Warnung

Viele glauben, ein Geheimnis sei weg, wenn man es aus der Datei löscht. Das stimmt nicht. Alte Fassungen bleiben im Verlauf, in jeder Kopie und in jedem früher gebauten Image. Behandeln Sie jedes Geheimnis, das je offen lag, als verbraucht. Rotieren Sie es zuerst. Räumen Sie danach auf.

Ein Geheimnis gehört in einen Speicher

Das Programm fragt beim Start nach dem Geheimnis. Der Geheimnisspeicher prüft, wer fragt, und gibt es heraus. Nichts steht im Code oder im Image.

Geben Sie jedem Programm nur die Geheimnisse, die es braucht. Rotieren Sie sie nach Plan, damit ein Verlust nur kurze Zeit etwas nützt.

Geheimnisse haben Formen, die ein Programm findet

Viele Geheimnisse sehen ähnlich aus. Eine Zugangskennung für AWS (Access Key ID) beginnt mit AKIA und hat 20 Großbuchstaben und Ziffern. Eine Datei mit einem privaten Schlüssel beginnt mit einer Zeile aus Strichen und dem Wort BEGIN. Eine Zeile wie passwort = "..." enthält einen Wert.

Scanner suchen diese Formen in Code und Verlauf. Sie finden viele, aber nicht alle. Sehen Sie einen Fund als Anlass zum Rotieren.

Ein winziger Scanner

Code: python
zeilen = [
    "name = laden",
    "schluessel = AKIAABCDEFGHIJKLMNOP",
    "passwort = hunter22",
]
# Fügen Sie eine vierte Zeile mit einer Geheimnisform ein und führen Sie den Block aus.
nummer = 0
for zeile in zeilen:
    nummer = nummer + 1
    if "AKIA" in zeile or "passwort" in zeile:
        print("Zeile prüfen:", nummer)

Über dieses Lab und seinen Quellcode: WrongSecrets-Lab: fest einprogrammierte Geheimnisse finden und lernen, wohin Geheimnisse gehören

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.