Sec-08-Vulnerabilities and Exploits Flashcards

1
Q

(Grundlegende Begriffe)

Was ist eine Sicherheitslücke (Vulnerability)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

(Grundlegende Begriffe)

Was ist ein Exploit?

A

Ein Exploit ist ein Programm oder ein Skript, das eine Sicherheitslücke ausnutzt, um das Verhalten eines Systems zu manipulieren oder zu kontrollieren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche sind die Hauptursachen für Sicherheitslücken?

A

Sicherheitslücken entstehen durch Fehler im Systemdesign, Implementierungsfehler, Fehlkonfigurationen oder unsachgemäße Nutzung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie kann man Sicherheitslücken vermeiden?

A

Durch sicheres Software-Design, bewusste Implementierung und sorgfältigen Betrieb kann man Sicherheitslücken reduzieren. Auch die Nutzung sicherer Programmierpraktiken ist wichtig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind Stack- und Heap-Speicher ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein Buffer Overflow?

A

Ein Buffer Overflow tritt auf, wenn ein Programm mehr Daten in einen Speicherbereich schreibt, als vorgesehen ist, und dadurch benachbarte Daten oder Programmcode überschreibt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist der Unterschied zwischen einem Softwarefehler (Bug) und einer Sicherheitslücke (Vulnerability)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Warum können sichere Systeme teuer sein?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

***Wie kann die Vermischung von Kontrollstrukturen und Daten ein Sicherheitsproblem verursachen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welche Speichersegmente gibt es in einem Prozess und wofür werden sie verwendet?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie funktioniert der Stack in einem Programm?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie kann ein Stack Overflow ausgenutzt werden?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist ein Heap Overflow und wie unterscheidet er sich von einem Stack Overflow?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Arten von Exploits gibt es?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind die typischen Phasen eines Exploits?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Warum ist ein Zero-Day-Exploit besonders gefährlich?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Welche dynamischen Maßnahmen gibt es gegen Speicherangriffe?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Warum reicht es nicht, nur Antivirensoftware zu verwenden?

A

Antivirensoftware kann nur bekannte Bedrohungen erkennen. Zero-Day-Exploits oder gezielte Angriffe können oft unentdeckt bleiben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Welche Phasen gibt es im Lebenszyklus einer Sicherheitslücke?

A

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.

20
Q

Was ist eine Zero-Day-Schwachstelle?

A

***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.

21
Q

Warum ist die Disclosure-Phase kritisch?

A

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.

22
Q

Execution-(Ausführung) of a program:
a) Different memory segments for…..

b) Special regions for dynamic data:

A

a)……code, static data and dynamic data.

b)Stack segment (LIFO access)
Heap segment (random access)

23
Q

Was ist eine SQL-Injection?

A

Bei einer SQL-Injection führt ein Angreifer manipulierte SQL-Befehle in eine Datenbankanfrage ein, um Daten auszulesen, zu ändern oder zu löschen.

24
Q

Remote File Inclusion (RFI)?

A

RFI ermöglicht es einem Angreifer, fremde Skripte oder Dateien in eine Webanwendung einzubinden, indem er ungesicherte Datei-Uploads oder unsichere URL-Parameter ausnutzt.

25
Q

a) Static measures against overflow attacks?
b)Dynamic measures against overflow attacks?

A

a)Replacement of insecure functions.
Boundary checks at compile-time.
b)Boundary checks at run-time
Shadowing of metadata
Access control of memory segments
Randomization of memory layout

26
Q

Was ist eine Race Condition?

A

Eine Race Condition tritt auf, wenn mehrere Prozesse gleichzeitig auf eine Ressource zugreifen und das Ergebnis vom Timing der Prozesse abhängt. Angreifer können dies ausnutzen, um unerwartete Ergebnisse oder Manipulationen zu verursachen.

27
Q

Was ist ein Broken Authentication Exploit?

A

Eine Sicherheitslücke in der Authentifizierung, die es Angreifern ermöglicht, sich als ein anderer Nutzer auszugeben oder Zugang zu geschützten Bereichen zu erhalten.

28
Q

Was ist ein Privilege Escalation Exploit?

A

Ein Exploit, der es einem Angreifer ermöglicht, seine Rechte von einem normalen Nutzer zu einem Administrator oder Root-Benutzer zu erhöhen.

29
Q

Was ist Session Hijacking?

A

Session Hijacking bedeutet, dass ein Angreifer eine bestehende Benutzer-Session übernimmt, um sich als dieser Nutzer auszugeben.

30
Q

Was ist ein Buffer Overflow?

A

Ein Buffer Overflow tritt auf, wenn ein Programm mehr Daten in einen Puffer schreibt, als dafür vorgesehen sind. Dadurch können benachbarte Speicherbereiche überschrieben werden, was zu unerwartetem Verhalten oder Sicherheitslücken führen kann​.

31
Q

Warum sind Buffer Overflows gefährlich?

A

Sie können dazu führen, dass Programme abstürzen.

Sie können sensible Daten auslesen (z. B. Passwörter oder geheime Schlüssel).

Sie ermöglichen es Angreifern, den Kontrollfluss des Programms zu ändern und eigenen Code auszuführen.

