ProPolice/SSP in 7.0

Mike Silbersack silby at silby.com
Fri Dec 28 18:47:05 PST 2007


On Fri, 28 Dec 2007, Gunther Mayer wrote:

> Btw, I second the motion of having SSP enabled by default in FreeBSD, other 
> OS's have been doing this for years at a negligible performance overhead.
>
> Gunther

It's too late to make that sort of change for FreeBSD 7.0, but I think 
that's a good goal for FreeBSD 8.0.

Here's what I think you could do:

1.  Verify that enabling SSP works properly.
2.  Convince Kris Kennaway to run his mysql benchmarks on a FreeBSD 8 
system both with and without SSP to verify that there is no significant 
slowdown.
3.  Get it enabled on FreeBSD 8 by default.
4.  Request that the change be made to FreeBSD 7.1 or 7.2 after it has 
proven to not cause problems on FreeBSD 8.

Since the subject came up, I just tried using it, and it's not giving me 
the results I expected.  Take the following program:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void overrun(void);

int main(void)
{
overrun();
}

void overrun(void)
{
int x;
char a[4];
int y;

strcpy(a, "ABCDE");
printf("hi");
}

If I compile it like so:
> cc -g -fstack-protector-all overrun.c

The overrun is detected and the program is aborted.
> ./a.out
Abort (core dumped)

But if I compile it like so:
> cc -g -fstack-protector overrun.c

The overrun is not caught.
> ./a.out
hi>

Either I'm doing something wrong, or we have gcc misconfigured and it's 
not detecting that strcpy is a function which needs to be watched 
closedly.

Mike "Silby" Silbersack


More information about the freebsd-security mailing list