Left Up Right Sicherheit

Sicherheitslücken

Es ist wichtig, die typischen Fallen zu kennen, um sie zu vermeiden

CWE Common Weekness Enumeration listet typische Schwachstellen auf - jeder CVE sind ein oder mehrere CWE zugeordnet.

Bufferoverflow - CWE121

ein Bufferoverflow tritt dann auf, wenn in der Programmiersprache C/C++, die Grösse eines Speicherbereichs nicht überprüft wird.(Vor dem Internet und vor der Mailboxzeit dachte man nicht, dass jemand bewusst so ein Merkmal ausnutzen kann).

Aleph One: "Smashing The Stack For Fun And Profit"
- ein klassisch gewordenes Tutorial
Chaosradio: Understanding buffer overflow exploitation 2005
Wikipedia

Gegenmaßnahmen

Vermeidung von alten libc-Funktionen

Folgende Funktionen aus der libc sollte man nicht mehr verwenden:

Diese sollten aus der libc entfernt werden, bzw. mit Codecheckern gejagt werden! (vgl. Fehlersuchtechniken)

Stackprotection des Compilers

der gcc hat (ab Version 4.2) eine Option -fstack-protector. (siehe GCC instrumentation Options). Nach jedem Rücksprung wird ein "canary value" eingeführt. Wenn dieses überschreiben wird, wird eine Ausnahme (z.b. kernelpanic ausgelöst)
siehe auch Stack Smashing Protector, erfunden von IBM

siehe auch Buffer overflow Protection

Data Execution Prevention DEP/NX

Der virtuelle Speicher (MMU) kann die Ausführung von Code sperren - en. Wikipedia über NX bit (vgl. mprotect(2) für Speichersegmente). Segmente, in denen Code nichts zu suchen hat, wie Stacksegment, und bewusste Datensegmente können so für die Codeausführung gesperrt werden.

Nach [RPO] macht dies MS Vista.
(Vorsicht: Java umging diese Sicherheit, indem es diesen Mechanismus ausschaltet, daher kann trotzdem Schadcode ausgeführt werden, der dann andere Bufferoverflows sucht - aus dem eigenen System heraus. [RPO])

In Linux macht das Exec_Shield. Ein Problem ist, dass nur neuere Prozessoren das NX bit unterstützen.

Executable Space Protection ist das selbe wie DEP

StackGhost: Hardware Facilitated Stack Protection beschreibt Stackprotection auf SPARC-Prozessoren und anderen.

Addresspace Layout Randomisation ASLR

Code, Stack, DLLs werden an einen zufälligen Platz gelegt, damit die Bufferoverflows nicht statisch bekannt sind. [RPO]

In Linux ist das eingeschaltet, man kann es explizit für Experimente ausschalten: In /proc/sys/kernel/randomize_va_space kann man ASLR an und ausschalten, voreingestellt ist 2=eingeschaltet, siehe auch Linux and ASLR: kernel/randomize_va_space.

Cracker machen dann Spaying: Test mehrerer Adressen - dies führt dann aber zu auffälligen Signaturen

[RPO] Heise: "Die Rückkehr der Pufferüberläufe"

SQL-/Shell-Injektion

Oftmals bauen WWW-Seiten auf Datenbanken auf. Gibt man Metazeichen im Eingabeformular ein, so kann man die SQL-Anweisung modifizieren und mehr Informationen herauslesen oder gar modifizieren ...

Daher muss beim Programmieren die Eingabe auf solche Metazeichen überprüft werden ! (z.B mit regulären Ausdrücken.)

DVWA Damn Vulnerable Web Application ist ein Beispiel, um die Gefahren zu verstehen und zu lernen, Fehler nicht zu machen.

Links

Secure Coding des Cert

XSS Cross side scripting

XSS Filter Evasion Cheat Sheet

Neue Kanäle

Neue Kanäle können auch zur Erlangung von Privilegien genutzt werden, die man sonst nicht hat:

Attacke per Sprachsteuerung auf Smartphones und PCs - heise online 13.11.2014
Ein Smartphone weiss über die Sensoren, wann der Nutzer weg ist. Ein Schadprogramm steuert das Smartphone, in dem es über die Sprachausgabe die Spracherkennung ansteuert. So bekommt das Schadprogramm die Privilegien der Sprachsteuertung.

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber