Originally posted by: n0cmonkey
Linux had PaX, which does that.
Originally posted by: CTho9305
Originally posted by: n0cmonkey
Linux had PaX, which does that.
Ithought PaX used a stack canary?
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Originally posted by: CTho9305
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Non eXecutable. It lets you make parts of memory non-executable. Usually, you make the stack NX, and sometimes you make the heap NX. The simplest class of buffer overflow exploits work by putting exploit code on the stack and running it, so when your stack is NX, the program just crashes. It turns the vast majority of exploits into "denial of service" attacks, where without NX, they'd be "arbitrary code execution" attacks. With a nonexecutable stack, Code Red could never have propagated.
Originally posted by: Gobadgrs
Originally posted by: CTho9305
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Non eXecutable. It lets you make parts of memory non-executable. Usually, you make the stack NX, and sometimes you make the heap NX. The simplest class of buffer overflow exploits work by putting exploit code on the stack and running it, so when your stack is NX, the program just crashes. It turns the vast majority of exploits into "denial of service" attacks, where without NX, they'd be "arbitrary code execution" attacks. With a nonexecutable stack, Code Red could never have propagated.
So do you want to put that into plain english for the rest of us?
Originally posted by: n0cmonkey
Originally posted by: Gobadgrs
Originally posted by: CTho9305
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Non eXecutable. It lets you make parts of memory non-executable. Usually, you make the stack NX, and sometimes you make the heap NX. The simplest class of buffer overflow exploits work by putting exploit code on the stack and running it, so when your stack is NX, the program just crashes. It turns the vast majority of exploits into "denial of service" attacks, where without NX, they'd be "arbitrary code execution" attacks. With a nonexecutable stack, Code Red could never have propagated.
So do you want to put that into plain english for the rest of us?
I'm not sure how anyone can break it down anymore....
It makes it so that code in memory can't be executed. If code in the memory can't be executed, buffer over flows, the most common form of security vulnerability these days, are impossible.
Originally posted by: Gobadgrs
Originally posted by: n0cmonkey
Originally posted by: Gobadgrs
Originally posted by: CTho9305
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Non eXecutable. It lets you make parts of memory non-executable. Usually, you make the stack NX, and sometimes you make the heap NX. The simplest class of buffer overflow exploits work by putting exploit code on the stack and running it, so when your stack is NX, the program just crashes. It turns the vast majority of exploits into "denial of service" attacks, where without NX, they'd be "arbitrary code execution" attacks. With a nonexecutable stack, Code Red could never have propagated.
So do you want to put that into plain english for the rest of us?
I'm not sure how anyone can break it down anymore....
It makes it so that code in memory can't be executed. If code in the memory can't be executed, buffer over flows, the most common form of security vulnerability these days, are impossible.
Perfect
Originally posted by: CTho9305
Originally posted by: Gobadgrs
Originally posted by: n0cmonkey
Originally posted by: Gobadgrs
Originally posted by: CTho9305
Originally posted by: Gobadgrs
What is NX for us ignorant people?
Non eXecutable. It lets you make parts of memory non-executable. Usually, you make the stack NX, and sometimes you make the heap NX. The simplest class of buffer overflow exploits work by putting exploit code on the stack and running it, so when your stack is NX, the program just crashes. It turns the vast majority of exploits into "denial of service" attacks, where without NX, they'd be "arbitrary code execution" attacks. With a nonexecutable stack, Code Red could never have propagated.
So do you want to put that into plain english for the rest of us?
I'm not sure how anyone can break it down anymore....
It makes it so that code in memory can't be executed. If code in the memory can't be executed, buffer over flows, the most common form of security vulnerability these days, are impossible.
Perfect
No, buffer overflows still occur, but unless they are even-more-specially crafted, they cause the program to just crash. If they are extra-specially-crafted, you can still take advantage of many buffer overflows - it's just a little more difficult. linus's explanation of getting around NX
Originally posted by: kamper
but if I understood linus' comments there will still be very easy ways to use overflows to gain control? As in, just overwriting the return address on the stack instead of placing executable code there. How much difference will this really make?