WPF-Sicherheitsstrategie – Sicherheitsentwicklung

 

Veröffentlicht: Juni 2016

Trustworthy Computing ist eine Microsoft-Initiative, die sicherstellen soll, dass sicherer Code entwickelt wird. Ein Schlüsselelement der Trustworthy Computing-Initiative ist der Microsoft Security Development Lifecycle (SDL). Der SDL ist ein Entwicklungsverfahren, das in Verbindung mit standardmäßigen Entwicklungsprozessen verwendet wird, um die Erstellung von sicherem Code zu erleichtern. Der SDL besteht aus zehn Phasen, die bewährte Methoden mit Formalisierung, Messbarkeit und zusätzlichen Strukturen kombinieren, darunter:

  • Analyse des Sicherheitsentwurfs

  • Qualitätsprüfungen mithilfe von Tools

  • Penetrationstests

  • Abschließende Sicherheitsüberprüfung

  • Verwaltung der Produktsicherheit nach der Veröffentlichung

Das WPF-Entwicklungsteam wendet den SDL an und ist auch für dessen Erweiterung zuständig; diese Kombination beinhaltet die folgenden Schlüsselaspekte:

Erstellen von Gefahrenmodellen

Sicherheitsanalyse und Bearbeitungstools

Testverfahren

Verwaltung von sicherheitsrelevantem Code

Erstellen von Gefahrenmodellen

Das Erstellen von Gefahrenmodellen ist eine Kernkomponente des SDL und wird zum Erstellen von Systemprofilen verwendet, um potenzielle Sicherheitsanfälligkeiten zu bestimmen. Sobald die Schwachstellen identifiziert sind, kann mithilfe der Gefahrenmodelle zudem sichergestellt werden, dass entsprechende Maßnahmen zur Risikominderung zum Einsatz kommen.

Im Überblick umfasst die Erstellung von Gefahrenmodellen die folgenden Hauptschritte, hier am Beispiel eines Lebensmittelmarkts verdeutlicht:

  1. Ressourcenermittlung. Zu den Ressourcen eines Lebensmittelmarkts können etwa die Mitarbeiter, ein Tresor, Registrierkassen und der Warenbestand gehören.

  2. Aufzählen der Einstiegspunkte. Die Einstiegspunkte eines Lebensmittelmarkts können etwa die Vorder- und Hintertüren, Fenster, das Ladedeck und die Öffnungen der Klimaanlage zählen.

  3. Untersuchung von Angriffen auf Ressourcen mithilfe der Einstiegspunkte. Ein mögliches Angriffsszenario könnte auf die Ressource Tresor des Lebensmittelmarkts über den Einstiegspunkt Öffnungen der Klimaanlage abzielen; die Klimaanlage könnte demontiert werden, um das Herausziehen des Tresors aus dem Lebensmittelmarkt durch die Lüftungsschächte zu ermöglichen.

Die Erstellung von Gefahrenmodellen wird in WPF durchgängig angewendet und schließt folgende Punkte ein:

  • Die Weise, in der der XAML-Parser Dateien liest, Text zu entsprechenden Objektmodellklassen zuordnet und den tatsächlichen Code erstellt.

  • Wie ein Fensterhandle (hWnd) erstellt wird, Nachrichten sendet und zum Rendern der Inhalte eines Fensters verwendet wird.

  • Wie die Datenbindung Ressourcen erhält und mit dem System interagiert.

Diese Gefahrenmodelle sind wichtig, um die Anforderungen an den Sicherheitsentwurf und die Maßnahmen der Gefahrenabwehr während des Entwicklungsprozesses zu bestimmen.

Quellcodeanalyse und Bearbeitungstools

