Skip to main content

大规模解决安全警报的最佳做法

指导如何创建成功的安全活动,这些活动需要开发人员的参与,并能够帮助其了解安全编码。

谁可以使用此功能?

启用了 GitHub Secret Protection or GitHub Code Security 的 GitHub Team 或 GitHub Enterprise Cloud 上的组织

成功的安全活动的构成要素

大规模处理和解决警报的成功安全活动具有许多共同特点,包括:

  • 选择要解决的一组相关安全警报。
  • 对于代码活动,请尽可能使用 Copilot Autofix 建议来帮助开发人员更快、更高效地修复警报。
  • 确保活动管理者可以参与协作、审查,以及解决与修复相关的问题。
  • 提供对活动中所含警报类型的指导信息的访问权限。
  • 使 GitHub Copilot 聊天 可供开发人员用于了解相关活动中安全警报所强调的漏洞。
  • 定义相关活动的实际截止时间,记录要解决的警报数。
  • 向开发团队宣传合作事宜,并为组织确定开发人员参与协作的最佳方式。

有关开发人员体验的信息,请参阅 修复安全活动中的警报

选择要解决的安全警报

你的第一个想法可能是识别所有最紧急的警报,并创建一个安全活动来解决这些警报。 如果开发人员已对安全编码有充分了解,并非常想要解决潜在漏洞,对贵公司而言这可能是成功达成目的的方法。 但如果需要先积累安全编码、公开的机密和常见漏洞的相关知识,应采取更具策略性的方法。

代码活动的示例方法

为了提高人们对跨站脚本漏洞的认识并修复此问题,你可以:

  • 使用 OWASP Foundation 中的资源在仓库中创建面向开发人员的指导性内容,请参阅跨站脚本 (XSS)
  • 创建一个活动,以修复所有支持 Copilot Autofix 的此类漏洞警报,可使用 autofix:supported 筛选器。
  • 在活动描述中包含指向教育内容的链接。
  • 举办培训课程或其他活动来强调这一机会:即在设法解决实际 bug 的同时树立对安全编码的信心。
  • 确保所分配的管理活动的安全团队成员可以审查为修复活动警报所创建的拉取请求,并根据需要参与协作。

机密活动的示例方法

注意

secret scanning 警报的相关活动当前处于 公共预览版 阶段,可能随时更改。

为了提高人们对密码暴露问题的认识并修复此问题,你可以:

  • 为开发人员创建有关安全存储密码的指导性内容,例如将机密存储为 GitHub 机密,请参阅“了解 GitHub 机密类型”。
  • 创建一个活动来解决有关公开的密码的所有警报,并在活动描述中包含指导性内容的链接。
  • 确保所分配的负责管理该活动的安全团队成员随时待命,以确保机密按合规要求完成撤销与轮换,并根据需要开展协作。

活动筛选模板

选择要包含在安全活动中的警报时,你可以使用安全报页面上的任何筛选器来定义警报子集。 也可以选择一个活动模板,使用其中一个用于常见需求的预定义的筛选器,例如:“跨网脚本 (CWE-79)”。

草稿活动

建议先创建一个草稿活动,列出将包含在活动中的警报以及相关活动详情,以便在正式发布前就活动范围进行协作讨论。 有关创建活动草稿的指导,请参阅“创建和管理安全活动”。

安全活动限制

以下限制旨在鼓励采取一种平衡和量化的方法来解决代码中的警报。 一种一次处理几组目标警报的迭代方法可能会带来可持续的安全态势长期改变。

  • 一次最多执行 10 个有效的安全活动(对结束的活动没有限制)。
  • 每个活动最多可包含 1000 条警报。

如果选择创建一个超过这些限制的活动,则系统会忽略警报以使此活动符合限制。 存储库中最新推送的警报将优先纳入活动中。

创建安全活动时,你必须选择一个或多个“活动管理者”。 活动管理者必须是以下人员之一:

  • 具有组织所有者角色或安全管理员角色的用户。
  • 具有组织所有者角色或安全管理员角色的团队成员。

当开发人员参与活动时,他们可以看到活动管理员的姓名。 为了支持开发人员与活动管理员之间的通信,在创建活动时,你还可以提供联系人链接,例如到 GitHub Discussions 或其他通信渠道的链接。

如果要提高警报的修正率并提升安全团队的知识水平,那么这是与开发人员建立协作关系的重要机会。 理想情况下,活动管理员可以通过联系人链接回答问题并协作处理困难的修复。 活动管理者还应能够在整个活动过程中审查修复的拉取请求。

为活动创建议题

创建活动时,可以选择在活动所涉及的每个仓库中自动打开 GitHub 议题。 这意味着可以在团队项目板上更轻松地跟踪、分配和管理工作。 此外,更新活动详细信息(如联系链接或截止日期)时,议题正文也会自动同步更新为最新信息。 当活动到达截止日期、被删除或关闭时,系统会自动在对应议题上发布评论。

这种方式可以在开发者现有的工作流中提供清晰、最新的上下文信息,从而提升开发者的参与度。 有关如何自动创建活动议题的信息,请参阅“创建和管理安全活动”。

将安全培训与安全活动相结合

如果安全团队已经为开发人员提供了安全编码方面的培训,那么加强学习的一个好方法是创建一个活动并选择警报,以让开发人员能够使用培训课程中学习的技能。 即使没有正式的培训计划,提供有关活动中包含的安全漏洞类型、如何修复这些安全漏洞以及如何测试修复的示例的信息也很有意义。 这将简化活动管理员的角色,因为他们将能够引导开发人员获取这些资源来解答基本问题。

OWASP Foundation 提供了许多用于了解最常见漏洞的资源,MITRE Corporation 维护了一个常见漏洞的详细列表,请参阅关于 OWASP Foundation关于 CWE

为代码漏洞学习提供 AI 支持

GitHub Copilot Autofix 会自动触发,为每条 code scanning 警报提供解决方案建议。 但是,开发人员通常会想要详细了解原始代码为何不安全,以及如何测试解决方案是否正确且不会破坏其他组件。

GitHub Copilot 对话助手是开发人员的重要工具,可用于解答有关安全编码、如何修复安全警报以及测试修复方案等问题。 核查确认组织中所有开发人员是否均有权访问其 IDE 与 GitHub 中的 Copilot,并参阅 向组织成员授予对 GitHub Copilot 的访问权限

开始安全活动和定义截止时间的注意事项

与任何其他项目一样,一定要确定一个符合实际的时间尺度,以避免阻碍开发人员参与安全活动。 除非贵公司为减少技术债务正在通过规模更大的活动来解决安全警报,否则大多数开发人员将很难抽出时间来解决警报。 你需要根据开发人员可在计划的任务之间找到的时间来估算修正率。 此外,始终还有必要查看开发人员可能正在努力遵循的关键公司截止时间并检查国定假日。

后续步骤

  •         [AUTOTITLE](/code-security/securing-your-organization/fixing-security-alerts-at-scale/creating-managing-security-campaigns)