Por que o Google Chrome precisa da opção wxallowed?

1

O OpenBSD também tem grandes atenuações de segurança, ex .: W ^ X: link

Mas o / usr / local FS precisa ter a opção de montagem "wxallowed" por causa do Google Chrome, porque não será iniciado sem ele.

"wxallowed" desativa o W ^ X no FS fornecido.

A pergunta: o Google Chrome tem esse código de qualidade extremamente ruim, que ele precisa de permissão, ou isso é algo mais complexo?

bom exemplo: o Firefox simplesmente funciona sem a opção wxallowed, então ele usa a mitigação W ^ X, o que é ótimo.

Mas outro exemplo ruim: o LibreOffice não inicia sem o wxallowed também.

    
por Hessnov 04.02.2018 / 21:14

1 resposta

2

Há um monte de portas problemáticas como @Kusalananda aponta; Não posso falar por todos eles, embora suspeite que um problema importante seja o código compilado just-in-time. Este é o código compilado após o início do programa; este código deve ser escrito em algum lugar para que possa ser executado; isso quebra W ^ X como a página em que esse código foi gravado não pode ser executada também. A solução fácil é definir wxallowed para permitir que isso aconteça. A dificuldade é reescrever o código para suportar páginas de memória JIT e W ^ X (possíveis desvantagens, além do esforço para criar esse código inclui lentidão do código JIT + W ^ X, o que pode ser problemático para usuários de software espera ser performant).

Alguém precisaria examinar cada porta, revisar o código, possivelmente fazer alterações extensas, dependendo de como o código é flexível para nunca executar a partir de uma página gravável, testar essas alterações. Alguns softwares provavelmente exigirão muito trabalho, outros talvez não tenham horas de trabalho (ou dinheiro) para que alguém implemente as mudanças. Não há como dizer o quão ruim é um aplicativo em misturar a memória sem revisá-la, portanto a falta de W ^ X pode ou não ser uma indicação de "má qualidade do código".

JIT + W ^ X aconteceu recentemente no firefox .

    
por 06.02.2018 / 05:41