Zmiany wprowadzone w OpenBSD w celu dalszej ochrony pamięci procesowej

Theo de Raadt dodał serię poprawek do bazy kodu OpenBSD, aby jeszcze bardziej chronić pamięć procesową przestrzeni użytkownika. Programistom oferuje się nowe wywołanie systemowe i powiązaną z nim funkcję biblioteki podlegającej zmianom o tej samej nazwie, która umożliwia ustalanie praw dostępu podczas odzwierciedlania w pamięci (mapowania pamięci). Po naprawieniu uprawnień ustawionych dla obszaru pamięci, np. zakazu zapisu i wykonywania, nie można później zmienić poprzez kolejne wywołania funkcji mmap(), mprotect() i munmap(), które przy próbie zmiany wygeneruje błąd EPERM.

Zaproponowano nową sekcję Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol) w celu kontrolowania możliwości zmiany uprawnień do pamięci lustrzanej dla plików obiektowych, a także dodano nowe flagi PF_MUTABLE i UVM_ET_IMMUTABLE. Dodano obsługę linkera w celu definiowania sekcji „openbsd.mutable” i umieszczania ich w oddzielnym obszarze w BSS wyrównanym do granicy strony pamięci. Poprzez wywołanie funkcji mimmutable można oznaczyć wszystkie obszary lustrzane jako niezmienne, z wyjątkiem sekcji oznaczonych jako „openbsd.mutable”. Nowa funkcja zostanie udostępniona użytkownikom w wersji OpenBSD 7.3.

Źródło: opennet.ru

Dodaj komentarz