Theo de Raadt hat der OpenBSD-Codebasis eine Reihe von Patches hinzugefügt, die zusätzlichen Schutz für den Speicher von Prozessen im Benutzerspeicherraum bieten. Entwicklern steht ein neuer Systemaufruf sowie die dazugehörige gleichnamige Bibliotheksfunktion mimmutable zur Verfügung, die es ermöglicht, die Zugriffsrechte bei der Spiegelung in den Speicher (memory mappings) festzulegen. Nach der Festlegung können die für den Speicherbereich festgelegten Rechte, wie etwa Schreib- und Ausführungsverbote, nicht mehr durch nachfolgende Aufrufe der Funktionen mmap(), mprotect() und munmap() geändert werden, wobei bei einem Änderungsversuch der Fehler EPERM ausgegeben wird.
Für die Verwaltung der Möglichkeit, die Rechte des reflektierten Speichers für Objektdateien zu ändern, wurde ein neuer Abschnitt Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol) vorgeschlagen, sowie neue Flags PF_MUTABLE und UVM_ET_IMMUTABLE hinzugefügt. Der Linker unterstützt nun die Definition von Abschnitten "openbsd.mutable" und deren Platzierung in einem separaten Bereich im BSS, der an die Seitenkantenausrichtung angeglichen ist. Durch den Aufruf der Funktion mimmutable wird die Möglichkeit bereitgestellt, alle reflektierten Bereiche als unveränderlich (immutable) zu kennzeichnen, mit Ausnahme der Abschnitte, die als "openbsd.mutable" markiert sind. Diese neue Funktion wird den Benutzern in der Veröffentlichung von OpenBSD 7.3 zur Verfügung stehen.
Quelle: opennet.ru
