Sec-08-Vulnerabilities and Exploits Flashcards
(Grundlegende Begriffe)
Was ist eine Sicherheitslücke (Vulnerability)?
Eine Sicherheitslücke ist eine ausnutzbare Schwachstelle (exploitable flaw) in einem System oder einer Software. Sie kann die Vertraulichkeit, Integrität oder Verfügbarkeit eines Systems gefährden.
(Grundlegende Begriffe)
Was ist ein Exploit?
Ein Exploit ist ein Programm oder ein Skript, das eine Sicherheitslücke ausnutzt, um das Verhalten eines Systems zu manipulieren oder zu kontrollieren.
Welche sind die Hauptursachen für Sicherheitslücken?
Sicherheitslücken entstehen durch Fehler im Systemdesign, Implementierungsfehler, Fehlkonfigurationen oder unsachgemäße Nutzung.
Wie kann man Sicherheitslücken vermeiden?
Durch sicheres Software-Design, bewusste Implementierung und sorgfältigen Betrieb kann man Sicherheitslücken reduzieren. Auch die Nutzung sicherer Programmierpraktiken ist wichtig.
Was sind Stack- und Heap-Speicher ?
Der Stack ist ein LIFO-Speicher für temporäre Variablen und Funktionsaufrufe. Der Heap ist ein dynamischer Speicherbereich für die langfristige Speicherung von Daten.
Was ist ein Buffer Overflow?
Ein Buffer Overflow tritt auf, wenn ein Programm mehr Daten in einen Speicherbereich schreibt, als vorgesehen ist, und dadurch benachbarte Daten oder Programmcode überschreibt.
Was ist der Unterschied zwischen einem Softwarefehler (Bug) und einer Sicherheitslücke (Vulnerability)?
Ein Bug ist ein allgemeiner Programmierfehler, der die Funktionalität beeinflussen kann, aber nicht unbedingt eine Sicherheitslücke ist. Eine Sicherheitslücke hingegen ist ein Fehler, der von Angreifern ausgenutzt werden kann, um das System zu kompromittieren.
Warum können sichere Systeme teuer sein?
Weil sicheres Software-Design, sichere Implementierung und sicherer Betrieb Zeit, Expertise und Ressourcen erfordern. Viele Unternehmen investieren zuerst in Funktionalität und Marketing, bevor sie in Sicherheit investieren.
***Wie kann die Vermischung von Kontrollstrukturen und Daten ein Sicherheitsproblem verursachen?
Wenn Steuerzeichen oder Steuerbefehle in denselben Datenkanälen verarbeitet werden wie Nutzerdaten, können Angreifer durch Manipulation dieser Daten Kontrollbefehle einschleusen. Beispiele hierfür sind SQL-Injection und Cross-Site-Scripting.
Welche Speichersegmente gibt es in einem Prozess und wofür werden sie verwendet?
Code-Segment: Enthält den Programmcode.
Statische Daten: Enthält Konstanten und globale Variablen.
Stack: Speichert Funktionsaufrufe, lokale Variablen und Rücksprungadressen.
Heap: Dient zur dynamischen Speicherallokation während der Laufzeit.
Wie funktioniert der Stack in einem Programm?
Der Stack arbeitet nach dem LIFO-Prinzip (Last-In-First-Out). Beim Funktionsaufruf wird ein neuer Stack-Frame angelegt, der beim Verlassen der Funktion wieder gelöscht wird.
Wie kann ein Stack Overflow ausgenutzt werden?
Ein Angreifer kann einen Pufferüberlauf auslösen und dabei den Speicher überschreiben, um die Rücksprungadresse zu manipulieren und schädlichen Code auszuführen.
Was ist ein Heap Overflow und wie unterscheidet er sich von einem Stack Overflow?
Durch Stack Overflows werden aktuelle und vorherige Stack-Frames überschrieben und Return-Adressen, Lokale Variable manipuliert während mit Heap Overflows einen nächsten Heap-Block und seiner Metadaten überschrieben und List Pointers (keine Sprungadresse) manipuliert werden.
Welche Arten von Exploits gibt es?
Proof-of-Concept-Exploits (PoC): Dienen dazu, eine Sicherheitslücke zu demonstrieren.
Malware-Exploits: Werden von Angreifern genutzt, um Systeme zu kompromittieren.
-Usually manipulation of control flow
-Bypass of authentication and access control
Was sind die typischen Phasen eines Exploits?
Einschleusung von Code oder Daten (z. B. durch Buffer Overflow).
Manipulation des Kontrollflusses (z. B. durch Änderung der Rücksprungadresse).
Erhöhung der Privilegien oder Umgehung von Sicherheitsmechanismen.
Warum ist ein Zero-Day-Exploit besonders gefährlich?
Schwachstelle vor ihrer Offenlegung (Disclosure) bezeichnet als „Zero-Day“ .
-> Sie ist also null Tage alt, in der Hinsicht, dass sie niemand kennt. Also sie kann sehr alt sein, es kann auch schon lange einen Exploit geben, aber niemand kennt es außer denjenigen, der es gebaut hat.
-> Das heißt, es gibt hier das sogenannte Pre-Disclosure Risk, bedeutet, ich bin als Firma eventuell für Schwachstellen angreifbar, die noch nie jemand kennt, außer der Angreifer.
Welche dynamischen Maßnahmen gibt es gegen Speicherangriffe?
ASLR (Address Space Layout Randomization): Zufällige Speicheradressen, um Exploits zu erschweren.
DEP (Data Execution Prevention): Verhindert die Ausführung von Code im Datenbereich.
Stack Canaries: Schützen Return-Adressen vor Manipulation.
Warum reicht es nicht, nur Antivirensoftware zu verwenden?
Antivirensoftware kann nur bekannte Bedrohungen erkennen. Zero-Day-Exploits oder gezielte Angriffe können oft unentdeckt bleiben.
Welche Phasen gibt es im Lebenszyklus einer Sicherheitslücke?
Der Lebenszyklus besteht aus folgenden Phasen:
Creation (Erstellung): Die Sicherheitslücke entsteht durch einen Fehler im Code.
Discovery (Entdeckung): Die Lücke wird von Forschern, Hackern oder Unternehmen entdeckt.
Exploit Development (Exploit-Entwicklung): Angreifer entwickeln Methoden, um die Schwachstelle auszunutzen.
Disclosure (Offenlegung): Die Schwachstelle wird öffentlich bekannt oder an den Hersteller gemeldet.
Patch Development (Patch-Entwicklung): Der Hersteller entwickelt ein Sicherheitsupdate.
Patch Deployment (Patch-Veröffentlichung): Der Patch wird bereitgestellt und installiert.
Was ist eine Zero-Day-Schwachstelle?
***Schwachstelle vor ihrer Offenlegung als „Zero-Day“ bezeichnet.
Sie ist also null Tage alt, in der Hinsicht, dass sie niemand kennt. Also sie kann sehr alt sein, es kann auch schon lange einen Exploit geben, aber niemand kennt es außer denjenigen, der es gebaut hat.
-> in der Mitte steht der Zeitpunkt der Disclosure, der Offenlegung, und das Besondere ist, dass bis zu diesem Zeitpunkt spricht man von einem Zero Day Vulnerability oder Zero Day Schwachstelle.
Eine Zero-Day-Schwachstelle ist eine Sicherheitslücke, die noch nicht öffentlich bekannt oder gepatcht wurde. Angreifer können sie ausnutzen, bevor ein Fix verfügbar ist.
Warum ist die Disclosure-Phase kritisch?
Die Disclosure-Phase ist kritisch, weil sie bisher verborgene Schwachstellen öffentlich macht – was das Risiko eines Angriffs erhöht, wenn noch kein wirksamer Patch verfügbar ist.
Execution-(Ausführung) of a program:
a) Different memory segments for…..
b) Special regions for dynamic data:
a)……code, static data and dynamic data.
b)Stack segment (LIFO access)
Heap segment (random access)
Was ist eine SQL-Injection?
Bei einer SQL-Injection führt ein Angreifer manipulierte SQL-Befehle in eine Datenbankanfrage ein, um Daten auszulesen, zu ändern oder zu löschen.
Remote File Inclusion (RFI)?
RFI ermöglicht es einem Angreifer, fremde Skripte oder Dateien in eine Webanwendung einzubinden, indem er ungesicherte Datei-Uploads oder unsichere URL-Parameter ausnutzt.