Shawn Webb is a user on mastodon.social. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.
Shawn Webb @lattera

So here's my dilemma:

supports partial W^X compatibility.

doesn't call home.

Which should be my default browser?

· Web · 1 · 1

@lattera patch one of them. Making Firefox not to call home seems easier, I'd use privoxy for that, maybe? Tor browser might have patches for that albeit for some old release.

@lattera Holy shit, no NX/DEP (or w/e you wanna call it) in 2017? Or what's up with Iridium?

(Also, just block call home traffic at firewall?)

@kwanre Well, no browser today (except Links/Lynx) fully support W^X due to the JIT.

Firefox creates memory mappings that are RW, writes the JIT code to them, then upgrades them to RX.

Chrome/Chromium creates memory mappings that are RWX, writes the JIT code to them, then executes them.

@lattera No, I get that and I'm aware of the whole JIT issue.
I just thought Iridium doesn't use W^X *at all*

And now I looked it up and realise it's a fork of Chrome/Chromium. I was unaware of this project :o
Neat!

@kwanre Well, applications themselves don't (or shouldn't) have a say in W^X enforcement. W^X is (or should be) enforced by the kernel.

For example, when an application mmap(RWX)'s a new page, will silently drop the X bit.

When an application mprotect(RW->RX)'s an existing page, will have mprotect return EPERM.

@lattera
Let's just say shouldn't. I must admit I'm not familiar with *BSD it's been years I've used OpenBSD. But that's pretty cool of HardenedBSD.

On other platforms though... (for example Windows I can just call VirtualProtect and make any page on heap RWX. Or compile an ELF with executable stack enabled - yes, I realise stack is different from heap, but the point is there are many ways to mess with NX whether that's through malice or incompetence...)

@lattera Now, I will have to check HardenedBSD out ^^

@kwanre has disabled the ability for an ELF shared object to say "I want an executable stack" on amd64 and arm64. :)

@lattera Awesome! And clang CFI by default! Will look into replacing my Alpine boxes with HardenedBSD ones. Really neat project.
Shame about PaX/Grsec though.

@kwanre I'm still working on Cross-DSO CFI support. Non-Cross-DSO-CFI is only enabled in base for 12-CURRENT, not 11-STABLE or 10-STABLE.