On Sun, Aug 07, 2016 at 10:20:50PM +0200, Christian Weisgerber wrote:
> OpenBSD is increasingly mandating W^X.  What does that mean?  Memory
> can either be mapped writable, or it can be executable, but not
> both (Write xor eXecute).  This is a security concern.  Without
> W^X, an attacker can load their own code into memory and then execute
> it.  W^X protects against this.
> 
> Unfortunately there is important third-party code, such as just-in-time
> compilers, that still uses mmap(2) to make memory both writable and
> executable, so for the time being, we have to arrange ourselves
> with it.
> 
> For a binary to be allowed to violate W^X, it must
> (1) reside on a filesystem that is mounted with the "wxallowed"
>     flag (the installer enables this for /usr/local);
> (2) be annotated with PT_OPENBSD_WXNEEDED at the ELF level.
> 
> So far, only (1) is strictly enforced and any program in violation
> is terminated at once.
> 
> For (2), the W^X violation is logged (dmesg, syslog).  In recent
> snapshots, the offending mmap() call has also begun to return an
> error.  Alas, many programs don't handle this failure gracefully
> and crash.
> 
> Now, obviously getting rid of W^X violations has to be the end goal,
> but that will take time and effort.  In the meantime, offenders
> *MUST* be marked wxneeded.  This is done by linking the executable
> with "ld -z wxneeded".  When linking is performed through cc, which
> is the usual case, you add "-Wl,-z,wxneeded" to the linking command
> line.  That's it.
> 
> Currently only four affected ports are marked wxneeded.  More will
> need this.  Please, when you see a port throwing "foo(4711): W^X
> violation" log messages, look into adding wxneeded.
> 
> We can draw up a list of affected ports, but it isn't exactly hard
> to notice.  Some ports already need wxneeded to build.  Presumably
> there are a few others where it will only show up at run time.
> 
> This is important.  The W^X hammer is coming down and without
> wxneeded annotations you will find that a number of your favorite
> programs (e.g. everything Mozilla) will no longer run.

Free ok coupons to whoever wants to fix 'everything Mozilla' by applying
the necessary knob/bandaid like a sir. I wont have time nor interest to
look into this before g2k16.

Landry

Reply via email to