07-Attack Vectors V
07-Attack Vectors V
Attack Vectors
Mathias Payer
Relates to the capacity of the Aims to overload or crash the Typically involves a number of valid
network links connecting a network handling software requests, each of which consumes
server to the Internet significant resources, thus limiting
the ability of the server to respond to
requests from other users
Figure 5.2: The attack flow of memory corruption-based attacks. ‘C’ conforms to Code, ‘D’ to Data; ‘&’ marks
an address-of operator; ‘*’ marks a dereference operator. The attack path needs to bypass defenses at
different levels of abstraction: integrity, confidentiality, and flow integrity.
Figure 1:
Mathias Payer CS412 Software Security
Memory Safety and Type Safety Violations
Code execution
Code Injection: inject new code into the process
Code Reuse: reuse existing code in the process
Control-Flow Hijacking: redirect control-flow to alternate targets
Data Corruption: corrupt sensitive (privileged or important) data
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
foo(argv[1]);
printf("\nReturned safely\n");
return 0;
}
Figure 2:
Mathias Payer CS412 Software Security
Type confusion attacks
Control two pointers of different types to single memory area
Different interpretation of fields leads to “opportunities”
Reading assignment: P0 Type Confusion Microsoft Type Confusion