GNU C Library 2.27 unterstützt Memory Protection Keys

Die GNU C Library (glibc) bietet in der Version 2.27 eine Reihe neuer beziehungsweise optimierter Funktionen, allgemeiner Verbesserungen und Security Patches.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
GNU C Library: Roland McGrath zieht sich zurück
Lesezeit: 2 Min.
Von
  • Matthias Parbel

Die Unterstützung von Memory Protection Keys (MPK), Static PIE Executables (Position Independent Executables) sowie zahlreiche Security-relevante Verbesserungen zählen zu den wesentlichen Neuerungen der jetzt freigegebenen GNU C Library (glibc) 2.27. Um beispielsweise die MPKs zu nutzen, deklariert der Header <sys/mman.h> nun die Funktionen pkey_alloc, pkey_free, pkey_mprotect, pkey_set und pkey_get.

Wird glibc mit der Option --enable-static-pie kompiliert, lässt sich die daraus resultierende libc.a mit GCC 8 (oder neuer) nutzen, um Static PIE Executables zu erzeugen. Im Unterschied zu Static Executables lassen sie sich an jeder beliebigen Adresse laden und bieten erhöhte Sicherheit – verbrauchen jedoch mehr Speicher und dämpfen die Performance. Static PIE Executables stehen derzeit auf den Plattformen i386, x86_64 und x32 mit binutils ab Version 2.29 sowie auf aarch64 mit binutils ab Version 2.30 zur Verfügung.

Die meisten Security Fixes in glibc 2.27 betreffen verschiedene als Common Vulnerabilities and Exposures (CVE) gelistete Sicherheitslücken – darunter beispielsweise CVE-2017-16997. Das inkorrekte Handling von RPATH oder RUNPATH konnte demnach unter bestimmten Voraussetzungen missbraucht werden, um Libraries aus dem aktuellen Verzeichnis zu laden.

Die GNU C Library ist die Implementierung der C-Standard-Bibliothek des GNU-Projekts und eine wichtige Laufzeitbibliothek von Linux-Systemen. Neben C unterstützt sie auch C++ und orientiert sich an relevanten Standards wie ISO C11 und POSIX.1-2008. Eine komplette Übersicht der Neuerungen in glibc 2.27 einschließlich der entfernten und als überflüssig eingestuften Funktionen findet sich in den Release Notes. (map)