Windows Presentation Foundation-Sicherheitsstrategie - Sicherheitsentwicklung
Aktualisiert: November 2007
Trustworthy Computing ist eine Initiative von Microsoft für die Erstellung von sicherem Code. Ein Hauptelement der Trustworthy Computing-Initiative ist Microsoft Security Development Lifecycle (SDL). SDL ist ein Entwicklungszyklus, der zusammen mit Standardentwicklungsprozessen eingesetzt wird, um die Erstellung von sicherem Code zu vereinfachen. SDL besteht aus zehn Phasen, die bewährte Methoden mit Formalisierung, Messbarkeit und zusätzlichen Strukturen kombinieren. Dazu zählen:
Analyse des Sicherheitsentwurfs
Toolbasierte Qualitätsprüfungen
Penetrationstests
Abschließende Sicherheitsüberprüfung
Sicherheitsverwaltung für das Produkt nach der Markteinführung
Besonderheiten für WPF
Das WPF-Entwicklungsteam wendet SDL an und erweitert diesen Entwicklungszyklus. Diese Kombination umfasst die folgenden wichtigen Aspekte:
Erstellen von Bedrohungsmodellen
Sicherheitsanalyse und Bearbeitungstools
Testverfahren
Verwaltung von sicherheitsrelevantem Code
Erstellen von Bedrohungsmodellen
Das Erstellen von Bedrohungsmodellen ist eine Kernkomponente von SDL und wird bei der Profilerstellung eines Systems verwendet, um mögliche Sicherheitsrisiken zu erkennen. Sobald die Schwachstellen identifiziert sind, wird durch das Erstellen von Bedrohungsmodellen auch sichergestellt, dass entsprechende Gegenmaßnahmen vorhanden sind.
Auf hohem Niveau gehören zum Erstellen von Bedrohungsmodellen die folgenden wichtigen Schritte am Beispiel eines Lebensmittelgeschäfts:
Ermitteln der Vermögenswerte. Zu den Vermögenswerten eines Lebensmittelgeschäfts können Mitarbeiter, ein Tresor, Kassen und Inventar zählen.
Erfassen von Zugangspunkten. Die Zugangspunkte eines Lebensmittelgeschäfts können sein: Vorder- und Hintertüren, Fenster, die Ladezone und Klimaanlagen.
Untersuchen von Angriffen auf Vermögenswerte über die Zugangspunkte. Ein möglicher Angriff auf ein Lebensmittelgeschäft könnte sich gegen den Tresor als Vermögenswert richten und über die Klimaanlage als Zugangspunkt erfolgen: Die Klimaanlage könnte aufgeschraubt werden, um den Tresor auf diesem Weg aus dem Geschäft zu transportieren.
Das Erstellen von Bedrohungsmodellen wird überall in WPF angewendet und umfasst Folgendes:
Wie der XAML-Parser Dateien liest, Text entsprechenden Objektmodellklassen zuordnet und den eigentlichen Code erstellt.
Wie ein Fensterhandle (hWnd) erstellt wird, Meldungen sendet und zum Rendern von Fensterinhalten verwendet wird.
Wie die Datenbindung Ressourcen erhält und mit dem System interagiert.
Diese Bedrohungsmodelle sind wichtig, um während des Entwicklungsvorgangs Anforderungen für den Sicherheitsentwurf und Abwehrmaßnahmen gegen die Bedrohung zu erkennen.
Quellenanalyse und Bearbeitungstools
Zusätzlich zu den manuellen Überprüfungselementen für Sicherheitscode von SDL verwendet das WPF-Team mehrere Tools zur Quellenanalyse und damit verbundenen Bearbeitungen, um Sicherheitsrisiken zu verringern. Es wird eine breite Palette an Tools für Quellcodes eingesetzt. Dazu zählen u. a. die folgenden:
FXCop: Findet gängige Sicherheitsprobleme in verwaltetem Code, von Vererbungsregeln über die Verwendung von Codezugriffssicherheit bis zur Frage, wie mit nicht verwaltetem Code sicher umgegangen werden soll. Siehe FXCop.
Prefix/Prefast: Findet Sicherheitsrisiken und gängige Sicherheitsprobleme in nicht verwaltetem Code, z. B. Pufferüberläufe, Probleme mit Formatzeichenfolgen und Fehlerüberprüfung.
Banned APIs: Durchsucht Quellcode, um die unbeabsichtigte Verwendung von Funktionen zu erkennen, die dafür bekannt sind, Sicherheitsprobleme zu verursachen, z. B. strcpy. Sobald diese Funktionen entdeckt sind, werden sie durch Alternativen ersetzt, die mehr Sicherheit bieten.
Testverfahren
WPF verwendet eine Vielzahl von Sicherheitstestverfahren. Dazu zählen:
Whitebox-Tests: Tester zeigen Quellcode an, und erstellen danach Tests, die Schwachstellen ausnutzen.
Blackbox-Tests: Tester versuchen Sicherheitslücken aufzuspüren, indem sie API und Features untersuchen und anschließend einen Angriffsversuch auf das Produkt unternehmen.
Übertragbarkeit von Sicherheitsproblemen anderer Produkte: Bei entsprechender Relevanz werden Sicherheitsprobleme von verwandten Produkten getestet. So wurden passende Varianten von rund sechzig Sicherheitsproblemen für Internet Explorer erkannt und auf ihre Anwendbarkeit für WPF untersucht.
Toolbasierte Penetrationstests durch Datei-Fuzzing: Durch Datei-Fuzzing werden Schwachstellen im Eingabebereich eines Dateireaders mithilfe einer Vielzahl von Eingaben ausgenutzt. Ein Beispiel in WPF, bei dem dieses Verfahren angewendet wird, ist die Fehlersuche im Code, der zum Decodieren von Bildern dient.
Verwaltung von sicherheitsrelevantem Code
WPF erstellt für XAML-Browseranwendungen (XBAPs) mithilfe von .NET Framework-Unterstützung eine Sicherheitssandbox zum Kennzeichnen und Verfolgen von sicherheitsrelevantem Code, der seine Berechtigungen ausweitet (siehe Sicherheitsrelevante Methodik in Windows Presentation Foundation-Sicherheitsstrategie - Plattformsicherheit). Aufgrund der hohen Qualitätsanforderungen an die Sicherheit von sicherheitsrelevantem Code sind für diesen Code eine verschärfte Kontrolle der Quellcodeverwaltung und zusätzliche Sicherheitsüberprüfungen vorgesehen. Etwa 5 bis 10 Prozent von WPF besteht aus sicherheitsrelevantem Code, der von einem speziellem Prüfungsteam untersucht wird. Der Quellcode und der Eincheckvorgang werden durch das Verfolgen von sicherheitsrelevantem Code und das Zuordnen jeder sicherheitsrelevanten Entität (d. h. eine Methode mit sicherheitsrelevantem Code) bis zu ihrem Abmeldezustand verwaltet. Zum Abmeldezustand gehören die Namen eines oder mehrerer Prüfer. Bei jedem täglichen Build von WPF wird der sicherheitsrelevante Code mit dem in früheren Builds verglichen, um nicht genehmigte Änderungen zu entdecken. Wenn ein Entwickler sicherheitsrelevanten Code ohne Zustimmung des Prüfungsteams ändert, wird dieser Code sofort erkannt und korrigiert. Durch diesen Prozess werden die Anwendung und Beibehaltung eines besonders hohen Überprüfungsniveaus für WPF-Sandboxcode ermöglicht.
Siehe auch
Konzepte
Windows Presentation Foundation-Sicherheit
Windows Presentation Foundation - Sicherheit bei teilweiser Vertrauenswürdigkeit
Windows Presentation Foundation-Sicherheitsstrategie - Plattformsicherheit