TRL
TOP PAGETokyo Research LaboratoryEmploymentProjectsRelated InformationIBM Research
Japanese page is not available yet.

GCC extension for protecting applications from stack-smashing attacks



What's new
  • 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
What's the stack-smashing protector?

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.

Implementation

It implemented as an intermediate language translator of GCC.

More... Contact

Research home IBM home Order Privacy Legal Contact IBM
Last modified August 22, 2005