WPF 安全策略 — 安全工程

可信计算是 Microsoft 为确保生成安全代码而首创的一项技术。 可信计算技术的一个关键要素就是 Microsoft Security Development Lifecycle (SDL)。 SDL 是与标准工程过程一同用于简化提交安全代码的工程实践。 SDL 包含十个阶段,将规范化、可度量性、附加结构的最佳做法结合在一起,包括:

  • 安全设计分析

  • 基于工具的质量检查

  • 渗透测试

  • 最终安全性评审

  • 发布后产品安全管理

WPF 详细信息

WPF 工程团队可以应用和扩展 SDL,该产品组合包括以下关键方面:

威胁模型

安全分析和编辑工具

测试技术

关键代码管理

威胁模型

威胁模型是 SDL 的核心组件,可用于分析系统,以确定潜在的安全漏洞。 一旦确定漏洞,威胁模型也可以确保在适当的位置采取适当的缓解措施。

我们以一个杂货店为例,说明一下威胁模型在更高的层次上所涉及的以下关键步骤:

  1. 确定资产。 杂货店的资产可能会包括员工、保险箱、收款机和库存。

  2. 枚举入口点。 百货店的入口点可能包括前门和后门、窗户、装货区和空调设备。

  3. 使用入口点调查针对资产的攻击。 其中有的攻击可能是通过空调 入口点来对杂货店的保险箱 资产进行攻击;有人可能会将空调设备拆掉,将保险箱通过空调处拉出杂货店。

威胁模型可应用于整个 WPF,包含以下各项:

  • XAML 分析器读取文件、将文本映射到相应的对象模型类并创建实际代码的方式。

  • 创建窗口句柄 (hWnd) 并通过其发送消息和呈现窗口内容的方式。

  • 数据绑定获取资源以及与系统交互的方式。

这些威胁模型对于在开发过程中确定安全设计需求以及缓解威胁而言是很重要的。

源分析和编辑工具

除 SDL 的手动安全代码评审元素外, WPF 团队使用多个工具进行源分析和关联编辑,目的是减少安全漏洞。 使用了多种源工具,包括以下各项:

  • FXCop:查找托管代码中的常见安全问题,包括继承规则、代码访问安全的使用情况以及安全地与非托管代码交互操作的方式。 请参见 FXCop

  • Prefix/Prefast:查找非托管代码中的安全漏洞和常见安全问题,例如缓冲区溢出、格式字符串问题以及错误检查。

  • Banned API:搜索源代码,以识别出众所周知的因意外使用而引发安全问题的函数,例如 strcpy。 一旦识别出这些函数,将用更安全的替代函数来取代它们。

测试技术

WPF 使用多种安全测试技术,包括:

  • 白盒测试:测试人员可以查看源代码,然后生成利用测试

  • 黑盒测试:测试人员尝试通过检查 API 和功能来查找安全问题,然后尝试对产品进行攻击。

  • 对来自相关产品的相关安全问题进行回归测试:对来自相关产品的相关安全问题进行测试。 例如,对于 Internet Explorer,已确定出大约六十个安全问题的相关变体,并已对它们在 WPF 上的适用性进行了测试。

  • 借助文件模糊化执行基于工具的渗透测试:文件模糊化指利用文件读取器多种输入的输入范围。 在 WPF 中,使用此技术的一个示例就是检查图像解码代码的错误。

关键代码管理

对于 XAML browser applications (XBAPs),WPF 可通过使用 .NET Framework 对标记和跟踪可提升特权的安全-关键代码的支持来生成安全沙盒(请参见 WPF 安全策略 — 平台安全性中的“安全-关键方法”)。 考虑到安全关键代码对安全质量有着较高的要求,因此需要对此类代码进行其他级别的源管理控制和安全审核。 大约有 5% 到 10% 的 WPF 包含有安全关键代码,这些代码由专门的审核团队进行审核。 可通过跟踪安全关键代码并将每个关键实体(即, 包含关键代码的方法)映射到其签署状态来对源代码和签入过程进行管理。 签署状态包括一个或多个审阅者的姓名。 WPF 的每个日常版本都将关键代码与前一版本中的该代码进行比较,以检查未经审批的更改。 如果工程师未经审核团队的批准而自行修改关键代码,则该代码将标记出来并立即修复。 通过这一过程,可以对 WPF 沙盒代码应用级别甚高的审核并加以维护。

请参见

概念

安全性 (WPF)

WPF 部分信任安全

WPF 安全策略 — 平台安全性

其他资源

Trustworthy Computing

Application Threat Modeling

Security Guidelines: .NET Framework 2.0