Welche GCC-Optionen bieten den besten Schutz gegen Speicherbeschädigungsanfälligkeiten wie Pufferüberlauf und Dangling Pointers? Bietet GCC irgendeine Art von ROP-Kettenminderung? Gibt es Leistungsbedenken oder andere Probleme, die verhindern könnten, dass diese GCC-Option in einer unternehmenskritischen Anwendung in der Produktion eingesetzt wird?
Ich schaue mir den Debian-Handbuch zum Verhärten sowie GCC Mudflap . Hier sind die folgenden Konfigurationen, die ich in Betracht ziehe:
%Vor%Gibt es irgendwelche Verbesserungen, die an dieser Reihe von Optionen vorgenommen werden können? Nehmen Sie die neueste Version von GCC an, wenn Sie eine coole kommende Funktion kennen, lassen Sie es mich wissen!
Keine GCC-Option, aber kompatibel mit GCC. Sehen Sie sich unser Tool CheckPointer an, das die meisten Speicherverwaltungsfehler erkennt.
Es gibt eine deutliche Verlangsamung der Ausführung; Das Tool muss die Gültigkeit von Zeigern und zugewiesenen Speicher verfolgen, was zusätzlichen Aufwand verursacht.
Dies ist kein CFLAGS
oder LDFLAGS
Antwort, also vielleicht nicht das, wonach du eigentlich suchst, aber du solltest auch in gcc plugins suchen, die für Härtezwecke geschrieben wurden. Diese werden in gehärteten Kernel-Builds verwendet und fangen viel schlechten Code ab. Sie benötigen möglicherweise ein gcc-plugins-Paket für Ihre Distribution, apt-cache search gcc | grep plugin
oder einen gleichwertigen Namen, um den Paketnamen zu finden. Ich glaube, dass die llvm Compiler-Suite ähnliche Plugins hat, wenn Sie bereit sind, ihren clang-Compiler zu verwenden (es ist meistens gcc-kompatibel)
Tags und Links c++ gcc security buffer-overflow dangling-pointer