Oliver Xymoron wrote:

> On Tue, 14 Sep 1999, Crispin Cowan wrote:
> > The result looks like this:
> >
> >             Interface                            Implementation
> >
> >  Restriction   * Firewalls                          * Bounds checking
> >                * TCP Wrappers                       * StackGuard
> >                * Randomly renaming system files
> >                * Randomly renumbering system
> >  Permutation     calls (the hack proposed here      * Randomly munging
> >                  by Maniscalco)                       data layout
> >                * Fred Cohen's Deception Toolkit
>
> You missed a couple interesting ones.

The table was intended to be a representative sample.  It would be rather large
if I included every security defense :-)


> One is randomly offsetting the
> stack.

That is the (patented :-) method that Memco uses in their SEOS product. It's
interesting that you point that out, as it too clearly illustrates my point:

   * randomly offsetting the stack is an implementation permutation, while
     StackGuard and array bounds checking are implementation restrictions
   * randomly offsetting the stack is strictly less effective:  you can
     discover the stack offset, or inject code that is insensitive to location,
     via various means.

> Another is having separate stacks for the call chain and local
> variables. Obviously wastes a register (or an indirection), but can probably
> be proved secure against stack smashing.

That's a variation on the method proposed by StackShield.  Hard to say whether
the separate stack for the call chain is a restriction or a permutation.
However, it is exactly as effective as StackGuard.  I both cases, you are
effectively prevented from corrupting the call chain.

Crispin
-----
 Crispin Cowan, Research Assistant Professor of Computer Science, OGI
    NEW:  Protect Your Linux Host with StackGuard'd Programs  :FREE
       http://www.cse.ogi.edu/DISC/projects/immunix/StackGuard/

Reply via email to