Note
安全性活动目前为公共预览版,可能会更改。
成功的安全活动的构成要素
大规模处理和解决警报的成功安全活动具有许多共同特点,包括:
- 选择要解决的一组相关安全警报。
- 确保安全活动的管理者有时间参与协作、审查,以及解决与警报相关的问题。
- 提供对活动中所含警报类型的指导信息的访问权限。
- 使 GitHub Copilot Chat 可供开发人员用于了解相关活动中安全警报所强调的漏洞。
- 定义相关活动的实际截止时间,记录要解决的警报数。
- 将协作需求传达给开发人员团队,并为组织确定开发人员参与协作的最优方式。
有关开发人员体验的信息,请参阅“修复安全活动中的警报”。
选择要解决的安全警报
你的第一个想法可能是识别所有最紧急的警报,并创建一个安全活动来解决它们。 如果开发人员已对安全编码有充分了解,并非常想要解决潜在漏洞,对贵公司而言这可能是成功达成目的的方法。 但如果需要先积累安全编码和常见漏洞的相关知识,应采取更具策略性的方法。
例如,如果收到多个有关跨站脚本漏洞的警报,可以:
- 使用 OWASP Foundation 中的资源在存储库中创建面向开发人员的指导性内容,请参阅跨站脚本 (XSS)。
- 创建一个活动来解决有关此漏洞的所有警报,并在活动说明中包含指导性内容的链接。
- 举办培训课程或其他活动来强调这一机会:即在设法解决实际 bug 的同时树立对安全编码的信心。
- 确保所分配的管理相关活动的安全团队成员有时间查看为解决活动警报所创建的拉取请求,并根据需要参与协作。
活动筛选模板
选择要包含在安全运动中的警报时,可以使用安全警报页上的任何筛选器来定义警报子集。 也可以选择一个活动模板,使用其中一个用于常见需求的预定义的筛选器,例如:“跨网脚本 (CWE-79)”。
安全活动限制
以下限制旨在鼓励你采取一种平衡和量化的方法来解决代码中的警报。 一种迭代性的、一次解决一部分特定警报的方法更有可能实现可持续的和长期的安全状况变化。
- 同时最多执行 10 个生效的安全活动(对已完结的活动不设限制)。
- 每个活动最多可包含 1000 个警报,最多可涉及 100 个不同存储库。
如果选择创建的活动数量超出这些限制,系统会忽略多余警报,使活动最终满足这些限制。 存储库中最新推送的警报将优先纳入活动中。
定义活动管理者的角色
创建安全活动时,需要选择“活动管理者”。 活动管理者需要具有组织所有者或安全管理者的角色。
活动管理者的名称对参与活动的开发人员可见。 如果要提高警报的修正率并提升安全团队的知识水平,这是与开发人员建立协作关系的关键机会。 理想情况下,活动管理者可以解答疑问、协作解决问题难点,并审查整个活动中有关问题解决的拉取请求。
将安全培训与安全活动相结合
如果安全团队已经为开发人员提供安全编码培训,那么一个巩固其学习的好方法是创建一个包含警报的活动且这些警报能让开发人员使用培训课程中习得的技能来解决。 即使没有制定正式的培训计划,也有必要提供活动中所含安全漏洞的类型、如何消除这些漏洞的示例以及如何测试解决效果的相关信息。 这可简化活动管理者的角色,因为他们将能够引导开发人员获取这些资源来解答基本问题。
OWASP Foundation 提供了许多用于了解最常见漏洞的资源,MITRE Corporation 维护有一个常见缺陷的详细列表,请参阅关于 OWASP Foundation 和关于 CWE。
为安全漏洞认知提供 AI 支持
将自动触发 GitHub Copilot Autofix,为每个安全警报建议解决方案。 但是,开发人员通常会想要详细了解原始代码为何不安全,以及如何测试解决方案是否正确且不会破坏其他组件。
GitHub Copilot 是一个重要工具,非常适合对安全编码有疑问、想了解如何解决安全警报以及如何测试其解决方案的开发人员。 核查确认组织中所有开发人员是否均有权访问其 IDE 与 GitHub 中的 Copilot,并参阅“向组织成员授予对 Copilot 的访问权限”。
Tip
GitHub Advanced Security 技能为 Copilot Chat 提供了更丰富的上下文来解答有关安全警报的问题。
开始实施安全活动和定义截止时间时的注意事项
与任何其他项目一样,需要制定符合实际的时间安排,以减少阻碍开发人员参与安全活动的时间因素。 除非你的公司为了减少技术债务正在通过规模更大的活动解决安全警报,否则大多数开发人员很难抽出时间解决警报。 你需要根据开发人员在其已安排的任务之间的空余时间来估算解决效率。 核查开发人员需要遵循的公司的相关关键期限以及官方节假日是很有必要的。