Return into libc

Return into libc

Return into libc (auch return-to-libc) ist eine Methode zur Attacke von Computersystemen, um entweder Schaden anzurichten (z. B. bei einer Denial of Service-Attacke) oder um den Host (Server) zur Ausführung unerwünschter Programme zu missbrauchen.

Grundprinzip

Computerprogramme verwenden einen speziellen Speicherbereich, den sogenannten Stack, um Variablen und Rücksprungadressen (engl. return address) aus Unterprogrammen zu verwalten. Wird der Stack nun so manipuliert, dass er statt der erwarteten Rücksprungadresse die Adresse einer anderen Funktion enthält, kann diese Funktion benutzt werden, um die gewünschten schädlichen Funktionen auszuführen. Die „libc“ ist eine Sammlung von Funktionen, die die Programmiersprache C zur Verfügung stellt. Damit muss also keine neue Funktion in das laufende System gebracht werden, so wie dies bei Shellcode Exploits üblicherweise notwendig ist. In dieser Sammlung befindet sich z. B. eine populäre Funktion „system()“, welche die Ausführung beliebiger Systemprogramme ermöglicht. Sie benötigt dabei nur einen Parameter, die des auszuführenden Kommandos.

Die Manipulation des Stacks wird typischerweise durch einen Buffer Overflow hervorgerufen. Dabei wird eine Variable, die nur eine bestimmte Anzahl von Zeichen aufnehmen kann, mit einer längeren, genau ermittelten, Zeichenkette belegt, die auf dem Stack dann die hinter der Variablen liegende Rücksprungadresse überschreibt. Ebenso werden die gewünschten Argumente für die (libc-)Funktion auf den Stack geschrieben, zum Beispiel die Adresse einer Zeichenkette.

Variablen können unter anderem dann einen solchen Überlauf erzeugen, wenn sie z. B. in einer Web-Adresse als Parameter übergeben werden können und diese etwa an ein CGI-Programm übergeben werden. Zwingende Voraussetzung für eine solche Attacke ist jedoch ein anfälliges Programm, das – entgegen üblicher Programmiertechniken – die Länge von Eingabevariablen nicht prüft.

Schutzmöglichkeiten

Ein mittels NX-Bit geschützter nicht-ausführbarer Stack kann zwar der Einschleusung von Schadcode durch Code Injection vorbeugen, eine Return-to-libc Attacke kann jedoch trotzdem durchgeführt werden, da hierbei bereits existenter Code aufgerufen wird. Eine Abwehrmöglichkeit solcher Attacken kann auf 64-bit Systemen durch ASLR erreicht werden. Dabei werden die Speicheradressen der System-Funktionen zufällig erteilt, ein genauer Rücksprung auf diese Funktionen wird dabei also unwahrscheinlich. Stack-Schutzmechanismen wie der Stack Smashing Protector können weitere Angriffe aufdecken oder verhindern.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Return-to-libc attack — Une attaque de type return to libc est une attaque informatique démarrant généralement par un dépassement de tampon dans lequel l adresse de retour dans la pile est remplacée par l adresse d une autre fonction et une seconde partie de la pile est …   Wikipédia en Français

  • Return-to-libc attack — A return to libc attack is a computer security attack usually starting with a buffer overflow in which the return statement on the stack is replaced by the address of another instruction and an additional portion of the stack is overwritten to… …   Wikipedia

  • Return Oriented Programming — (ROP) ist eine Technik in Computer Schadprogrammen zur Ausnutzung einer Sicherheitslücke, bei der der Angreifer den Aufrufstack so manipuliert, dass nach dem nächsten Rücksprungbefehl indirekt ausgesuchter Maschinencode ausgeführt wird.[1][2]… …   Deutsch Wikipedia

  • Shellcode — ist ein Begriff aus der Software Programmierung und bezeichnet die in Opcodes umgewandelte Form von Assemblersprachenbefehlen, die einen oder mehrere bestimmte Befehle ausführen soll. In der Regel wird eine Shell gestartet, daher auch der Name.… …   Deutsch Wikipedia

  • Data Execution Prevention — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

  • Datenausführungsverhinderung — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

  • Enhanced Virus Protection — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

  • Execute-Disable-Bit — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

  • NX-Speicherschutz — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

  • XD-Bit — Das NX Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86 Markt einführte. Die Technik wird von AMD als „Enhanced Virus… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”