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