使用GitHub Copilot现代化保护Java应用程序

将Java应用程序现代化不是一次性事件。 每天都会公布新的 CVE,随着代码不断演进,也会出现新的 CWE 发现,而依赖项也会逐渐变得不再合规。 保持应用程序安全,就意味着持续发现并修复安全债务——这才是看待应用程序安全的长效思路。

GitHub Copilot现代化可帮助你实现两项功能:

  • 安全评估 - 扫描代码,了解 ISO/IEC 5055 引导的 CWE 发现 ,并查找直接和可传递依赖项中的 CVE 漏洞
  • 代码修正 - 生成执行计划以修复所选问题并为你应用修补程序。

可以在以下位置找到这些功能:

  • Visual Studio Code - 本文中所述的交互式扫描和修复。
  • 现代化 CLI - 安全性是 批量评估中的评估域之一,因此可以在单个运行中扫描应用程序组合。

扫描并解决Visual Studio Code中的安全问题

按照以下步骤,在同一流程中评估并修复安全问题。

1.启动安全扫描

GitHub Copilot modernization 窗格中,打开 快速入门 视图,然后选择 扫描并解决安全问题

Visual Studio Code 的屏幕截图,显示带有“扫描并解决安全问题”按钮的“快速入门”视图。

Copilot 会对你的项目进行安全域评估。 扫描涵盖:

  • 一组特选的 CWE 规则与 ISO/IEC 5055 保持一致,分为六个类别: 文件与路径安全性注入攻击内存安全代码质量凭据和机密以及 并发和同步
  • 你的直接依赖和传递依赖中的CVE 发现结果,源自 GitHub 安全通告数据库。

有关 CWE 规则的完整目录和 CVE 覆盖范围的详细信息,请参阅 “了解评估范围”。

注释

CVE 检查无需GitHub身份验证即可工作,但匿名调用速率有限。 对于大型项目,请使用 gh auth login 登录,以避免限流。

2.查看报告

扫描完成后, 会打开评估报告 并显示安全发现。

Visual Studio Code 中评估报告的屏幕截图,其中显示了 CWE 和 CVE 发现项。

若要控制显示哪些 CVE,请在评估配置中设置 Security: Minimum CVE Severity。 可接受的值为 criticalhighmediumlow;默认值为 high

3.选择要解决的问题并创建计划

选择要修复的问题类别。 操作按钮将更新以显示计数,例如“创建计划”(3)。 选择它以生成执行计划。

“评估报告”的屏幕截图,其中选择了安全问题类别,并突出显示了“创建计划”按钮。

4. 查看计划

Copilot将执行计划写入 Markdown 文件,并在预览窗格中打开它,以便你可以在应用任何修补程序之前读取它。 该计划说明了 Copilot 如何对所选问题进行分组并加以处理。 它按依赖项对 CVE 问题进行分组,并按文件对 CWE 发现进行分组。 如果要更改范围或顺序,请直接编辑 Markdown 文件。

在 Visual Studio Code Markdown 预览中打开的安全执行计划的屏幕截图。

5. 执行计划

如果您对该计划感到满意,请在聊天中告诉 Copilot 执行该计划。 Copilot按组解决所选问题组,生成项目以验证每个更改,并在聊天中报告进度。 查看生成的差异,并提交你想保留的更改。

保持常绿

随着新的 CVE 被披露以及你的应用程序发生变化,安全债务会重新出现。 重新运行 扫描并解决安全问题 ,作为常规现代化节奏的一部分(例如,在每个发布分支上),因此你可以持续捕获和修复问题,而不是将它们累积到大升级中。

后续步骤