Theo de Raadt a ajouté à la base de code d'OpenBSD une série de correctifs pour une protection supplémentaire de la mémoire des processus dans l'espace utilisateur. Les développeurs se voient proposer un nouvel appel système et une fonction de bibliothèque associée appelée mimmutable, permettant de fixer les droits d'accès lors de la réflexion dans la mémoire (memory mappings). Une fois fixés, les droits d'accès définis pour la zone mémoire, par exemple, l'interdiction d'écriture et d'exécution, ne peuvent pas être modifiés ultérieurement via des appels aux fonctions mmap(), mprotect() et munmap(), qui, en cas de tentative de modification, renverront une erreur EPERM.
Pour gérer la possibilité de modifier les droits de la mémoire réfléchie pour les fichiers objets, une nouvelle section Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol) a été proposée, ainsi que de nouveaux drapeaux PF_MUTABLE et UVM_ET_IMMUTABLE. Le linker a été mis à jour pour prendre en charge la définition des sections « openbsd.mutable » et leur placement dans une zone séparée dans le BSS, alignée sur la frontière des pages mémoire. Grâce à l'appel de la fonction mimmutable, il est possible de marquer toutes les zones réfléchies comme immuables, sauf pour les sections marquées comme « openbsd.mutable ». Cette nouvelle fonctionnalité sera présentée aux utilisateurs dans la version OpenBSD 7.3.
Source : opennet.ru
