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.13 system() und popen()  toptop

Eines der größten Sicherheitslöcher, welches jeder Programmierer kennen sollte, ist die Verwendung der Funktion system(), welche eine Shell verwendet, um ein anderes Programm zu starten. Ein einfacher kurzer Codeausschnitt sollte Ihnen genügen, um das Problem zu erläutern:

...
printf("Wonach wollen Sie suchen: ");
fgets( suche, MAX, stdin );
...
sprintf (buffer,  "fgrep -i %s datenbank.sql ", suche);
system(buffer);
...

Der Anwender gibt jetzt für den String suche Folgendes ein:

Wonach wollen Sie suchen:   foo  /dev/null; rm -Rf /
fgrep -i foo /dev/null; rm -Rf / /usr/dict/words

Hinweis   Das Sicherheitsloch ist also hier nicht die Funktion system(), sondern meistens der Programmierer, der es nicht richtig anwendet!


Hier hat der Anwender aus einem Kommando zwei gemacht – was sich in der Shell durch ein Semikolon realisieren lässt. Das erste Kommando ist noch harmlos, aber mit dem zweiten Kommando kann man, wenn man dummerweise auch noch als root unterwegs ist, alle Dateien vom laufenden System entfernen. Auch, wenn man nicht als root unterwegs sein sollte, können trotzdem noch alle Dateien entfernt werden, welche man als User besitzt. Dasselbe Problem kann auch mit der Funktion popen() auftreten, womit eine Pipe zwischen dem Eltern- und Kindprozess verwendet wird. Auch hier wird die Shell zur Ausführung von Kommandos verwendet.

Ein weiteres Problem ist die Verwendung der Funktionen unter Angabe des Kommandos, das gestartet werden soll, ohne eine komplette Pfadangabe. Denn auch hier gilt, wie schon bei den Umgebungsvariablen, dass die PATH-Angabe jederzeit verändert und durch ein gleichnamiges schadhaftes Programm in einem anderen Verzeichnis ersetzt und ausgeführt werden kann. Kann/will man nicht auf system() oder popen() verzichten, sollte man wenigstens den kompletten Pfad zur Anwendung angeben.

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