summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Klemkow <j.klemkow@wemelug.de>2012-11-07 07:24:09 +0100
committerJan Klemkow <j.klemkow@wemelug.de>2012-11-07 07:24:09 +0100
commit8f76fc9170060da6b385b5d2b68577c9d554cc03 (patch)
treea55b75f43f62d6fd257f0657884be001192eece0
parentf527da04b4f9293a147d165761d7fc58927b3a59 (diff)
downloadsksys-8f76fc9170060da6b385b5d2b68577c9d554cc03.tar.gz
sksys-8f76fc9170060da6b385b5d2b68577c9d554cc03.tar.bz2
sksys-8f76fc9170060da6b385b5d2b68577c9d554cc03.zip
Improve LibC section.
-rw-r--r--document.asciidoc46
1 files changed, 42 insertions, 4 deletions
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.