oss-sec mailing list archives

Re: Re: Qualys Security Advisor -- The Stack Clash


From: Daniel Micay <danielmicay () gmail com>
Date: Thu, 22 Jun 2017 01:39:46 -0400

On Wed, 2017-06-21 at 11:33 -0600, Jeff Law wrote:
On 06/20/2017 12:44 AM, Daniel Micay wrote:

I think it's also worth mentioning the segmented stack support in
GCC
and LLVM that was added for Go. It's possible to use it for C with
the
__morestack call set up to simply abort when stack space is
exhausted.

That's what Rust was doing after it dropped segmented stacks, but
they
wanted to move to stack probes for efficiency and prematurely
dropped
these function prelude checks.

It's not efficient, but it works, unlike -fstack-check.

I don't think it makes sense for general purpose distributions to
adopt
it but it's an available option for others with more concern about
this
issue.

Yup.  go's split-stacks are another option.  As you mention, probably
not performant enough for a general purpose distribution, but could be
interesting for more specialized needs.

jeff

It can be used with large fixed size stacks and no actual expansion, but
yeah it's expensive to add a check to every non-leaf prelude. It's not
as expensive as the SSP check for a function but it needs to cover many.

Since probes can be so much more efficient, it only makes sense to
consider it if getting probes fully working is going to take a long
time.


Current thread: