diff --git a/index.html b/index.html index 7a8788e..1705065 100644 --- a/index.html +++ b/index.html @@ -152,7 +152,7 @@ C is full of holes, let's get to know one. Old skool, so no OS or hardware protections. Which today is mostly relevant in IoT. (Remember, the `S` in `IoT` stands for Security.) -Stack smashing is making use of a buffer overflow vulnerability in code using variables on the stack. This type of vulenrability has been known for a long time. This attack was first properly documented in Phrack #49. +Stack smashing is making use of a buffer overflow vulnerability in code using variables on the stack. This type of vulnerability has been known for a long time. This attack was first properly documented in Phrack #49. .footnote[Phrack #49(http://www.phrack.org/issues/49/14.html#article)] ] @@ -355,6 +355,23 @@ Binary here: https://wizeazz.nl/smash/code/demo ] --- template: inverse +# Protections +--- +.left-column[ +## Protections +] +.right-column[ +- Stack canaries
+ Place a value before the return address and check if it's been changed before returning from a function. +- Nonexecutable stack
+ W^X (write or execute) won't execute code on the stack (but will still follow return addresses). +- Randomization
+ Change function and stack addresses around so whenever a program is executed the locations are different. + +All these can be worked around given the right conditions. They just make things annoying, euh, harder. +] +--- +template: inverse # DIY --- .left-column[