开发者安全公司 Snyk 发文指出,GitHub Copilot 可以复制代码中现有的安全问题。即当用户现有的代码库存在安全问题时,GitHub Copilot 可能会基于此提供一些不安全的代码建议;“这意味着,项目中现有的安全债务会让使用 Copilot 的不安全开发变得更不安全。”
另一方面,如果代码库已经高度安全,则 Copilot 生成存在安全问题的代码的可能性就会较小,因为它可以利用的不安全代码上下文较少。这也极大地激励了人们投入时间来减少现有代码库中的漏洞,从而减少未来通过生成式 AI 编码助手引入的问题。
Snyk 表示, GitHub Copilot、Amazon CodeWhisperer 和 ChatGPT 等生成式 AI编码助手在生产力和代码效率方面实现了重大飞跃。但这些工具不理解代码语义,因此无法对其进行判断。
GitHub Copilot 根据从大量现有代码存储库中学到的模式和结构生成代码片段。虽然这种方法有优点,但在安全方面也存在明显的缺点。Copilot 的代码建议可能会无意中复制邻接文件中存在的现有安全漏洞和不良做法,导致不安全的编码实践,并为一系列安全漏洞打开大门。
为了减少 AI 助手生成的代码中重复出现现有的安全问题,Snyk 建议采取以下措施:
- 开发人员应该对代码进行手动审查。
- 安全团队应该建立 SAST(security application security testing)护栏,包括策略。
- 开发人员应遵守安全编码指南。
- 安全团队应该为开发团队提供培训和意识,并对每个团队积压的问题进行优先级和分类。
- 执行团队应强制要求设置安全护栏。
更多详情可查看官方博客。