What's the stack-smashing protector?
- gcc 3.4.4 support (22 August, 2005)
- eliminate the protection instrument from the function that defines buffers, but doesn't use them.
- fix buffer address corruptions in the case where multiple sub-blocks have buffers.
- gcc 4.1 stage2 incorporates "Reimplementation of IBM Pro Police Stack Detector." (17 July, 2005)
- cansecwest/core05 (3 May, 2005)
- add the section "compiler-based stack protection systems based on the "ideal stack layout" in Protected systems and Links
- Microsoft /Gs option generates the stack frame based on the "ideal stack layout" as the default.
- pacsec.jp/core04 presentation (12 November, 2004)
- Design goal:
- Safe Stack Usage Model is redefined. It is a combination of an "ideal stack layout" and a way to check the stack integrity.
- SSP Transforms a program to meet the "ideal stack layout" as much as possible.
- moves old news to Change Log page
It is a GCC (Gnu Compiler Collection)
extension for protecting applications from stack-smashing
attacks. Applications written in C will be protected by the method that
automatically inserts protection code into an application at compilation time.
The protection is realized by buffer overflow detection and the variable
reordering feature to avoid the corruption of pointers. The basic idea of
buffer overflow detection comes from StackGuard system.
The novel features are (1) the reordering of local variables to place buffers
after pointers to avoid the corruption of pointers that could be used to
further corrupt arbitrary memory locations, (2) the copying of pointers in
function arguments to an area preceding local variable buffers to prevent the
corruption of pointers that could be used to further corrupt arbitrary memory
locations, and the (3) omission of instrumentation code from some functions to
decrease the performance overhead.
It implemented as an intermediate language translator of GCC.