Symlink-Schwachstelle

Symlink-Schwachstelle

Eine Symlink-Schwachstelle (auch symlink vulnerability) ist eine Sicherheitslücke, die es einem Angreifer erlaubt, beliebige Dateien mit den Rechten des ausgeführten Programmes zu schreiben.

Diese Lücke entsteht, wenn ein Programm mit erweiterten Rechten eine Datei in einem Verzeichnis, auf das der Angreifer Schreibzugriff hat, auf unsichere Art und Weise erstellt. Der Angreifer legt im Vorfeld einen Symlink mit dem gleichen Dateinamen auf eine Datei, die er mangels Berechtigungen normalerweise nicht schreiben kann an. Das anfällige Programm bemerkt den Symlink nicht und erstellt oder überschreibt die Zieldatei. Häufig hat der Angreifer eine Möglichkeit den Inhalt der Datei zu beeinflussen.

Beispiel

Nehmen wir als Beispiel das fiktive Unix-Programm foo, das weiterführende Informationen über Benutzerkonten ermittelt und dazu setuid ist. Aus Performance-Gründen sortiert es zunächst die Benutzerliste in einer temporären Datei: /tmp/foo.

Das Verzeichnis /tmp is world-writable. Der Angreifer Alice erstellt dort vor Programmstart einen Symlink von /tmp/foo auf die Datei /root/.rhosts . Dann ruft er foo mit dem Parameter + + als Accountnamen auf. Das Programm foo versucht jetzt die Zeichenfolge + + in die temporäre Datei /tmp/foo zu zuschreiben. In Wirklichkeit erstellt es dabei allerdings die Datei /root/.rhosts. Nach dem es seine eigentliche Aufgabe erfüllt hat, löscht es den Symlink /tmp/foo, fasst aber /root/.rhosts nicht an.

Die Zeichenfolge + + wurde vom Angreifer in diesem Beispiel bewusst gewählt, weil dieser Eintrag in der Datei /root/.rhosts bedeutet, dass sich jeder mit Hilfe des Programm rlogin als Root anmelden kann.

Wirkungslose Gegenmaßnahmen

Es reicht nicht aus, vor der Erstellung der Datei zu prüfen, dass kein gleichnamiger Symlink existiert, weil zwischen der Prüfung und der Erstellung ein kleines Zeitfenster liegt (Race Condition). Der Angreifer kann dieses Zeitfenster vergrößern, indem er das anfällige Programme in Debugger ausführt oder das System anderweitig überlastet.

Gegenmaßnahmen

Zum Erstellen von temporären Dateien sollte die stdlib-Funktion mkstemp(3) verwendet werden. Für Shell-Skripte gibt es das Programm mktemp. Wenn der Dateiname vom Programm vorgegeben werden soll, müssen beim Aufruf der stdlib-Funktion open die Flags O_CREAT|O_EXCL mitgegeben werden.


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Temp — Temporäre Dateien (im Computer Slang oft auch Tempfiles genannt) sind Arbeitsdateien, die vom Betriebssystem oder von anderen Programmen verwendet werden und zur zeitlich begrenzten Zwischenspeicherung von Daten dienen. Die Auslagerung der Daten… …   Deutsch Wikipedia

  • Tempdatei — Temporäre Dateien (im Computer Slang oft auch Tempfiles genannt) sind Arbeitsdateien, die vom Betriebssystem oder von anderen Programmen verwendet werden und zur zeitlich begrenzten Zwischenspeicherung von Daten dienen. Die Auslagerung der Daten… …   Deutsch Wikipedia

  • Temporäre Dateien — (im Computer Slang oft auch Tempfiles genannt) sind Arbeitsdateien, die vom Betriebssystem oder von anderen Programmen verwendet werden und zur zeitlich begrenzten Zwischenspeicherung von Daten dienen. Die Auslagerung der Daten erfolgt dabei, um… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”