Copilot自动修复:AI解决代码漏洞难题

2024-08-21 14:53:00 浏览数 (2)

GitHub 的全新 AI 代码扫描工具有望彻底改变漏洞检测和修复,有可能为开发人员节省数小时的工作。

译自 Copilot Autofix: AI's Answer to Code Vulnerability Woes,作者 Darryl K Taft。

GitHub 本周在其 GitHub 高级安全 (GHAS) 中推出了其 Copilot 自动修复 高级 AI 代码扫描 和修复产品。Copilot 自动修复使用 AI 来查找代码中的漏洞,解释其重要性并提供代码建议来修复它们,GitHub 首席安全官兼高级副总裁 Mike Hanley 在 公司博客上的文章 中写道。

“代码扫描工具检测漏洞,但它们没有解决根本问题:修复需要安全专业知识和时间,这两种资源都非常宝贵且供应不足,”Hanley 在文章中写道。“换句话说,发现漏洞不是问题。修复它们才是。”

Copilot 自动修复使用能够实时做出决策、计划和适应新信息的 AI 代理。事实上,Hanley 写道,在 3 月份推出的该产品的公开测试版期间,GitHub 了解到开发人员修复代码漏洞的速度比手动修复快三倍以上。

克服长期困扰

开发人员长期以来一直在努力使用 应用程序安全测试 (AST) 工具来查找应用程序源代码中的安全漏洞,企业战略集团分析师 David Vance 告诉 The New Stack。传统的 AST 工具以速度慢且容易出现误报而闻名。他说,凭借 GitHub 庞大的开发者社区,将应用程序安全功能引入其平台是顺理成章的事情。

GitHub 的 Copilot 自动修复是下一波应用程序安全创新的最新例子,它还有助于减少开发人员对安全工具的摩擦。

在测试版期间,开发人员在他们的拉取请求中使用 Copilot 自动修复来快速修复新代码中的漏洞,以防止它们合并到生产环境中,从而影响客户。

“通过允许开发人员尽早识别其源代码中的安全漏洞,它极大地减少了在编码完成后修复漏洞所需的时间和精力,”Vance 说。

Hanley 在他的博客文章中写道,开发人员使用 Copilot 自动修复自动提交拉取请求时间警报修复的平均时间为 28 分钟,而手动解决相同警报则需要 1.5 小时。

“可以为数十种代码漏洞类别生成修复,例如 SQL 注入和跨站点脚本,开发人员可以在他们的拉取请求中忽略、编辑或提交这些修复,”他写道。

事实上,Copilot 自动修复在查找和修复跨站点脚本漏洞方面快了七倍——22 分钟,而手动修复则需要近三个小时。该公司表示,它在查找和修复 SQL 注入漏洞方面快了 12 倍——18 分钟,而手动修复则需要 3.7 小时。

“自从实施 Copilot 自动修复以来,我们观察到与安全相关的代码审查时间减少了 60%,总体开发效率提高了 25%,”Optum 首席工程师 Kevin Cooper 在一份声明中说。

此外,“在安全至关重要的医疗保健领域,它帮助我们快速采取经过验证的行业解决方案。这种主动的安全方法有助于我们预防潜在问题,每月节省数千小时,否则这些时间将用于修复,”Cooper 补充道。

“有趣的分裂”

“保护代码一直存在一个有趣的分裂:负责修复安全漏洞的个人——软件开发人员——通常既缺乏时间,也缺乏完成此任务所需的培训,”Forrester Research 分析师 Janet Worthington 告诉 The New Stack。

静态应用程序安全测试 (SAST) 工具扫描代码库,并根据安全缺陷和编程语言向开发人员提供修复指南。然而,Worthington 说,这些建议可能过于笼统,或者更适合已经熟悉安全术语的安全专业人员。

Hanley 表示,Copilot Autofix 背后利用了 CodeQL 引擎、GPT-4o 以及 启发式算法和 GitHub Copilot API 的组合 来生成代码建议。

“像 GitHub 的 CodeQL 这样的安全工具正在 利用生成式 AI 来减轻软件开发人员修复安全缺陷的负担,同时降低风险,”Worthington 说。

借助 GitHub Copilot Autofix 等创新,开发人员会看到安全缺陷以及针对其代码的自动生成的修复,开发人员可以审查并根据需要接受或修改修复。这不仅提高了开发人员的生产力,而且提高了有效解决问题的可能性。

“虽然这一进步标志着代码安全方面的重大进展,但重要的是要认识到生成式 AI 并非完美无缺,”Worthington 说。“任何由自动化工具提供的修复都必须像其他任何代码更改一样经过严格审查,在集成到主分支之前,要进行 SAST、软件成分分析 和同行代码审查。”

Copilot Autofix 的工作原理

Hanley 表示,要为现有代码中的漏洞启动 Copilot Autofix,只需在 GHAS 代码扫描警报中的警报上按下“生成修复”按钮。Copilot Autofix 会评估代码和漏洞,并返回解释和代码建议以供审查。然后,开发人员可以按下“使用修复创建 PR”按钮来创建一个新的拉取请求,其中包含修复警报的代码更改。

“Copilot Autofix 负责繁琐的安全任务,确保我们现有的和新的代码始终尽可能安全,”Otto (GmbH & Co KG) 安全社区经理 Mario Landgraf 在一份声明中说。“漏洞会立即被标记,并会自动推荐代码更改。它可以帮助我们的团队腾出时间,以便他们专注于更具战略意义的举措。”

与此同时,从 9 月开始,GitHub 将在拉取请求中添加 Copilot Autofix,将其添加到为所有开源项目提供的工具列表中。该列表已经包括 GitHub 的 代码扫描、秘密扫描、依赖项管理 和 私有漏洞报告 工具,这些工具都是免费提供的。

0 人点赞