From 788c946c77c5833bb107e0bb23766f61471abb47 Mon Sep 17 00:00:00 2001
From: Jan Klemkow <j.klemkow@wemelug.de>
Date: Sun, 6 Jan 2013 00:02:48 +0100
Subject: format the document.

---
 document.asciidoc | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

(limited to 'document.asciidoc')

diff --git a/document.asciidoc b/document.asciidoc
index 5407479..3a1cf70 100644
--- a/document.asciidoc
+++ b/document.asciidoc
@@ -1,6 +1,7 @@
 = Sichere Software-Entwicklung im systemnahen Bereich
 :author: Jan Klemkow, Benjamin Franzke
 :lang: de
+:toc:
 
 == Kurzfassung
 
@@ -11,6 +12,8 @@ Systemschnittstellen (System-Calls) zugreifen.
 Es werden einleitend Problemfelder von Systemnahen Programmen geschildert und
 ein Historischer Vergleich zu Anwendungsprogrammen gezogen.
 
+:numbered:
+
 == Einleitung
 
 Sicherheit fuer die Software-Entwicklung im systemnahen Bereich spielt eine
@@ -36,14 +39,14 @@ Fokus der Angriffe.
 
 // Angefangen beim Kernel des Betriebssystems 
 
-== Angriffsvektoren
+//== Angriffsvektoren
 
-In diesem Kapitel werden verschiedene Angriffsvektoren und Schwachstellen von
-Systemprogrammen erlaeutert.
-Zudem werden werden verschiedene Verteidigungsmassnahmen erlaeutert, welche
+In den folgenden Kapiteln werden verschiedene Angriffsvektoren und
+Schwachstellen von Systemprogrammen erlaeutert.
+Zudem werden werden verschiedene Verteidigung s Massnahmen erlaeutert, welche
 das Risiko der Angriffsmoeglichkeiten senken.
 
-=== Standard-C-Bibliothek
+== Standard-C-Bibliothek
 
 Viele Systemprogramme sind in der Programmiersprache ``C'' geschrieben.
 Deren Standardbiblothek unterlag im Laufe der Zeit einer ganzen Reihe von
@@ -100,7 +103,7 @@ TODO: strncpy() strlcpy()
  * strcpy()
  * str..()
 
-=== Netzwerk-Programmierung
+== Netzwerk-Programmierung
 
 Ein grosser Angriffsvektor auf Computersysteme sind die Laufenden Dienste,
 welche ueber Netzwerk und Internet erreichbar sind.
@@ -116,7 +119,7 @@ erlaeutert werden.
  * Zugangsbeschraenkung (Firewall Layer 3/4)
  * Applikation Level Gateway (doppelte parsen von protokollen)
 
-==== Privilege-Separation
+=== Privilege-Separation
 
 Bei der Privilege-Seperation wird ein Programm in verschiedene Prozesse mit
 unterschiedlichen Berechtigungen auf geteilt.
@@ -130,7 +133,7 @@ Im einfachsten Fall startet ein Daemon mit Root rechten und holt sich alle
 Ressourcen, wie etwas Sockets mit Well-Known-Ports oder eine Filedescriptor auf
 eine Datei, gibt dann die rechte ab und laeuft im user-mode weiter.
 
-==== Privilege-Revocation
+=== Privilege-Revocation
 
 Die meisten Anwendung benoetigen ausschliesslich waehrend der Initialisierung
 hoehere Rechte, um etwa einen Socket mit einem Well-Known-Port zu oeffnen.
@@ -140,7 +143,7 @@ abgeben und mit normalen Benutzer-Rechen weiter laufen.
 
 
 
-==== Service-Seperation
+=== Service-Seperation
 
 Da auf einem Computer zumeist mehr als nur ein Dienst laeuft, welcher mit einem
 Netzwerk oder dem Internet verbunden ist, ist auch die Angriffsmoeglichkeit auf
@@ -180,7 +183,7 @@ Sollte ein Dienst keine eigenen Dateien benoetigen, kann dieser unter dem
 speziellen Nutzer ``nobody'' ausgefuehrt werden.
 Unter vielen Unix-Systemen wird dieser speziell fuer diese Aufgabe verwendet.
 
-==== Beschraenkung der Erreichbarkeit
+=== Beschraenkung der Erreichbarkeit
 
 Sollte ein Dienst nur fuer einen bestimmten Kreis von Nutzern bestimmt sein,
 dann sollte man die Erreichbarkeit des Dienstes auf diesen Kreis beschraenken.
@@ -197,10 +200,11 @@ Im Hinblick auf IPv6 gibt es in diesem Bereich viele Spezialadressen welche
 fuer die verschiedensten Zwecke genutzt werden koennen.
 In jedem Fall sollte die Erreichbarkeit von Diensten soweit wie moeglich
 eingeschraenkt werden.
-Auch Tunnel-Techniken wir IPSEC und andere VPN-Loesungen koennen dabei verwendet
-werden.
+Auch Tunnel-Techniken wir IPSEC und andere VPN-Loesungen koennen verwendet
+werden, um einen Dienst ausschliesslich einem ausgewaehlten Nutzern zugaenglich
+zu machen.
 
-=== Kernel
+== Kernel
 
 Beim erstellen einer sicherheitskritischen Anwendung ist nicht nur die
 Architektur und Programmierung der Anwendung selbst wichtig.
@@ -215,7 +219,7 @@ das Gesamtsystem betrachtet.
  * interrupt blockierung
  * Treiber Userland(minix) / OpenSource (nvidia)
 
-=== Microkernel
+== Microkernel
 
 Die meisten Betriebssysteme verwenden ein monolitisches Kernel-Design.
 In diesem werden viele Aufgaben des Betriebssystems im Kernel erledigt.
@@ -228,10 +232,10 @@ Dieses hat den Vorteil, dass Schutzfunktionen des Prozessors genutzt werden
 koennen.
 
 Bei Betriebssystemen mit einem Mikro-Kernel-Design ist dieses anders.
-Dort werden viele Aufgaben an User-Prozesse ausgelagert, z. B. die
+Dort werden viele Aufgaben an User-Prozesse ausgelagert, zum Beispiel die
 Geraetetreiber.
 
-==== NVIDIA Treiber Problem
+=== NVIDIA Treiber Problem
 
 Im +CVE-2012-0946+ wird eine Sicherheitsluecke im NVIDIA Graphikkarten-Treiber
 fuer Linux, Solaris und FreeBSD beschrieben, welcher das erlangen von hoeheren
-- 
cgit 

