为什么 Google Chrome 需要 wxallowed 选项?

为什么 Google Chrome 需要 wxallowed 选项?

OpenBSD 也有很好的安全缓解措施,例如:W^X:https://en.wikipedia.org/wiki/W%5EX

但是,由于 Google Chrome,/usr/local FS 需要具有“wxallowed”挂载选项,因为没有它它就无法启动。

“wxallowed”禁用给定 FS 上的 W^X。

问题:Google Chrome 是否有质量非常差的代码,需要 wxallowed,还是更复杂的东西?

前任。很好的例子:Firefox 在没有 wxallowed 选项的情况下也能正常工作,因此它使用 W^X 缓解措施,这很棒。

但另一个不好的例子:如果没有 wxallowed,LibreOffice 也不会启动。

答案1

正如@Kusalananda 指出的那样,有很多有问题的端口;尽管我怀疑主要问题是及时编译的代码,但我不能代表所有人。这是程序开始后编译的代码;该代码必须写在某个地方,以便随后可以执行;这会破坏 W^X,因为写入该代码的页面也无法执行。简单的解决方法是设置wxallowed允许这种情况发生。硬修复是重写代码以支持 JIT 和 W^X 内存页面(可能的缺点,除了创建该代码的努力之外,还包括 JIT+W^X 代码的减慢,这可能会给软件用户带来问题期望表现出色)。

有人需要查看每个端口,检查代码,可能会进行大量更改,具体取决于代码是否适合从可写页面执行,并测试这些更改。有些软件可能需要大量工作,而另一些软件可能缺乏人员时间(或意愿或金钱)来实施更改。在不检查的情况下,无法判断应用程序在混合内存方面有多糟糕,因此缺少 W^X 可能表示也可能不表示“代码质量较差”。

Firefox 最近发生了 JIT+W^X

相关内容