In Clang beabsichtigt man, einen Modus für verbesserte Sicherheit hinzuzufügen.

Aaron Ballman, der Hauptverantwortliche für den Clang-Compiler und Mitglied der Entwicklungsteams für die Standards WG21 (C++) und WG14 (C), hat die Diskussion über die Hinzufügung eines Sicherheitsverbesserungsmodus in den Clang-Compiler begonnen. Der neue Modus wird es ermöglichen, eine Reihe von Optionen zur Verbesserung des Schutzes in einem Rutsch zu aktivieren, ähnlich dem in GCC 14 eingeführten Flag «-fhardened», bei dem die Optionen «-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full» aktiviert werden.

Es wird darauf hingewiesen, dass derzeit an der Integration von Sicherheitsverbesserungsfunktionen in die C- und C++-Standards gearbeitet wird, dieser Prozess jedoch nicht schnell voranschreitet, da in Clang bereits einzelne Optionen mit der Implementierung zusätzlicher Schutzmechanismen verfügbar sind. Die implementierten Schutzmethoden führen häufig zu spezifischen Inkompatibilitäten mit bestehendem Code oder zu ABI-Verletzungen, was deren Aktivierung als Standard verhindern kann. Zudem sind solche Optionen verstreut (Flags zur Steuerung der Kompilierung, Flags zur Generierung von Maschinenbefehlen, die an Hardwarearchitekturen gebunden sind, Warnungen, Diagnosetypen, Makros), schlecht dokumentiert und geraten aus dem Blickfeld vieler Entwickler.

Eine einheitliche Einstellung vereinfacht die Aktivierung verwandter Sicherheitsoptionen und erleichtert ihre Nutzung. Es werden verschiedene Varianten zur Aktivierung des verbesserten Sicherheitsmodus diskutiert, wie die Aktivierung über das Flag «-fhardened», die Konfiguration «--config=hardened», ein separater Treiber (clang --driver-mode) oder separate Optionen «-fhardened, -mhardened und -Whardened», die mit der Kompilierung, Codegenerierung und der Ausgabe von Warnungen verbunden sind. Der Modus könnte Folgendes umfassen:

  • Compiler-Funktionen: -ftrivial-auto-var-init, -fPIE, -fcf-protection usw.
  • Funktionen, die mit der Codegeneration für Zielplattformen verbunden sind: -mspeculative-load-hardening, -mlvi-hardening usw.
  • Warnungen: -Wall, -Wextra, -Werror=return-type usw.
  • Sicherheitsverbesserungsmodi in der Standardbibliothek für Funktionen.
  • Makros: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS usw.
  • Anforderung zur expliziten Auswahl des verwendeten Sprachstandards.
  • Verweigerung der Kompilierung von Code, der veraltete Standards C89 und C++98 verwendet.
  • Übermittlung zusätzlicher Flags an den Linker, z. B. zur Aktivierung der Adressrandomisierung.

Quelle: opennet.ru

60GB SSD 8Gb DDR4