Theo de Raadt ha aggiunto una serie di patch al codice sorgente di OpenBSD per una protezione supplementare della memoria dei processi nello spazio utente. È stato proposto agli sviluppatori un nuovo sistema di chiamata e l'apposita funzione di libreria omonima mimmutable, che consente di fissare i diritti di accesso durante la mappatura in memoria. Una volta fissati, i diritti impostati per l'area di memoria, come il divieto di scrittura ed esecuzione, non possono essere successivamente modificati tramite chiamate alle funzioni mmap(), mprotect() e munmap(), che restituiranno un errore EPERM in caso di tentativo di modifica.
Per gestire la possibilità di modificare i diritti della memoria riflessa per i file oggetto, è stata proposta una nuova sezione Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol), e sono stati aggiunti i nuovi flag PF_MUTABLE e UVM_ET_IMMUTABLE. Il linker ha aggiunto supporto per la definizione delle sezioni 'openbsd.mutable' e per posizionarle in un'area separata nella BSS, allineata ai confini delle pagine di memoria. Attraverso la chiamata della funzione mimmutable, è possibile contrassegnare tutte le aree riflettenti come immutabili, ad eccezione delle sezioni contrassegnate come 'openbsd.mutable'. Questa nuova funzionalità sarà disponibile per gli utenti nella release OpenBSD 7.3.
Fonte: opennet.ru