Über die manuellen Elemente der Codesicherheitsprüfung im SDL hinaus verwendet das WPF-Team eine Reihe von Tools für die Quellcodeanalyse und die zugeordneten Bearbeitungsschritte, um Sicherheitsschwachstellen zu vermindern. Es wird eine breite Palette von Tools für den Quellcode verwendet, darunter die folgenden:

  • FXCop: Findet häufige Sicherheitsprobleme in verwaltetem Code, beginnend mit Vererbungsregeln über die Verwendung der Zugriffssicherheit im Code bis hin zum sicheren Zusammenwirken mit nicht verwaltetem Code. Weitere Informationen dazu finden Sie unter FXCop.

  • Prefix/Prefast: Findet Schwachstellen des Sicherheit und häufige Sicherheitsprobleme in nicht verwaltetem Code, wie etwa Pufferüberläufe, Probleme bei Formatzeichenfolgen und Fehlerprüfung.

  • Gesperrte APIs: Durchsucht den Quellcode, um die versehentliche Verwendung von Funktionen zu erkennen, die für Sicherheitsprobleme bekannt sind, wie etwa strcpy. Nach der Erkennung werden diese Funktionen durch Alternativen ersetzt, die mehr Sicherheit bieten.

Testverfahren

WPF verwendet eine Reihe von Techniken zum Testen der Sicherheit, darunter:

  • Whiteboxtests: Tester untersuchen den Quellcode und entwickeln dann Exploittests

  • Blackboxtests: Tester suchen Sicherheitsexploits, indem Sie APIs und Funktionen untersuchen und dann versuchen, das Produkt anzugreifen.

  • Regression von Sicherheitsproblemen anderer Produkte: Sofern sie relevant sind, werden Sicherheitsprobleme von verwandten Produkten getestet. Beispielsweise wurden entsprechende Varianten von nahezu 60 Sicherheitsproblemen bei Internet Explorer erkannt und auf ihre Gültigkeit für WPF hin überprüft.

  • Toolbasierte Penetrationstests durch Dateitests mit zufälligen Daten: Dateitests mit zufälligen Daten stellen die Ausnutzung des Eingabebereichs von Dateilesemodulen durch eine Vielzahl von Eingaben dar. Ein Beispiel, wo diese Technik in WPF verwendet wird, besteht in der Prüfung von Code zur Bildentschlüsselung auf Fehler.

Verwaltung von sicherheitsrelevantem Code

Für XAML-Browseranwendungen (XAML browser applications; XBAPs) erstellt WPF eine Sicherheitssandbox mithilfe der .NET Framework-Unterstützung für das Kennzeichnen und Nachverfolgen von sicherheitskritischem Code, der Berechtigungen heraufstuft (siehe dazu Sicherheitsrelevante Methode in WPF-Sicherheitsstrategie – Plattformsicherheit). Angesichts der hohen Qualitätsanforderungen bei sicherheitskritischem Code wird derartiger Code durch eine zusätzliche Ebene der Quellcodeverwaltung und Sicherheitsüberwachung geschützt. Annähernd 5 % bis 10 % von WPF bestehen aus sicherheitskritischem Code, der von einem dedizierten Team überprüft wird. Der Quellcode und der Eincheckvorgang werden durch das Nachverfolgen von sicherheitskritischem Code und Zuordnen jeder kritischen Entität (d.h. einer Methode, die kritischen Code enthält) bis zum Zustand ihrer Abzeichnung verwaltet. Der abgezeichnete Zustand schließt die Namen eines oder mehrerer Prüfer ein. Bei jedem täglichen Build von WPF wird der kritische Code mit dem in vorhergehenden Builds verglichen, um nicht genehmigte Änderungen aufzuspüren. Wenn ein Programmierer kritischen Code ohne Genehmigung des Prüferteams ändert, wird der betreffende Code erkannt und sofort ersetzt. Dieses Vorgehen ermöglicht die Anwendung und Aufrechterhaltung eines sehr hohen Maßes an Genauigkeit bei WPF-Sandboxcode.

Sicherheit
WPF-Sicherheit mit teilweiser Vertrauenswürdigkeit
WPF-Sicherheitsstrategie – Plattformsicherheit
Trustworthy Computing
Gefahrenmodelle für Anwendungen
Sicherheitsrichtlinien: .NET Framework 2.0

Anzeigen: