Theo de Raadt ha aggiunto al codice sorgente di OpenBSD una serie di patch per una protezione aggiuntiva della memoria dei processi nello spazio utente. È stato proposto agli sviluppatori una nuova chiamata di sistema e la corrispondente funzione di libreria denominata mimmutable, che consente di fissare i diritti di accesso durante il mapping in memoria. Una volta fissati, i diritti di accesso impostati per l'area di memoria, ad esempio, il divieto di scrittura ed esecuzione, non possono essere successivamente modificati tramite chiamate alle funzioni mmap(), mprotect() e munmap(), che genereranno un errore EPERM se tentati.
Per gestire la possibilità di modificare i diritti della memoria mappata per i file oggetto, è stata proposta una nuova sezione Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol), e sono stati aggiunti nuovi flag PF_MUTABLE e UVM_ET_IMMUTABLE. È stato aggiunta al linker la supporto per la definizione delle sezioni «openbsd.mutable» e per la loro allocazione in un'area separata nella BSS, allineata al confine della pagina di memoria. Attraverso la chiamata della funzione mimmutable, è possibile contrassegnare tutte le aree mappate come immutabili (immutable), eccetto le sezioni contrassegnate come «openbsd.mutable». La nuova funzionalità sarà resa disponibile agli utenti nel rilascio di OpenBSD 7.3.
Fonte: opennet.ru
