Control Flow Integrity (CFI) and Java Security: Concepts and Mechanisms

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/26

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

27 Terms

1
New cards

What does Control Flow Integrity (CFI) enforce?

CFI enforces the integrity of a program's execution flow path.

2
New cards

How can CFI detect changes in execution flow?

CFI can detect undefined changes in the path of execution by an adversary.

3
New cards

What types of attacks does CFI help mitigate?

CFI efficiently detects and mitigates buffer overflow, Return Oriented Programming (ROP), and return-to-libc attacks.

4
New cards

What is a Control Flow Graph (CFG)?

A CFG is a representation that defines the paths that may be traversed through a program during its execution.

5
New cards

How is a CFG built in CFI?

A CFG is built statically at compile time and instrumented at install time.

6
New cards

What is the purpose of ID checks in CFI?

ID checks ensure that indirect jumps have matching IDs to maintain control flow integrity.

7
New cards

What is a Basic Block in the context of CFI?

A Basic Block is a consecutive sequence of instructions where control is straight, with no jump targets except at the beginning.

8
New cards

What is a Call Graph?

A Call Graph depicts the relationships between functions, indicating which functions invoke others.

9
New cards

How does CFI monitor indirect calls?

CFI monitors indirect calls and returns because they are done through dynamic data on the stack.

10
New cards

What is an In-line Reference Monitor (IRM)?

An IRM rewrites a program by inserting instructions to check whether CFI attributes are maintained.

11
New cards

What is the challenge of labeling in CFI?

The challenge is to ensure that labels for indirect transfers are unique and correctly match expected targets.

12
New cards

What assumptions must be made for CFI to work effectively?

CFI requires unique IDs, non-writable code memory, and non-executable data.

13
New cards

What is the Java security model based on?

The Java security model is based on a customizable 'sandbox' where Java programs can run safely.

14
New cards

What is a POLICY file in Java?

A POLICY file is a configuration file used by the Java Runtime Environment to determine the granted permissions for each Java program.

15
New cards

What does the Bytecode Verifier check?

The Bytecode Verifier checks that variables are initialized, access rules are followed, and no illegal data conversions occur.

16
New cards

What is the purpose of signed applets in Java?

Signed applets contain a signature that the browser verifies through a certificate authority to ensure trust.

17
New cards

What is the role of protection domains in Java security?

Protection domains associate a code source with the permissions granted, determined by the class loader.

18
New cards

What is the significance of unique IDs in CFI?

Unique IDs prevent conflicts during ID checking, which is crucial for maintaining control flow integrity.

19
New cards

What does it mean for code memory to be non-writable in CFI?

Non-writable code memory prevents the CFI implementation code from becoming corrupted.

20
New cards

Why is it important for data to be non-executable in CFI?

Non-executable data prevents attackers from adding executable malicious code to the data portion.

21
New cards

What is the challenge of defining 'expected behavior' in behavior-based detection?

The challenge lies in accurately defining what constitutes 'expected behavior' for a program.

22
New cards

What is the purpose of monitoring indirect calls and returns in CFI?

Monitoring is necessary because indirect calls and returns can be altered through dynamic data on the stack.

23
New cards

How can CFI be compromised?

CFI can be compromised if the detector itself is not secure or if the randomness of secrets is insufficient.

24
New cards

What is the consequence of a return address being overridden in CFI?

If a return address is overridden, it may redirect execution to unintended locations, potentially leading to security breaches.

25
New cards

What is the role of randomness in CFI?

Randomness is used to ensure that labels and secrets maintain unpredictability, enhancing security.

26
New cards

What happens if the expected label does not match in CFI?

If the expected label does not match, the program will abort to prevent unauthorized execution.

27
New cards

What is the significance of the Java Development Kit (JDK) 1.0 sandbox?

The JDK 1.0 sandbox allows trusted code unrestricted access while limiting untrusted code to specific operations.