Date: Sun, 30 Dec 2007 14:26:11 +0100 From: Jeremie Le Hen <jeremie@le-hen.org> To: Mike Silbersack <silby@silby.com> Cc: Gunther Mayer <gunther.mayer@googlemail.com>, freebsd-security@freebsd.org Subject: Re: ProPolice/SSP in 7.0 Message-ID: <20071230132611.GD10467@obiwan.tataz.chchile.org> In-Reply-To: <20071228200428.J6052@odysseus.silby.com> References: <477277FF.30504@googlemail.com> <86myrvhht9.fsf@ds4.des.no> <20071227195833.154b41ae@kan.dnsalias.net> <4774EB0F.90103@googlemail.com> <20071228200428.J6052@odysseus.silby.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi,
On Fri, Dec 28, 2007 at 08:20:20PM -0600, Mike Silbersack wrote:
> 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.
Actually, you did nothing wrong. Except maybe not wasting time to look
at GCC info page ;).
% `-fstack-protector'
% Emit extra code to check for buffer overflows, such as stack
% smashing attacks. This is done by adding a guard variable to
% functions with vulnerable objects. This includes functions that
% call alloca, and functions with buffers larger than 8 bytes. The
% guards are initialized when a function is entered and then checked
% when the function exits. If a guard check fails, an error message
% is printed and the program exits.
I believed it was possible to customize this threshold (I'm pretty sure
I've already seen such an option in some patch floating around GCC
community) but a quick glance a the source shows it is not possible
actually.
Regards,
--
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071230132611.GD10467>
