WPF-Sicherheitsstrategie – SicherheitsentwicklungWPF Security Strategy - Security Engineering

Trustworthy Computing ist eine Microsoft-Initiative, die sicherstellen soll, dass sicherer Code entwickelt wird.Trustworthy Computing is a Microsoft initiative for ensuring the production of secure code. Ein wichtiges Element der Initiative zum vertrauenswürdigen Computing ist die Microsoft Security Development Lifecycle (SDL).A key element of the Trustworthy Computing initiative is the Microsoft Security Development Lifecycle (SDL). Die SDL ist eine Engineering-Übung, die in Verbindung mit standardmäßigen Entwicklungsprozessen verwendet wird, um die Bereitstellung von sicherem Code zu vereinfachen.The SDL is an engineering practice that is used in conjunction with standard engineering processes to facilitate the delivery of secure code. Das SDL besteht aus zehn Phasen, die bewährte Methoden mit Formalisierung, Measurability und zusätzlicher Struktur kombinieren, einschließlich:The SDL consists of ten phases that combine best practices with formalization, measurability, and additional structure, including:

  • Analyse des SicherheitsentwurfsSecurity design analysis

  • Qualitätsprüfungen mithilfe von ToolsTool-based quality checks

  • PenetrationstestsPenetration testing

  • Abschließende SicherheitsüberprüfungFinal security review

  • Verwaltung der Produktsicherheit nach der VeröffentlichungPost release product security management

WPF im EinzelnenWPF Specifics

Das WPFWPF Engineering-Team wendet das SDL an und erweitert es. die Kombination von umfasst die folgenden wichtigen Aspekte:The WPFWPF engineering team both applies and extends the SDL, the combination of which includes the following key aspects:

Erstellen von GefahrenmodellenThreat Modeling

Sicherheitsanalyse und BearbeitungstoolsSecurity Analysis and Editing Tools

TestverfahrenTesting Techniques

Verwaltung von sicherheitsrelevantem CodeCritical Code Management

Erstellen von GefahrenmodellenThreat Modeling

Die Bedrohungsmodellierung ist eine Kernkomponente von SDL und wird zum Erstellen eines Profils für ein System verwendet, um potenzielle Sicherheitsrisiken zu ermitteln.Threat modeling is a core component of the SDL, and is used to profile a system to determine potential security vulnerabilities. Sobald die Schwachstellen identifiziert sind, kann mithilfe der Gefahrenmodelle zudem sichergestellt werden, dass entsprechende Maßnahmen zur Risikominderung zum Einsatz kommen.Once the vulnerabilities are identified, threat modeling also ensures that appropriate mitigations are in place.

Im Überblick umfasst die Erstellung von Gefahrenmodellen die folgenden Hauptschritte, hier am Beispiel eines Lebensmittelmarkts verdeutlicht:At a high level, threat modeling involves the following key steps by using a grocery store as an example:

  1. Ressourcenermittlung.Identifying Assets. Zu den Ressourcen eines Lebensmittelmarkts können etwa die Mitarbeiter, ein Tresor, Registrierkassen und der Warenbestand gehören.A grocery store's assets might include employees, a safe, cash registers, and inventory.

  2. Aufzählen der Einstiegspunkte.Enumerating Entry Points. Die Einstiegspunkte eines Lebensmittelmarkts können etwa die Vorder- und Hintertüren, Fenster, das Ladedeck und die Öffnungen der Klimaanlage zählen.A grocery store's entry points might include the front and back doors, windows, the loading dock, and air conditioning units.

  3. Untersuchen von Angriffen auf Ressourcen mithilfe der Einstiegspunkte.Investigating Attacks against Assets using Entry Points. 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.One possible attack could target a grocery store's safe asset through the air conditioning entry point; the air conditioning unit could be unscrewed to allow the safe to be pulled up through it and out of the store.

Die Erstellung von Gefahrenmodellen wird in WPFWPF durchgängig angewendet und schließt folgende Punkte ein:Threat modeling is applied throughout WPFWPF and includes the following:

  • Die Weise, in der der XAMLXAML-Parser Dateien liest, Text zu entsprechenden Objektmodellklassen zuordnet und den tatsächlichen Code erstellt.How the XAMLXAML parser reads files, maps text to corresponding object model classes, and creates the actual code.

  • Wie ein Fensterhandle (hWnd) erstellt wird, Nachrichten sendet und zum Rendern der Inhalte eines Fensters verwendet wird.How a window handle (hWnd) is created, sends messages, and is used for rendering the contents of a window.

  • Wie die Datenbindung Ressourcen erhält und mit dem System interagiert.How data binding obtains resources and interacts with the system.

Diese Gefahrenmodelle sind wichtig, um die Anforderungen an den Sicherheitsentwurf und die Maßnahmen der Gefahrenabwehr während des Entwicklungsprozesses zu bestimmen.These threat models are important for identifying security design requirements and threat mitigations during the development process.

Quellcodeanalyse und BearbeitungstoolsSource Analysis and Editing Tools

