Empfohlene Vorgehensweisen bezüglich der Sicherheit in C++

Dieser Artikel enthält Informationen über Sicherheitstools und Vorgehensweisen.Ihre Verwendung macht eine Anwendung zwar nicht immun gegen Angriffe, aber sie verringert die Wahrscheinlichkeit erfolgreicher Angriffe.

Visual C++-Sicherheitsfeatures

Diese Sicherheitsfunktionen sind in den Visual C++-Compiler und den Visual C++-Linker integriert:

  • /GS (Puffer-Sicherheitsüberprüfung)
    Der Compiler wird angewiesen, Überlauferkennungscode in Funktionen einzufügen, die Angriffen ausgesetzt sein können.Wenn ein Überlauf erkannt wird, wird die Programmausführung angehalten.Diese Option ist standardmäßig aktiviert.

  • /SAFESEH (Abbild verfügt über sichere Ausnahmehandler)
    Der Linker wird angewiesen, dem Ausgabeabbild eine Tabelle mit den Adressen aller Ausnahmehandler hinzuzufügen.Zur Laufzeit verwendet das Betriebssystem diese Tabelle, um sicherzustellen, dass nur rechtmäßige Ausnahmehandler ausgeführt werden.Dadurch wird verhindert, dass in böswilligen Angriffen zur Laufzeit eingeschleuste Ausnahmehandler ausgeführt werden.Diese Option ist standardmäßig deaktiviert.

  • /NXCOMPAT , /NXCOMPAT (kompatibel mit Datenausführungsverhinderung)
    Diese Compiler- und Linkeroptionen ermöglichen Kompatibilität mit der Datenausführungsverhinderung.DEP schützt die CPU vor der Ausführung von Seiten, die keine Codepages sind.

  • /analyze (Codeanalyse)
    Diese Compileroption aktiviert die Codeanalyse, die über potentielle Sicherheitslücken wie Pufferüberlauf, nicht initialisierten Speicher, Dereferenzierung von NULL-Zeigern und Speicherverlusten Bericht erstattet.Diese Option ist standardmäßig deaktiviert.Weitere Informationen finden Sie unter Übersicht über die Codeanalyse für C/C++.

  • /DYNAMICBASE (Address Space Layout Randomization verwenden)
    Diese Linkeroption ermöglicht das Erstellen eines ausführbaren Images, das am Anfang der Ausführung an anderen Orten im Arbeitsspeicher geladen werden kann.Durch diese Option lässt sich die Position des Stapels im Arbeitsspeicher auch schlechter vorhersagen.

CRT mit erweiterter Sicherheit

Die C-Laufzeitbibliothek (CRT) wurde um sichere Versionen von Funktionen erweitert, die ein Sicherheitsrisiko darstellen, z. B. die aufwerfen, die ungeprüfte strcpy-Funktion zum Kopieren von Zeichenfolgen.Da die älteren, nicht sicheren Versionen dieser Funktionen jetzt veraltet sind, verursacht ihre Verwendung Compilerwarnungen.Es wird empfohlen, die sicheren Versionen dieser CRT-Funktionen zu verwenden, anstatt die Compilerwarnungen zu unterdrücken.Weitere Informationen finden Sie unter Sicherheitsfunktionen in der CRT.

SafeInt-Bibliothek

SafeInt-Bibliothek verhindert Ganzzahlüberläufe und andere als Angriffspunkt geeignete Fehler, die sich ergeben können, wenn die Anwendung mathematische Vorgänge ausführt.Die Bibliothek SafeInt schließt die SafeInt-Klasse, die SafeIntException-Klasse und mehrere SafeInt-Funktionen ein.

Die SafeInt-Klasse schützt vor Ganzzahlüberlauf und Exploits vom Typ "Division durch 0".Sie können sie zum Behandeln von Vergleichen zwischen Werten unterschiedlicher Typen verwenden.I stellt zwei Fehlerbehandlungsrichtlinien bereit.Gemäß Standardrichtlinie löst die SafeInt-Klasse eine SafeIntException-Klassenausnahme aus, um zu berichten, warum ein mathematischer Vorgang nicht abgeschlossen werden kann.Gemäß der zweiten Richtlinie beendet die SafeInt-Klasse die Programmausführung.Sie können auch eine benutzerdefinierte Richtlinie definieren.

Jede SafeInt-Funktion schützt einen mathematischen Vorgang vor einem als Angriffspunkt geeigneten Fehler.Sie können zwei verschiedene Arten von Parametern verwenden, ohne sie in den gleichen Typ konvertieren zu müssen.Verwenden Sie die SafeInt-Klasse, um mehrere mathematische Vorgänge zu schützen.

Überprüfte Iteratoren

Ein überprüfter Iterator erzwingt Containergrenzen.Wenn ein überprüfter Iterator außerhalb der zulässigen Grenzen liegt, wird eine Ausnahme generiert und die Programmausführung beendet.Ein überprüfter Iterator stellt andere Antwortebenen bereit, die von Werten abhängig sind, die Präprozessordefinitionen zugewiesen sind, z. B. _SECURE_SCL_THROWS und _ITERATOR_DEBUG_LEVEL.Bei _ITERATOR_DEBUG_LEVEL=2 stellt ein überprüfter Iterator z. B. umfassende Korrektheitsüberprüfungen im Debugmodus bereit, die mit Assertionen verfügbar gemacht werden.Weitere Informationen finden Sie unter Überprüfte Iteratoren.

Codeanalyse für verwalteten Code

Codeanalyse für verwalteten Code, auch bekannt als FxCop, überprüft Assemblys auf Übereinstimmung mit den .NET Framework-Entwurfsrichtlinien.FxCop analysiert den Code und die Metadaten in jeder Assembly und prüft in den folgenden Bereichen auf Fehler:

  • Bibliotheksentwurf

  • Lokalisierung

  • Namenskonventionen

  • Leistung

  • Sicherheit

Windows Application Verifier

Der Application Verifier (AppVerifier) kann Ihnen dabei helfen, mögliche Probleme bei der Kompatibilität, der Stabilität und der Sicherheit der Anwendung zu identifizieren.

Der AppVerifier überwacht, wie eine Anwendung das Betriebssystem verwendet.Dateisystem, Registrierung, Arbeitsspeicher und APIs werden beobachtet, während die Anwendung ausgeführt wird, und es werden Quellcodepatches für die erkannten Probleme empfohlen.

Sie können den AppVerifier wie folgt verwenden:

  • Auf potenzielle durch allgemeine Programmierfehler verursachte Anwendungskompatibilitätsfehler prüfen.

  • Eine Anwendung auf speicherbezogene Probleme untersuchen.

  • Potenzielle Sicherheitsprobleme in einer Anwendung aufdecken.

Der AppVerifier ist ein Bestandteil des Anwendungskompatibilitäts-Toolkits, das von der Anwendungskompatibilität auf der TechNet-Website verfügbar ist.

.NET Framework-Sicherheitsfeatures

Configuring Security Policy beschreibt Richtlinien und Tools zum Anpassen der .NET Framework-Sicherheitsrichtlinien.

Windows-Benutzerkonten

Das Verwenden von Windows-Benutzerkonten, die zur Gruppe der Administratoren gehören, setzt Entwickler und – durch entsprechende Erweiterung – auch Kunden Sicherheitsrisiken aus.Weitere Informationen finden Sie unter Ausführen als Mitglied der Gruppe Benutzer und Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst.

Siehe auch

Referenz

System.Security

Konzepte

Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst

Weitere Ressourcen

Sicherheit in .NET Framework