Dit is de samenvatting van het achtste hoofdstuk van het vak Structuur van Computerprogramma's II. In deze samenvatting werd zowel alle relevante informatie uit de slides als informatie uit eigen notities opgenomen.
Hoofdstuk 5b: Execution Model
1 Recall: Programs in Memory
• C programs can manipulate memory directly
o Advantages: efficiency
o Disadvantages: easy to violate data abstractions
2 Memory Errors
• Since C provides arbitrary access to memory, it can suffer
from different types of memory errors:
o dynamic memory errors (cf. chapter 3b):
▪ dangling pointer, invalid free, null pointer
accesses
o array bounds errors:
▪ buffer overflows (copying data into a
buffer without doing bounds checking can
corrupt the content of adjacent memory locations)
o out-of-memory errors:
▪ stack exhaustion (a program runs out of stack space due to e.g. too deep
recursion)
Those errors may be simple programming oversights, but they can cause security vulnerabilities as
they can be used by attackers for malicious ends.
• Unrestricted manual memory management is unsafe.
3 Memory safety
1
, 4 Stack Overflows
4.1 Buffer Overflows
putting m bytes into a buffer of size n, if m > n the surrounding memory is corrupted
• Still one of the most common vulnerabilities exploited
• Affects any function that copies input to memory without doing bounds checking
o Stack overflows
o Heap overflows
• Easy fix: check size of data before/when writing
• Nowadays Modern OSs include provision to avoid buffer overflow exploits
o randomizing the layout of memory
o leaving space between buffers
o looking for actions that write into “canaries” (values placed between buffer and
control area on the stack)
4.2 Stack Overflows
• First documented as a security threat in 1972
• First documented exploitation in 1988 used by the Morris worm to propagate over the
Internet
• Became widely known in 1996 through the influential article “Smashing the stack for fun and
profit” by Elias Levy (known as Aleph One)
• Since then popular used by Internet worms like Code Red (2001), SQL Slammer (2003),
Conficker (2008)
4.2.1 Stack Overflows Exploits
• Overwriting a local variable that is located near the vulnerable buffer on the stack.
• Overwriting the return address in a stack frame to point back into the stack, somewhere
before the attack code.
• Overwriting a function pointer.
• Overwriting a local variable or pointer of a different stack frame (which will be used by the
function which owns the frame later).
• Local variables are put close together on the stack.
o If a write goes beyond the size of one variable, it can corrupt another one.
2
Voordelen van het kopen van samenvattingen bij Stuvia op een rij:
√ Verzekerd van kwaliteit door reviews
Stuvia-klanten hebben meer dan 700.000 samenvattingen beoordeeld. Zo weet je zeker dat je de beste documenten koopt!
Snel en makkelijk kopen
Je betaalt supersnel en eenmalig met iDeal, Bancontact of creditcard voor de samenvatting. Zonder lidmaatschap.
Focus op de essentie
Samenvattingen worden geschreven voor en door anderen. Daarom zijn de samenvattingen altijd betrouwbaar en actueel. Zo kom je snel tot de kern!
Veelgestelde vragen
Wat krijg ik als ik dit document koop?
Je krijgt een PDF, die direct beschikbaar is na je aankoop. Het gekochte document is altijd, overal en oneindig toegankelijk via je profiel.
Tevredenheidsgarantie: hoe werkt dat?
Onze tevredenheidsgarantie zorgt ervoor dat je altijd een studiedocument vindt dat goed bij je past. Je vult een formulier in en onze klantenservice regelt de rest.
Van wie koop ik deze samenvatting?
Stuvia is een marktplaats, je koop dit document dus niet van ons, maar van verkoper lennyS. Stuvia faciliteert de betaling aan de verkoper.
Zit ik meteen vast aan een abonnement?
Nee, je koopt alleen deze samenvatting voor €3,48. Je zit daarna nergens aan vast.