17611538698
webmaster@21cto.com

GitHub推出全新AI功能,可自动修复代码漏洞

人工智能 0 177 2024-03-27 12:13:35

图片

导读:当检测到漏洞时,该AI工具会生成修复建议,其中包括自然语言解释和建议代码更改的预览。

近日,技术巨头 Entry 与 GitHub 联合推出了一项新的 AI 功能,能够有效提升编码时的漏洞修复速度。该功能已进入公开测试阶段,并在 GitHub 高级安全(GitHub Advanced Security,GHAS)客户的所有私有软件源中自动启用。

该功能名为“代码扫描自动修复”(Code Scanning Autofix),可利用 Copilot 与 CodeQ 发现代码中可能存在漏洞或错误,并且对其进行分类和确定修复的优先级。可帮助处理 JavaScript、Typescript、Java 和 Python 中超过 90% 的警报类型。

值得一提的是,“代码扫描”需要消耗 GitHub Actions 的分钟数。

图片

“代码扫描”还可防止开发者和网络安全人员引入新问题,还支持在特定日期和时间进行扫描,或在存储库中发生特定事件(例如推送)时触发扫描。

图片

如果 AI 发现你的代码中可能存在漏洞或错误,GitHub 就会在仓库中进行告警,并在用户修复触发警报的代码之后取消告警。

要监控你的仓库或组织的“代码扫描”结果,你可以使用 Web 挂钩和 code scanning API。此外,“代码扫描”也可与输出静态分析结果交换格式 (SARIF) 数据的第三方代码扫描工具互操作。

对“代码扫描”使用 CodeQL 分析有三种主要方法:

  • 使用默认设置在存储库上快速配置对“代码扫描”的 CodeQL 分析。默认设置自动选择要分析的语言、要运行的查询套件和触发扫描的事件,如果需要也可以手动选择要运行的查询套件以及要分析的语言。启用 CodeQL 后,GitHub Actions 将执行工作流运行以扫描代码。

  • 使用高级设置将 CodeQL 工作流添加到存储库。这会生成一个可自定义的工作流文件,该文件使用 github / codeql-action 运行 CodeQL CLI。

  • 直接在外部 CI 系统中运行 CodeQL CLI 并将结果上传到 GitHub。


技术机制

当用户发起拉取请求或推送提交时,代码扫描过程将开始进行,并集成到操作工作流或第三方 CI 系统中。结果采用静态分析结果交换格式 (SARIF) 格式,上传到代码扫描 API。

后端服务检查该语言是否受支持,然后调用修复生成器作为 CLI 工具。

图片

通过存储库中的相关代码段进行增强,SARIF 警报数据构成通过对内部部署的 Azure 服务并进行身份验证的 API 调用来提示语言模型 (LLM) 的基础。LLM 响应经过过滤,以防止某些有害输出,然后修复生成器将其细化为具体代码建议。

代码扫描后端存储生成的修复建议,以便与拉取请求视图中的警报一起呈现,并实施缓存以优化 LLM 计算资源。

GitHub 的 Pierre Tempel 和 Eric Tooley 表示:出现漏洞时,修复建议将包括对建议修复的自然语言解释,以及代码建议的预览,开发人员可以接受建议、编辑或驳回。该功能提供的代码建议和解释可以包括对当前文件、多个文件和当前项目依赖关系的修改。采用这种方法可以大大降低安全团队每天必须处理的漏洞频率。

图片

GitHub 承诺,这一 AI 系统可以修复其发现的三分之二以上的漏洞,所以一般来说开发人员无需主动编辑代码。该公司还承诺,代码扫描自动修复将覆盖其支持的语言中超过 90% 的告警类型,目前包括 JavaScript、Typescript、Java 和 Python。该公司计划在未来几个月内增加对其他语言的支持,下一步将支持 C# 和 Go。

不过,还需要注意的是,开发人员应始终核实安全问题是否已得到解决,因为 GitHub 的 AI 功能很可能会建议仅部分解决安全漏洞的修复方法,或无法保留预期的代码功能。

Tempel和Tooley补充道:代码扫描自动修复功能使开发人员在编写代码时更容易修复漏洞,从而帮助企业减缓这种 "应用程序安全债务 "的增长。

上个月,该公司还为所有公共源默认启用了推送保护功能,以防止在推送新代码时意外暴露访问令牌和API密钥等机密。

编辑:有趣的大雄

参考:

https://www.maginative.com/article/githubs-ai-will-now-scan-and-automatically-fix-bugs/

评论