Zusätzlich zu den manuellen Sicherheits Code Review Elementen der SDL verwendet das WPFWPF Team mehrere Tools für die Quell Analyse und zugehörige Änderungen, um Sicherheitsrisiken zu verringern.In addition to the manual security code review elements of the SDL, the WPFWPF team uses several tools for source analysis and associated edits to decrease security vulnerabilities. Es wird eine breite Palette von Tools für den Quellcode verwendet, darunter die folgenden:A wide range of source tools are used, and include the following:

  • 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.FXCop: Finds common security issues in managed code ranging from inheritance rules to code access security usage to how to safely interoperate with unmanaged code. Weitere Informationen finden Sie unter FXCop.See 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.Prefix/Prefast: Finds security vulnerabilities and common security issues in unmanaged code such as buffer overruns, format string issues, and error checking.

  • Gesperrte APIs: Durchsucht den Quellcode, um die versehentliche Verwendung von Funktionen zu erkennen, die für Sicherheitsprobleme bekannt sind, wie etwa strcpy.Banned APIs: Searches source code to identify accidental usage of functions that are well-known for causing security issues, such as strcpy. Nach der Identifizierung werden diese Funktionen durch Alternativen ersetzt, die sicherer sind.Once identified, these functions are replaced with alternatives that are more secure.

TestverfahrenTesting Techniques

WPFWPF verwendet eine Reihe von Techniken zum Testen der Sicherheit, darunter:uses a variety of security testing techniques that include:

  • Whiteboxtests: Tester zeigen Quellcode an und erstellen dann exploittests.Whitebox Testing: Testers view source code, and then build exploit tests.

  • Blackboxtests: Tester suchen Sicherheitsexploits, indem Sie APIs und Funktionen untersuchen und dann versuchen, das Produkt anzugreifen.Blackbox Testing: Testers try to find security exploits by examining the API and features, and then try to attack the product.

  • Zurückverfolgen von Sicherheitsproblemen anderer Produkte: Sofern sie relevant sind, werden Sicherheitsprobleme von verwandten Produkten getestet.Regressing Security Issues from other Products: Where relevant, security issues from related products are tested. Beispielsweise wurden entsprechende Varianten von ungefähr 60 Sicherheitsproblemen für Internet Explorer identifiziert, und es wurde versucht, ihre Anwendbarkeit zu WPFWPF.For example, appropriate variants of approximately sixty security issues for Internet Explorer have been identified and tried for their applicability to WPFWPF.

  • 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.Tools-Based Penetration Testing through File Fuzzing: File fuzzing is the exploitation of a file reader's input range through a variety of inputs. Ein Beispiel, wo diese Technik in WPFWPF verwendet wird, besteht in der Prüfung von Code zur Bildentschlüsselung auf Fehler.One example in WPFWPF where this technique is used is to check for failure in image decoding code.

Verwaltung von sicherheitsrelevantem CodeCritical Code Management

Bei XAML-Browser Anwendungen (XBAPs) erstellt WPFWPF eine Sicherheits Sandbox mithilfe .NET Framework Unterstützung für das Markieren und Nachverfolgen von Sicherheits kritischem Code, der Berechtigungen erweitert (siehe sicherheitsrelevante Methodik in WPF-Sicherheitsstrategie). Plattformsicherheit).For XAML browser applications (XBAPs), WPFWPF builds a security sandbox by using .NET Framework support for marking and tracking security-critical code that elevates privileges (see Security-Critical Methodology in WPF Security Strategy - Platform Security). Angesichts der hohen Qualitätsanforderungen bei sicherheitskritischem Code wird derartiger Code durch eine zusätzliche Ebene der Quellcodeverwaltung und Sicherheitsüberwachung geschützt.Given the high security quality requirements on security critical code, such code receives an additional level of source management control and security audit. Annähernd 5 % bis 10 % von WPFWPF bestehen aus sicherheitskritischem Code, der von einem dedizierten Team überprüft wird.Approximately 5% to 10% of WPFWPF consists of security-critical code, which is reviewed by a dedicated reviewing team. Der Quellcode und der Eincheckvorgang werden verwaltet, indem sicherheitskritischer Code nachverfolgt und jede kritischen Entität (d. h. eine Methode, die kritischen Code enthält) ihrem abgezeichneten Zustand zugeordnet wird.The source code and check-in process is managed by tracking security critical code and mapping each critical entity (i.e. a method that contains critical code) to its sign off state. Der abgezeichnete Zustand schließt die Namen eines oder mehrerer Prüfer ein.The sign off state includes the names of one or more reviewers. Bei jedem täglichen Build von WPFWPF wird der kritische Code mit dem in vorhergehenden Builds verglichen, um nicht genehmigte Änderungen aufzuspüren.Each daily build of WPFWPF compares the critical code to that in previous builds to check for unapproved changes. Wenn ein Programmierer kritischen Code ohne Genehmigung des Prüferteams ändert, wird der betreffende Code erkannt und sofort ersetzt.If an engineer modifies critical code without approval from the reviewing team, it is identified and fixed immediately. Dieses Vorgehen ermöglicht die Anwendung und Aufrechterhaltung eines sehr hohen Maßes an Genauigkeit bei WPFWPF-Sandboxcode.This process enables the application and maintenance of an especially high level of scrutiny over WPFWPF sandbox code.

Siehe auchSee also