WPF 安全策略 - 安全工程
可信计算是 Microsoft 为确保生成安全代码而首创的一项技术。 可信计算计划的关键要素是 Microsoft 安全开发生命周期 (SDL)。 SDL 是与标准工程过程一同用于简化提交安全代码的工程实践。 SDL 包含十个阶段,将规范化、可度量性和附加结构的最佳实践结合在一起,包括:
安全设计分析
基于工具的质量检查
渗透测试
最终安全评审
发布后产品安全管理
WPF 详细信息
WPF 工程团队可以应用和扩展 SDL,该产品组合包括以下主要方面:
威胁建模
威胁建模是 SDL 的核心组件,用于分析系统,以确定潜在的安全漏洞。 一旦确定漏洞,威胁模型还可以确保采取适当的缓解措施。
我们以一个杂货店为例,说明威胁模型在高级别上所涉及的以下关键步骤:
确定资产。 杂货店的资产可能包括员工、保险箱、收银机和库存。
枚举入口点。 杂货店的入口点可能包括前门和后门、窗户、装货区和空调设备。
使用入口点调查针对资产的攻击。 可能进行的攻击包括通过空调入口点来对杂货店的保险箱资产进行攻击;有人可能会将空调设备拆掉,将保险箱通过空调处拉出杂货店。
威胁建模应用于整个 WPF,包含以下各项:
XAML 分析器读取文件、将文本映射到相应的对象模型类并创建实际代码的方式。
创建窗口句柄 (hWnd) 并通过其发送消息和呈现窗口内容的方式。
数据绑定获取资源以及与系统交互的方式。
这些威胁模型对于在开发过程中确定安全设计需求以及缓解威胁非常重要。
源分析和编辑工具
除 SDL 的手动安全代码评审元素外,WPF 团队使用多个工具进行源分析和关联编辑,目的是减少安全漏洞。 使用了多种源工具,包括以下各项:
FXCop:查找托管代码中的常见安全问题,包括继承规则、代码访问安全性的使用情况以及安全地与非托管代码交互操作的方式。 请参阅FXCop。
Prefix/Prefast:查找非托管代码中的安全漏洞和常见安全问题,例如缓冲区溢出、格式字符串问题以及错误检查。
已禁止的 API:搜索源代码,以识别出众所周知的因意外使用而引发安全问题的函数,例如
strcpy
。 一旦识别出这些函数,将用更安全的替代函数来取代它们。
测试技术
WPF 使用多种安全测试技术,包括:
白盒测试:测试人员查看源代码,然后生成问题测试。
黑盒测试:测试人员尝试通过检查 API 和功能来查找安全问题,然后尝试对产品进行攻击。
对来自其他产品的安全问题进行回归测试:对来自相关产品的相关安全问题进行测试。 例如,对于 Internet Explorer,已确定出大约六十个安全问题的相关变体,并已对它们在 WPF 上的适用性进行了测试。
借助文件模糊化执行基于工具的渗透测试:文件模糊化指利用文件读取器多种输入的输入范围。 在 WPF 中的一个示例,使用此技术的一个示例就是检查图像解码代码的错误。
关键代码管理
对于 XAML 浏览器应用程序 (XBAP),WPF 通过使用 .NET Framework 对可提升特权的安全关键代码的标记和跟踪支持来生成安全沙盒(请参阅 WPF 安全策略 - 平台安全性中的“安全关键方法”)。 考虑到对安全关键代码有较高的安全质量要求,因此需要对此类代码进行其他级别的源管理控制和安全审核。 大约有 5% 到 10% 的 WPF 由安全关键代码组成,这些代码由专门的审核团队进行审核。 通过跟踪安全关键代码和将每个关键实体(即,包含关键代码的方法)映射到其签署状态来对源代码和签入过程进行管理。 签署状态包括一个或多个审阅者的姓名。 WPF 的每个日常版本都将关键代码与前一版本中的该代码进行比较,以检查未经审批的更改。 如果工程师未经审核团队的批准而自行修改关键代码,则将识别并立即修复该代码。 通过这一过程,可以对 WPF 沙盒代码应用级别特高的审核并加以维护。
警告
XBAP 需要旧版浏览器(例如 Internet Explorer 和旧版 Firefox)才能运行。 Windows 10 和 Windows 11 通常不支持这些较旧的浏览器。 由于安全风险,新式浏览器不再支持 XBAP 应用所需的技术。 不再支持启用 XBAP 的插件。 有关详细信息,请参阅有关 WPF 浏览器托管应用程序 (XBAP) 的常见问题。