32
Q

Welche Speicherbereiche sind von Buffer Overflows betroffen?

A

Stack: Wenn ein lokales Array oder eine lokale Variable überschrieben wird.

Heap: Wenn ein dynamisch allokierter Speicherbereich (z. B. mit malloc() in C) überschrieben wird​.

33
Q

Was ist ein Stack Overflow?

A

Ein Stack Overflow tritt auf, wenn eine Funktion zu viele Daten auf den Stack schreibt und dadurch benachbarte Speicherbereiche überschreibt. Besonders gefährlich ist das Überschreiben der Rücksprungadresse (Return Address), da dadurch der Programmfluss manipuliert werden kann​.

34
Q

Wie kann ein Heap Overflow ausgenutzt werden?

A

Ein Heap Overflow tritt auf, wenn ein Angreifer mehr Daten in einen dynamischen Speicherbereich schreibt, als vorgesehen ist. Dadurch können Metadaten des Heaps überschrieben werden, was zu fehlerhaftem Verhalten oder Codeausführung führen kann​.

35
Q

Warum sind unsichere C-Funktionen wie gets() oder strcpy() problematisch?

A

Diese Funktionen überprüfen nicht die Länge der Eingabe und können dazu führen, dass ein Puffer überlaufen wird, wenn zu viele Daten geschrieben werden​.

36
Q

Was passiert, wenn eine lokale Variable durch einen Buffer Overflow überschrieben wird?

A

Ein Angreifer kann eine Variable überschreiben, die z. B. für eine Authentifizierung genutzt wird. Beispiel:

char passwort[10];
int authentifiziert = 0;
strcpy(passwort, eingabe); // Ohne Längenprüfung!
if (strcmp(passwort, “geheim”) == 0) {
authentifiziert = 1;
}
if (authentifiziert) {
printf(“Erfolgreich eingeloggt!\n”);
}

Wenn ein Angreifer AAAAAAAAAAAA1 als Eingabe gibt, überschreibt er die Variable authentifiziert mit einem Wert ≠ 0 und bekommt Zugriff​.

37
Q

Wie kann ein Angreifer eine Return-Adresse manipulieren?

A

Ein Angreifer kann mit einem gezielten Overflow die Rücksprungadresse einer Funktion überschreiben, sodass das Programm an eine andere Stelle springt – z. B. zu schädlichem Code, den der Angreifer eingeschleust hat​.

38
Q

Was ist ein NOP-Sled und warum wird er bei Exploits genutzt?

A

Ein NOP-Sled ist eine lange Sequenz von NOP-Befehlen (0x90 bei x86-Prozessoren), die nichts tun. Angreifer nutzen diesen Trick, damit ihr schädlicher Code zuverlässig ausgeführt wird, selbst wenn sie die genaue Adresse nicht kennen​.

39
Q

Was ist ASLR (Address Space Layout Randomization)?

A

ASLR verändert zufällig die Speicheradressen von Programmbereichen, sodass Angreifer die Position von schädlichem Code nicht mehr zuverlässig vorhersagen können​.

40
Q

Wie funktionieren Stack Canaries als Schutzmechanismus?

A

Ein Stack Canary ist eine spezielle Zufallszahl, die vor einer Rücksprungadresse gespeichert wird. Wenn ein Overflow den Canary überschreibt, erkennt das Programm dies und beendet sich​.

41
Q

Warum hilft DEP (Data Execution Prevention) gegen Buffer Overflows?

A

DEP verhindert die Ausführung von Code in Speicherbereichen, die nur für Daten gedacht sind (z. B. Stack oder Heap). Dadurch können Angreifer keinen eigenen Code ausführen​.

42
Q

Was ist Return-Oriented Programming (ROP)?

A

ROP ist eine Technik, um trotz DEP und ASLR schädlichen Code auszuführen. Statt neuen Code einzuschleusen, setzt der Angreifer existierenden Code aus dem Speicherstückweise zusammen​.

43
Q

Some Vulnerability (Sicherheitslücke) Types

A

Fun with Memory:

Stack Overflow
Heap Overflow
Integer Overflow

Fun with Concurrency (Parallelität/ Gleichzeitigkeit):

Deadlocks
Race Conditions
Livelocks

Fun with Validation (Validierung):

Cross-site Scripting
SQL Injection
Remote File Inclusion

44
Q

Was ist Memory Leak (Speicherleckage) ?

A

Wenn man vergisst, die Speicher zu deallozieren, tritt die Speicherleckage auf.

45
Q

Canary safeguard:

A

Schutzwert, der in jedem Stapelrahmen gespeichert wird.

Wert vor RET und BP positioniert.

Vergleich am Epilog der Funktion.

Manipulation des Wertes bricht Programm ab.

***Canary Safeguards sind spezielle, in einem System platzierte “Fallen” wie etwa Dateien, Logs oder Tokens, die normalerweise nicht genutzt werden. Wird auf sie zugegriffen – etwa durch einen Angreifer –, löst dies sofort einen Alarm aus und benachrichtigt die Administratoren. So kann ein unbefugter Zugriff frühzeitig erkannt und entsprechende Gegenmaßnahmen ergriffen werden.