Skip to content

DK19: Der gemeine Buffer Overflow

In der letzten Sendung sprachen wir über Sicherheitsschwankungen bei Software. Dabei kam uns die Idee, einzelne Probleme aufzugreifen und in einer eigenen Sendung zu besprechen. Der neunzehnte Datenkanal macht den Anfang mit Buffer Overflows oder zu deutsch Pufferüberläufen.

Am Anfang der Sendung kamen wir von leichtgewichtigen und simplen Protokollen zur Erschaffung einer besonders kleinen ELF-Datei. Die Brücke zum eigentlichen Thema bildete der Free-Your-Android-Workshop im Krautspace. Wir erklärten den Aufbau des Stapelspeichers (Stacks) und nutzten dieses Bild, um Pufferüberläufe zu erklären. Denn letztlich werden im Speicher Kisten aufeinander gestapelt. In den Kisten lagern nach unserem Bild Blätter. Die werden beschrieben und wenn der Schreiber nicht aufpasst, kleckst die Tinte bzw. er übermalt Blätter. Geschicktes Übermalen bzw. Klecksen legt die Grundlagen für einen erfolgreichen Exploit. Das Bild sollte schön klar machen, wie ein Buffer Overflow funktioniert. Wir schweifen an einigen Stellen immer mal auf diverse C-Funktionen und anderes ab.

Der Schutz vor derartigen Schwachstellen ist im letzen Viertel dran. Wir starten mit Kanarienvögeln und arbeiten uns über ASLR zum NX-Bit. Der Ausflug ist wieder ein wenig technischer. Aber mit dem obigen Erklärungen sollte das gut zu verstehen sein.

Im Rahmen der Sendung sprechen wir über die Datei /proc/self/maps. Unten finden ihr eine Beispielausgabe mit dem Befehl less. Ich habe die Speicheradressen mal in Rot eingefärbt. Das Feld rechts daneben sind die angesprochenen Zugriffsrechte.

00400000-00421000 r-xp 00000000 fe:01 58740                              /bin/less
00620000-00621000 r--p 00020000 fe:01 58740                              /bin/less
00621000-00625000 rw-p 00021000 fe:01 58740                              /bin/less
00625000-0062a000 rw-p 00000000 00:00 0 
01531000-01552000 rw-p 00000000 00:00 0                                  [heap]
7f1d90aa8000-7f1d90c28000 r-xp 00000000 fe:01 60787                      /lib/x86_64-linux-gnu/libc-2.13.so
7f1d90c28000-7f1d90e28000 ---p 00180000 fe:01 60787                      /lib/x86_64-linux-gnu/libc-2.13.so
7f1d90e28000-7f1d90e2c000 r--p 00180000 fe:01 60787                      /lib/x86_64-linux-gnu/libc-2.13.so
7f1d90e2c000-7f1d90e2d000 rw-p 00184000 fe:01 60787                      /lib/x86_64-linux-gnu/libc-2.13.so
7f1d90e2d000-7f1d90e32000 rw-p 00000000 00:00 0 
7f1d90e32000-7f1d90e57000 r-xp 00000000 fe:01 14369                      /lib/x86_64-linux-gnu/libtinfo.so.5.9
7f1d90e57000-7f1d91056000 ---p 00025000 fe:01 14369                      /lib/x86_64-linux-gnu/libtinfo.so.5.9
7f1d91056000-7f1d9105a000 r--p 00024000 fe:01 14369                      /lib/x86_64-linux-gnu/libtinfo.so.5.9
7f1d9105a000-7f1d9105b000 rw-p 00028000 fe:01 14369                      /lib/x86_64-linux-gnu/libtinfo.so.5.9
7f1d9105b000-7f1d9107b000 r-xp 00000000 fe:01 60790                      /lib/x86_64-linux-gnu/ld-2.13.so
7f1d910e8000-7f1d9125f000 r--p 00000000 fe:02 388520                     /usr/lib/locale/locale-archive
7f1d9125f000-7f1d91262000 rw-p 00000000 00:00 0 
7f1d91278000-7f1d9127a000 rw-p 00000000 00:00 0 
7f1d9127a000-7f1d9127b000 r--p 0001f000 fe:01 60790                      /lib/x86_64-linux-gnu/ld-2.13.so
7f1d9127b000-7f1d9127c000 rw-p 00020000 fe:01 60790                      /lib/x86_64-linux-gnu/ld-2.13.so
7f1d9127c000-7f1d9127d000 rw-p 00000000 00:00 0 
7fff5c705000-7fff5c726000 rw-p 00000000 00:00 0                          [stack]
7fff5c7ff000-7fff5c800000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Download und Anhören

Musik

Wir waren bei der Sendung so in unser Gespräch vertieft, dass wir keine Musik spielten. Jedoch würde wahrscheinlich das Lied »Buffer Overflow« von Under The Hat ganz gut passen. :-)

Shownotes

Continue reading "DK19: Der gemeine Buffer Overflow"
tweetbackcheck