Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Sicherheit unter Linux
  gp A.1 Viren und Trojaner
  gp A.2 Der Superuser (su)
  gp A.3 Überlaufen von Logfiles
  gp A.4 Zugriffsrechte auf Dateien
  gp A.5 Das SUID-Bit
  gp A.6 Programme ohne Ausführrechte
  gp A.7 Buffer Overflow (Pufferüberlauf)
  gp A.8 Race Condition
  gp A.9 Temporäre Dateien
  gp A.10 chroot
  gp A.11 Umgebungsvariablen
  gp A.12 Zugriffsrechte – häufig gemachte Fehler
  gp A.13 system() und popen()
  gp A.14 Offene Filedeskriptoren
  gp A.15 Core Dump
  gp A.16 SQL Injection
  gp A.17 Filedeskriptor-Überlauf mit select()


Rheinwerk Computing

A.9 Temporäre Dateien  toptop

Die Sicherheitslücke der temporären Dateien sind neben dem Buffer Overflow eine gerne gemachte Einladung für den Einbrecher. Temporäre Dateien werden gewöhnlich in einem öffentlichen beschreibbaren Verzeichnis erzeugt (meistens /tmp). Damit nicht jeder diese Datei im temporären Verzeichnis löschen kann, wird für alle User das Filesystemflag (t) gesetzt (chmod +t /tmp). Damit ist es nur dem Besitzer einer Datei gestattet, seine Datei aus dem Verzeichnis zu löschen. Leider werden Unterverzeichnisse in /tmp nicht vom Setzen dieses Filesystemflags berücksichtigt – was bedeutet, dass dieses Flag extra für jedes Verzeichnis gesetzt werden muss (Unterverzeichnisse haben aber meistens rwxr-xr-x, was entwarnend ist)! Dies ist ein häufig vernachlässigter Fehler, womit ein unerlaubtes Löschen von Daten möglich wird.

Ein weiteres Problem mit den temporären Dateien ist die Verwendung von nicht-atomaren oder unsicheren Funktionen zur Erstellung von temporären Dateien wie tmpnam() oder tmpfile(). Außer der Tatsache, dass beide Funktionen nicht-atomar sind, folgen beide Funktionen auch symbolischen Links!

Bei tmpnam() (und auch mktemp()) kommt noch hinzu, dass zwischen der Erzeugung und dem Öffnen der Datei mittels open() wieder ein Zeitpuffer vorhanden ist. In diesem Zeitabschnitt ist es wieder möglich, einen Link mit demselben Namen zu erzeugen, so dass open() diesem Link folgt, was eine Race Condition zur Folge haben kann. tmpnam() oder mktemp() garantieren zwar, während der Erzeugung für einen eindeutigen temporären Namen, aber zwischen der Zeit der Erzeugung des Namens und dem Öffnen dieser Datei kann allerhand Schabernack betrieben werden.

Letztendlich bleibt einem dann nichts anderes übrig, als die Verwendung der Funktion open() mit den richtigen Parametern:

if((tmp = tmpnam(NULL)) == NULL)
    exit(EXIT_FAILURE);
/* Ein weiteres sinnvolles Flag währe O_NOFOLLOW */
if((fd = open(tmp, O_RDWR|O_CREAT|O_EXCL, 0600)) < 0) {
     perror("Fehler bei open");
     exit(EXIT_FAILURE);
}
/* Hier steht der Filedeskriptor für die weitere Benutzung */
/* zur Verfügung */
 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern