介绍 SDL 安全工具自动化

已完成

为了支持开发人员在代码开发期间和发布后实施安全要求,Microsoft 提供了一套安全开发工具,用于自动检查源代码中的安全缺陷和漏洞。 Microsoft 定义并发布可供开发人员使用的已批准工具列表,例如编译器和开发环境及其内置安全检查。 我们的开发人员使用最新版本的受批准工具来利用新的安全功能。

除了提供安全开发工具,Microsoft 还使用自动化安全工具实现和强制实施 SDL 代码分析要求。 其中许多工具内置于提交管道中,并在签入时以及在编译和测试新版本时自动分析代码是否有安全缺陷。 必须先修复自动化安全工具发现的问题,新版本才能通过安全评审并批准发布。

我们的自动化安全工具分为几个广泛的类别,用于在不同的开发阶段测试代码,从代码提交到发布代码以在生产环境中运行。 下表总结了我们在 Microsoft 中用于 SDL 代码分析的工具类型。

安全工具 说明
静态代码分析 分析源代码是否存在潜在的安全缺陷,包括代码中是否存在凭据。
二进制分析 在二进制代码级别评估漏洞,以确认代码已准备好生产。
加密扫描 验证源代码和代码执行中的加密最佳做法。
配置验证 根据安全标准和最佳做法分析生产系统的配置。

静态代码分析和二进制分析

在编译之前分析源代码提供了高度可缩放的安全代码评审方法,有助于确保遵循安全编码策略。 我们的静态代码分析工具可扫描源代码中的常见漏洞、安全漏洞(例如不安全的功能)以及源代码中嵌入的凭据和其他机密。 这些工具发现的缺陷被标记为可供开发人员修复的 bug。

大多数静态代码分析工具都集成到提交管道中,以便在每次生成软件时识别漏洞,并防止使用不安全的代码。 我们还将静态代码分析工具集成到开发人员环境中,以发现某些缺陷,例如不安全函数的存在,并在开发人员主动编码时将不安全的代码替换为更安全的代码。

除了对源代码进行静态分析外,我们还使用自动化工具在二进制级别扫描已编译代码是否存在安全漏洞,例如编译器/链接器设置和其他与安全性相关的二进制特征。 在每个生成上执行二进制分析工具,以检测二进制安全缺陷并标记它们以进行修正,然后才能发布版本。

加密扫描

Microsoft 负责确保使用强加密传输或存储所有数据(包括安全敏感信息和管理控制数据)免受意外泄漏或更改的影响。 SDL 将开发人员限制为已批准的加密模块,这些模块能够可靠且安全地实现加密。 为了强制实施此策略,我们的工具会在源代码和代码执行期间扫描和验证加密实现。 对加密的不安全使用会被标记为修正,并在安全评审期间进行验证。

配置验证

在 Microsoft,我们的运营团队使用 DevOps 模型来与开发团队集成。 作为 DevOps 的一部分,在版本发布后到生产环境中,我们将继续验证代码的安全操作。 操作团队使用安全部署清单、基线配置扫描、漏洞扫描和基于主机的入侵检测系统来验证软件是否已根据安全最佳做法进行配置和操作。 操作团队检测到的配置缺陷将被标记为需要修正,而运营团队发现的任何 bug 都将分配给相应的开发团队,以便在代码级别进行修复。 通过将操作安全性集成到 SDL 要求中,我们可以帮助确保产品和服务的持续安全性,即使在发布后也是如此。

了解详细信息