WPF 安全策略 - 安全工程

可信计算是确保安全代码生产的Microsoft计划。 可信计算计划的关键要素是Microsoft安全开发生命周期(SDL)。 SDL 是一种工程实践,与标准工程流程结合使用,有助于交付安全代码。 SDL 包含十个阶段,这些阶段将最佳做法与正式化、可度量性和附加结构相结合,包括:

  • 安全设计分析

  • 基于工具的质量检查

  • 渗透测试

  • 最终安全评审

  • 发布后产品安全管理

WPF 详细信息

WPF 工程团队同时应用和扩展 SDL,其中包括以下关键方面:

威胁建模

安全分析和编辑工具

测试技术

关键代码管理

威胁建模

威胁建模是 SDL 的核心组件,用于分析系统以确定潜在的安全漏洞。 确定漏洞后,威胁建模还可确保适当的缓解措施到位。

概括而言,威胁建模涉及以下关键步骤,方法是使用杂货店作为示例:

  1. 确定资产。 杂货店的资产可能包括员工、安全、收银机和库存。

  2. 枚举入口点。 杂货店的入口点可能包括前门和后门、窗户、装载码头和空调单元。

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

威胁建模在整个 WPF 中应用,包括以下内容:

  • XAML 分析程序如何读取文件、将文本映射到相应的对象模型类,以及创建实际代码。

  • 如何创建窗口句柄(hWnd),发送消息,并用于呈现窗口的内容。

  • 数据绑定如何获取资源并与系统交互。

这些威胁模型对于在开发过程中识别安全设计要求和威胁缓解非常重要。

源分析和编辑工具

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

  • FXCop:查找托管代码中常见的安全问题,从继承规则到代码访问安全用法,以及如何安全地与非托管代码进行互操作。 请参阅 FXCop

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

  • 禁止 API:搜索源代码以识别已知导致安全问题(如 strcpy)的函数的意外用法。 标识后,这些函数将替换为更安全的替代项。

测试技术

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

  • Whitebox Testing:测试人员查看源代码,然后生成攻击测试。

  • Blackbox 测试:测试人员尝试通过检查 API 和功能来查找安全攻击,然后尝试攻击产品。

  • 对来自其他产品的安全问题进行回归测试:对来自相关产品的相关安全问题进行测试。 例如,已确定 Internet Explorer 大约 60 个安全问题的相应变体,并尝试其适用于 WPF。

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

关键代码管理

对于 XAML 浏览器应用程序(XBAP),WPF 通过使用 .NET Framework 支持来生成安全沙盒,以标记和跟踪提升特权的安全关键代码(请参阅 WPF 安全策略 - 平台安全性中的 Security-Critical 方法)。 鉴于安全关键代码的安全质量要求很高,此类代码会收到额外的源代码管理控制和安全审核级别。 大约有 5% 到 10% 的 WPF 由安全关键代码组成,这些代码由专门的审核团队进行审核。 源代码和签入流程通过跟踪安全关键代码进行管理,并将每个关键实体(即包含关键代码的方法)映射到其审批状态。 签署状态包括一个或多个审阅者的姓名。 WPF 的每个每日版本都会将关键代码与先前版本中的关键代码进行比较,以检查未经批准的更改。 如果工程师未经评审团队批准修改关键代码,则会立即识别并修复它。 此过程使得可以对 WPF 沙盒代码执行并维护特别高标准的审查。

警告

XBAP 要求旧版浏览器运行,例如 Internet Explorer 和旧版 Firefox。 这些较旧的浏览器通常在 Windows 10 和 Windows 11 上不受支持。 由于安全风险,新式浏览器不再支持 XBAP 应用所需的技术。 不再支持启用 XBAP 的插件。 有关详细信息,请参阅 有关 WPF 浏览器托管应用程序(XBAP)的常见问题解答。

另请参阅