mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-06 23:43:07 +02:00
Links: .NET Desktop - framework\wpf (#109)
* Links: .NET Desktop - framework\wpf * Apply suggestions from code review Co-authored-by: Andy De George <[email protected]>
This commit is contained in:
co-authored by
Andy De George
parent
c1d6e1d23e
commit
674b773578
@@ -12,6 +12,7 @@ helpviewer_keywords:
|
||||
ms.assetid: 0fc04394-4e47-49ca-b0cf-8cd1161d95b9
|
||||
---
|
||||
# WPF Security Strategy - Security Engineering
|
||||
|
||||
Trustworthy Computing is a Microsoft initiative for ensuring the production of secure code. A key element of the Trustworthy Computing initiative is the Microsoft Security Development Lifecycle (SDL). The SDL is an engineering practice that is used in conjunction with standard engineering processes to facilitate the delivery of secure code. The SDL consists of ten phases that combine best practices with formalization, measurability, and additional structure, including:
|
||||
|
||||
- Security design analysis
|
||||
@@ -25,6 +26,7 @@ Trustworthy Computing is a Microsoft initiative for ensuring the production of s
|
||||
- Post release product security management
|
||||
|
||||
## WPF Specifics
|
||||
|
||||
The [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] engineering team both applies and extends the SDL, the combination of which includes the following key aspects:
|
||||
|
||||
[Threat Modeling](#threat_modeling)
|
||||
@@ -36,7 +38,9 @@ Trustworthy Computing is a Microsoft initiative for ensuring the production of s
|
||||
[Critical Code Management](#critical_code)
|
||||
|
||||
<a name="threat_modeling"></a>
|
||||
|
||||
### Threat Modeling
|
||||
|
||||
Threat modeling is a core component of the SDL, and is used to profile a system to determine potential security vulnerabilities. Once the vulnerabilities are identified, threat modeling also ensures that appropriate mitigations are in place.
|
||||
|
||||
At a high level, threat modeling involves the following key steps by using a grocery store as an example:
|
||||
@@ -58,17 +62,21 @@ Trustworthy Computing is a Microsoft initiative for ensuring the production of s
|
||||
These threat models are important for identifying security design requirements and threat mitigations during the development process.
|
||||
|
||||
<a name="tools"></a>
|
||||
|
||||
### Source Analysis and Editing Tools
|
||||
|
||||
In addition to the manual security code review elements of the SDL, the [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] team uses several tools for source analysis and associated edits to decrease security vulnerabilities. A wide range of source tools are used, and include the following:
|
||||
|
||||
- **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. See [FXCop](https://docs.microsoft.com/previous-versions/dotnet/netframework-3.0/bb429476%28v=vs.80%29).
|
||||
- **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. See [FXCop](/previous-versions/dotnet/netframework-3.0/bb429476%28v=vs.80%29).
|
||||
|
||||
- **Prefix/Prefast**: Finds security vulnerabilities and common security issues in unmanaged code such as buffer overruns, format string issues, and error checking.
|
||||
|
||||
- **Banned APIs**: Searches source code to identify accidental usage of functions that are well-known for causing security issues, such as `strcpy`. Once identified, these functions are replaced with alternatives that are more secure.
|
||||
|
||||
<a name="techniques"></a>
|
||||
|
||||
### Testing Techniques
|
||||
|
||||
[!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] uses a variety of security testing techniques that include:
|
||||
|
||||
- **Whitebox Testing**: Testers view source code, and then build exploit tests.
|
||||
@@ -80,7 +88,9 @@ Trustworthy Computing is a Microsoft initiative for ensuring the production of s
|
||||
- **Tools-Based Penetration Testing through File Fuzzing**: File fuzzing is the exploitation of a file reader's input range through a variety of inputs. One example in [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] where this technique is used is to check for failure in image decoding code.
|
||||
|
||||
<a name="critical_code"></a>
|
||||
|
||||
### Critical Code Management
|
||||
|
||||
For XAML browser applications (XBAPs), [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] 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](wpf-security-strategy-platform-security.md)). Given the high security quality requirements on security critical code, such code receives an additional level of source management control and security audit. Approximately 5% to 10% of [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] consists of security-critical code, which is reviewed by a dedicated reviewing team. 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. The sign off state includes the names of one or more reviewers. Each daily build of [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] compares the critical code to that in previous builds to check for unapproved changes. If an engineer modifies critical code without approval from the reviewing team, it is identified and fixed immediately. This process enables the application and maintenance of an especially high level of scrutiny over [!INCLUDE[TLA2#tla_winclient](../../includes/tla2sharptla-winclient-md.md)] sandbox code.
|
||||
|
||||
## See also
|
||||
|
||||
Reference in New Issue
Block a user