summaryrefslogtreecommitdiff
path: root/document.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'document.asciidoc')
-rw-r--r--document.asciidoc36
1 files changed, 20 insertions, 16 deletions
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