From 8f76fc9170060da6b385b5d2b68577c9d554cc03 Mon Sep 17 00:00:00 2001
From: Jan Klemkow <j.klemkow@wemelug.de>
Date: Wed, 7 Nov 2012 07:24:09 +0100
Subject: Improve LibC section.

---
 document.asciidoc | 46 ++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 42 insertions(+), 4 deletions(-)

(limited to 'document.asciidoc')

diff --git a/document.asciidoc b/document.asciidoc
index e97255a..edda3a7 100644
--- a/document.asciidoc
+++ b/document.asciidoc
@@ -8,13 +8,48 @@ auf UNIX-Systeme.
 
 == Angriffsvektoren
 
+In diesem Kapitel werden verschiedene Angrifftvektoren und Schwachstellen von
+Systemprogrammen erlaeutert.
+Zudem werden werden verschiedene Verteidigungsmassnahmen erlaeutert, welche
+das Risiko der Angriffsmoeglichkeiten senken.
+
 === 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.
+Veraenderungen, welche unteranderem die Sicherheit von Programmen erhoehten.
+
+Eines der groessten Probleme in C-Programmen stellen die Zeichekettenfunktionen
+da.
+Da diese seit langer Zeit immer wieder fuer Sicherheitsprobleme sorgen.
+Bei dieses Funktionen ist Problem, dass diese die Laengen von Speicherbereichen
+nicht beachten.
+Dadurch kommt es schnell zu Pufferueberlaeufen und Zugriffen auf nicht
+allokierte Speicherbereiche.
+Dadurch koennen Angreiffer eigenen Programmcode einschleusen und ausfuehlen
+lassen, sowie Programme zum Absturz bringen.
+
+Als Fallbeispiel wird die Funktion strcpy erklaert.
+Diese Funktion wird dafuer benutzt um eine Zeichenkette von einem Speicherplatz
+zu einem anderen zu kopieren.
+Als Parameter bekommt die Funktion die Startadresse der Quelle und die
+Startadresse des Ziels im Speicher.
+Der Funtkion ist dabei die Groesse der jeweiligen Speicherplaetze nicht bekannt.
+Es wird nun eine Speicherzelle nach der Anderen kopiert, solange bis in der
+Quelle ein NUL-Byte auftaucht.
+Dabei kann die Funtkion weder sicherstellen, dass sie nicht ueber den
+Quellpuffer hinaus Bytes kopiert, sowie dass sie nicht ueber die genzen des
+Zielpuffers hinaus schreibt.
+
+Durch dieses Verhalten, kommt es immer wieder zu Pufferueberlaeufen, welche
+zu unvorhersagbaren Folgen fuer den weiteren Programmablauf fuehren.
+
+Um dieses Problem zu loesen wurden neue Zeichenkettenfuntkionen in die
+Standard-C-Bibliothek auf genommen, welche als Argument maximal Laengen
+uebergeben bekommen.
+
+Hierbei gibt es zwei ansaetze mit Laengen umzugehen.
+TODO: strncpy() strlcpy()
 
  * gets()
  * strlen()
@@ -38,9 +73,12 @@ Zum Schutz solcher Dienste gibt es verschiene Mechanissmen.
 
 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
+Ziel ist es, so wenig Programmcode wie moeglich mit root-Rechten laufen zu
 lassen.
 
+Als Beispiel soll ich der Window-Compositer Wayland genannt...
+TODO: wayland privilege separater erklaeren
+
 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.
-- 
cgit 

