过去几年,Netlify 花费了大量时间将静态应用程序安全测试 (SAST) 工具集成到 CI 管道中,我们注意到,即使是最出色的 SAST 工具在实践中也经常会失败。在决定使用 GitHub Advanced Security 之前,我们评估并尝试了许多不同类型的工具。经过仔细评估,我们决定使用 GitHub Advanced Security,采用一,我们想与您分享我们的经验。
SAST 的挑战(以及我们选择 GitHub Advance Security 的原因)
为了实现所需的扫描后功能,在开 ws 粉丝 始使用 GitHub Advanced Security 之前,我们主要使用脚本语言包装开源工具以添加我们认为必要的功能。这些包装的 OSS 工具看起来像 ‣ 或 ‣。但 Netlify 的开发人员不希望需要额外的配置文件来管理安全扫描功能,如抑制、问题创建和 Slack 警报。此外,采用这种方法,我们的安全工程团队将无法维护这些包装的工具。因此,我们开始寻找市场上已经存在的综合工具。
首先,每个人都知道我们需要能够找到高质量发现的安全工具。但除了发现的质量之外,专注于 SAST 的安全工程师面临的主要挑战是以有价值且可操作的方式将漏洞通知提供给开发人员。由于各种原因,这极具挑战性,每个原因都有必须了解的注意事项。以下是我们认为最紧迫的挑战:
从 CI UI 到 Triage UI 的上下文切换
想找到一种方法来让开发人员精 5 种创新钢门设计,增强家居安全 疲力竭吗?让他们跳转到各种安全 UI 来分类他们的问题。上下文切换可能是开发过程中最令人沮丧的事情之一。您的构建没有通过,因为状态检查要求您跳转到某个安全工具 UI,您必须学习如何导航,并解决一些漏洞问题,而作为开发人员,您不希望这些问题存在。通常在完成所有这些工作后,我们会发现结果是误报。上下文切换是一个巨大的倦怠问题。
此外,作为成本后果,大多数这些工具都按用户许可证收费,因此更少的工具中的更少用户意味着更多的成本。使用 GitHub Advanced Security 只需在同一个 UI 中切换选项卡,在一个地方处理多个 SAST 需求,例如代码扫描、秘密扫描和依赖关系分析。
调整警报严重性
能够灵活地定义 CI 停止构建的严重程度(即按服务或按存储库)至关重要。GitHub 通过允许存储库管理员进行个性化存储库设置,利用高级安全性释放了安全团队的时间。例如,团队可以从根据High or greater
严重程度阻止构建开始。然后,一旦他们手动对所有中等发现进行分类,他们就可以调整以在Medium or greater
发现新发现时阻止构建。这种按严重程度向下工作的方法与迭代安全改进相矛盾。第一天要求太多会导致开发人员倦怠,并对安全工具和策略产生厌恶。
抑制 秘密扫描的抑制是必须的。如果 移动数据库 团队在许多测试中使用绝对不敏感的模拟秘密令牌,则不应不断提醒他们。反复的误报是造成警报疲劳和开发人员倦怠的好方法。Github Advanced Security 在 repo 级别和组织级别都有抑制功能,这很棒。
创建可行的问题 GitHub CodeQL 代码扫描可以为它发现的代码漏洞创建可行的 GitHub 问题。请注意,在我们之前使用的两个工具中(本文开头提到),“创建问题”是必须的。维护此功能可能会有问题。例如,对于每个发现,在创建问题之前,我们必须检查是否已经创建了问题。通过分析,我们发现