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
- Krautspace
- Chemnitzer Linux-Tage 2013
- Linux Professional Institute
- WP: Linux Professional Institute
- LPIC bei den Chemnitzer Linux-Tagen
- WP: SOAP
- The Web Service namespace is set to tempuri.org when you publish a Windows Workflow Foundation workflow as a Web service
- WP: tempuri
- Lichtbildarena
- Workspace »Free your Android«
- Android-Workshop bei der FSFE
- Phrack
- Phrack 49: Smashing The Stack For Fun And Profit
- Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux
- How to write Buffer Overflows von Mudge
- L0pht Heavy Industries
- WP: L0pht
- WP: L0phtCrack
- L0phtCrack
- WP: Peiter ‘mudge’ Zatko
- Reddit IAmA mit Mudge
- WP: Cyber Insider Threat
- WP: Cult of the Dead Cow
- WP: Richard Clarke
- Damn Vulnerable Web Application
- Google Gruyere
- Damn Vulnerable Linux
- WP: Robert T. Morris
- WP: Morris worm
- WP: SQL Slammer
- The inside story of SQL Slammer
- WP: Stapelspeicher (Stack)
- WP: C String handling
- WP: Schutzverletzung (segmentation fault)
- StackOverflow: What is a segmentation fault?
- WP: Return into libc
- WP: Return Oriented Programming
- WP: Quine
- Somersaulting camel
- WP: assert.h
- WP: Shellcode
- Datenbank von Shellcodes
- WP: Buffer Overflow Protection
- Kanarienvögel im Bergbau
- WP: Bounds Checking
- WP: Address Space Layout Randomisation (ASLR)
- WP: Heap Spraying
- WP: NX-Bit
Comments
Display comments as Linear | Threaded