= Sichere Softwareentwicklung im Systemnahenbereich
:author: Jan Klemkow, Benjamin Franzke

== Einleitung

Dieses Dokument beschreibt Sicherheitrisiken von Systemprogrammen mit dem Fokus
auf UNIX-Systeme.

== Angriffsvektoren

=== Standard-C-Bibliothek

Viele Systemprogramme sind in der Programmiersprache C geschrieben.
Deren Standardbiblothek unterlag im laufe der Zeit einer ganzen Reihe von
Veraenderungen, welche auch den Punkt der Sicherheit betrafen.

Zeichenketten-Funktionen.

 * gets()
 * strlen()
 * strcpy()
 * str..()

=== Netzwerk-Programmierung

Ein grosser Angriffvektor auf Computersysteme sind die Laufenden Dienste,
welche ueber Netzwerk und Internet erreichbar sind.
Ein Fehler in iherer Programmierung kann von ausserhalb ausgenutzt werden,
da man bei Internet diensten eine staendige weltweite Erreichbarkeit hat.

Zum Schutz solcher Dienste gibt es verschiene Mechanissmen.

 * privilege separation
 * zugangs beschraenkung (Firewall Layer 3/4)
 * Applikation Level Gateway (doppelte parsen von protokollen)

==== Privilege Separation

Bei der Privilege-Seperation wird ein Programm in verschiedene Prozesse mit
unterschiedlichen Berechtigungena auf geteilt.
Ziel ist es, so wenig wie moeglich Programmcode mit root-Rechten laufen zu
lassen.

Im einfachsten Fall startet ein Deamon mit Root rechten und holt sich alle
resourcen, wie etwas sockets mit Well-Known-Ports oder eine Filedescriptor auf
eine Datei, gibt dann die rechte ab und laeuft im user-mode weiter.

=== Kernel

 * interrupt blockierung

// vim: set syntax=asciidoc:
