cs3235 midterm terms, questions and answers |
latest update
Save
Terms in this set (47)
Code Injection Memory exploit that hijacks control to jump to
attackers payload.
Requires:
- Write attack payload in memory
- Have attack payload be executable
- Direct control flow to payload
Code Reuse Hijacks control to jump to attacker controlled code
address.
Requires:
- Have attack payload be executable
- Direct control flow to payload
Data Oriented Attack Manipulate control data.
Requires: Nothing
, Downcasting class Base {int x};
class Derived : public Base {int y};
Base* b = new Base();
Derived d = static_cast<D>(b);
d->y = 0;
y is not in scope
Scope Region of code where a variable can be accessed.
Lifetime Portion of program execution during which storage
is guaranteed.
Use After Free Dereferencing a dangling pointer.
Memory Safety - Create memory pointers via permitted operation.
- Only access memory allocated to the pointer (in
scope)
- All objects spatially disjoint.
Spatial Safety - Associate bounds with each pointer
- Check each pointer before access
- Fat pointers
Fat Pointer | Pointer | [Start, End] |
ptr = malloc(size);
ptr_base = ptr;
ptr_bound = prt + size;
- Check bounds at each dereference
- No checks on pointer arithmetic
- Casts: copy bounds data from old pointer to new
pointer
latest update
Save
Terms in this set (47)
Code Injection Memory exploit that hijacks control to jump to
attackers payload.
Requires:
- Write attack payload in memory
- Have attack payload be executable
- Direct control flow to payload
Code Reuse Hijacks control to jump to attacker controlled code
address.
Requires:
- Have attack payload be executable
- Direct control flow to payload
Data Oriented Attack Manipulate control data.
Requires: Nothing
, Downcasting class Base {int x};
class Derived : public Base {int y};
Base* b = new Base();
Derived d = static_cast<D>(b);
d->y = 0;
y is not in scope
Scope Region of code where a variable can be accessed.
Lifetime Portion of program execution during which storage
is guaranteed.
Use After Free Dereferencing a dangling pointer.
Memory Safety - Create memory pointers via permitted operation.
- Only access memory allocated to the pointer (in
scope)
- All objects spatially disjoint.
Spatial Safety - Associate bounds with each pointer
- Check each pointer before access
- Fat pointers
Fat Pointer | Pointer | [Start, End] |
ptr = malloc(size);
ptr_base = ptr;
ptr_bound = prt + size;
- Check bounds at each dereference
- No checks on pointer arithmetic
- Casts: copy bounds data from old pointer to new
pointer