mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Matthew Maurer <mmaurer@google.com>
To: musl@lists.openwall.com
Subject: Re: [musl] [PATCH] harden against unauthorized writes to the atexit function lists
Date: Thu, 3 Dec 2020 09:55:02 -0800	[thread overview]
Message-ID: <CAGSQo02qODoGqsfi19TSh_8u8T=fX-Np2TY=k4RH=AQZtVsZ_g@mail.gmail.com> (raw)
In-Reply-To: <20201202013707.GU534@brightrain.aerifal.cx>

[-- Attachment #1: Type: text/plain, Size: 1589 bytes --]

While we are not a supported system, I would also note that I work on a
project which *does* expect `atexit` to work properly, but does not have a
working anonymous mmap system due to how resource management works for us.

If ASLR is enabled, that should already mitigate the ability of an attacker
to write to this location. While placing these in anonymous pages would be
a further defense against cases where a pointer is leaked *and* an
arbitrary overwrite is present, this would be an argument for a more
complete form of randomization (see also pagerando,
https://lists.llvm.org/pipermail/llvm-dev/2017-June/113794.html ) rather
than trying to randomize the location of individual chunks of sensitive
data.

On Tue, Dec 1, 2020 at 5:37 PM Rich Felker <dalias@libc.org> wrote:

> On Tue, Dec 01, 2020 at 05:55:39PM -0700, Ariadne Conill wrote:
> > previously, the first atexit list block was stored in BSS, which means an
> > attacker could potentially ascertain its location and modify it, allowing
> > for its abuse as a code execution mechanism.
> >
> > by moving the atexit list into a series of anonymous mmaped pages, we can
> > use mprotect to protect the atexit lists by keeping them readonly when
> they
> > are not being mutated by the __cxa_atexit() function.
>
> This is a non-starter. atexit is specifically required by the standard
> to succeed when called no more than 32 times, which is why we have 32
> built-in slots that always exist. If you really want to pursue
> something here it should probably just be protecting the pointers with
> some secret...
>
> Rich
>

[-- Attachment #2: Type: text/html, Size: 2034 bytes --]

  reply	other threads:[~2020-12-03 17:55 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-02  0:55 Ariadne Conill
2020-12-02  1:37 ` Rich Felker
2020-12-03 17:55   ` Matthew Maurer [this message]
2020-12-03 19:16     ` Rich Felker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGSQo02qODoGqsfi19TSh_8u8T=fX-Np2TY=k4RH=AQZtVsZ_g@mail.gmail.com' \
    --to=mmaurer@google.com \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).