Theo de Raadt adicionou à base de código do OpenBSD uma série de patches para proteção adicional da memória dos processos no espaço do usuário. Os desenvolvedores receberam uma nova chamada de sistema e uma função de biblioteca homônima, mimmutable, que permite fixar as permissões de acesso durante o mapeamento na memória. Depois de fixar, as permissões atribuídas à área de memória, como proibição de gravação e execução, não podem ser alteradas em chamadas subsequentes das funções mmap(), mprotect() e munmap(), que, ao tentarem ser alteradas, geram um erro EPERM.
Para gerenciar a possibilidade de alterar as permissões da memória mapeada para arquivos objeto, foi proposta uma nova seção Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol), e novos flags PF_MUTABLE e UVM_ET_IMMUTABLE foram adicionados. O vinculador agora suporta a definição das seções 'openbsd.mutable' e seu posicionamento em uma área separada no BSS, alinhada ao limite das páginas de memória. Por meio da chamada da função mimmutable, é possível marcar todas as áreas mapeadas como imutáveis (immutable), exceto as seções marcadas como 'openbsd.mutable'. Este novo recurso será disponibilizado aos usuários na versão OpenBSD 7.3.
Fonte: opennet.ru
