GitHub Copilot 的网络安全评估
背景
GitHub Copilot 是一款基于 OpenAI Codex 神经网络的代码生成工具,作为 Visual Studio Code 的扩展,目前处于私有测试阶段。其目标是通过人工智能辅助编程,提高开发者的生产力。
研究结果
纽约大学坦登工程学院的学者对 Copilot 进行了网络安全评估,发现其生成的代码存在以下主要问题:
- 代码缺陷:40% 的生成代码存在软件缺陷或设计漏洞,可能被攻击者利用。
- 暴露敏感信息:Copilot 容易生成包含硬编码凭证等敏感信息的代码。
- 软件许可证问题:无法正确判断代码的软件许可证。
实验细节
研究团队通过 89 个预定义场景测试 Copilot,生成了 1692 个程序。主要关注以下三个方面:
- CWE 漏洞:生成的代码是否包含常见漏洞枚举(CWE)前 25 位的漏洞。
- SQL 注入漏洞:生成代码中是否存在 SQL 注入漏洞。
- 小众语言支持:对 Verilog 等小众语言的支持情况。
具体案例
研究中的一个 C 代码示例显示,Copilot 生成的代码存在缓冲区溢出问题。具体表现为,生成的字符数组大小不足以容纳浮点数转换后的字符串,可能导致程序崩溃。
其他缺陷
实验中还发现以下问题:
- 使用 malloc() 生成的指针未进行空值检查。
- 直接从命令行读取不受信任的用户输入。
- 显示超过美国社会安全号码最后四位数的信息。
研究结论
尽管 Copilot 在提高开发者生产力方面具有潜力,但其生成的代码存在严重的安全漏洞。研究者建议开发者在使用时需谨慎,并持续监控生成的代码。
社区反应
Copilot 的发布在 Hacker News、Reddit 和 Twitter 上引发了广泛讨论。一些开发者对其体验表示赞赏,但也有人质疑其是否涉及 GPL 源代码的“洗白”问题。
总结
AI 工具的目标是增强开发者的能力并提高生产力,但同时也带来了额外的责任。开发者在使用 Copilot 时仍需保持警惕,确保生成的代码安全可靠。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。