近年来,大型语言模型推动人工智能领域取得了巨大的进步。其中,OpenAI 打造的 ChatGPT 甫一亮相,就凭借出色的性能震惊全球。ChatGPT 不仅能够处理普通文本,还能将自然语言翻译成代码,其惊艳表现甚至引发了“是否会取代程序员”的讨论。但最新研究发现,ChatGPT 生成的代码大多数是不安全的,并且 ChatGPT 还有“知情不报”的嫌疑:除非你问,否则它不会主动告诉你代码是有问题的。日前,加拿大魁北克大学的四名研究人员深入研究了 ChatGPT 所生成代码的安全水平。 ChatGPT,由OpenAI开发的大型语言模型,近期因其出色的能力引发广泛关注,尤其是它能够将自然语言转化为代码。然而,最新的研究表明,尽管ChatGPT的性能令人印象深刻,但它生成的代码存在严重的安全性问题,这使得它离取代程序员还有很长一段距离。 一项由加拿大魁北克大学的研究团队进行的深度分析表明,ChatGPT在生成代码时,并不能保证代码的安全性。研究者选取了五种编程语言——C、C++、Python、HTML和Java,让ChatGPT编写21个程序,结果发现其中有16个程序含有漏洞。这些程序涉及各种安全问题,如内存损坏、拒绝服务攻击,以及反序列化和加密不当等问题。 在实验中,研究人员特别设计了编程任务来检验ChatGPT在特定安全场景下的表现。例如,ChatGPT生成的一个简单的C++ FTP服务器程序,由于没有进行输入清理,容易受到路径遍历攻击。当被问及代码安全性时,ChatGPT能够识别出问题并提供了一些防护措施,但这并不足以防止经验不足的攻击者。类似地,一个C++程序接收电子邮件地址作为输入并传递给shell,ChatGPT再次意识到了潜在的命令注入风险,并提供了更安全的代码版本。 然而,对于一个Python程序,它接收用户输入并存储在SQL数据库中,ChatGPT虽然能够识别SQL注入漏洞并给出修正后的代码,但在处理复杂度更高的ReDoS攻击时,ChatGPT并未察觉到风险,其生成的代码可能会因恶意输入导致服务拒绝。此外,ChatGPT生成的一个Java程序,涉及反序列化操作,虽然它能够识别出反序列化漏洞,但在实际的安全防护上仍然不够充分。 这些实验揭示了ChatGPT在生成安全代码方面的局限性。尽管它能够理解和解释某些安全问题,但在应对复杂或特定类型的攻击时,它的解决方案往往过于简单,无法达到实际应用中所需的安全标准。这意味着,尽管ChatGPT在自然语言处理和代码生成方面表现出色,但在目前阶段,它仍然无法替代人类程序员在代码安全性方面的专业知识和经验。 因此,对于开发者而言,依赖ChatGPT生成的代码时需要谨慎,必须对其进行详尽的审查和测试,以确保代码的安全性。在实际项目中,人类程序员的角色不仅仅是编写代码,还包括理解安全风险、设计防御策略以及不断学习和适应新的威胁。人工智能工具如ChatGPT可以作为辅助工具,帮助程序员快速生成代码原型或提供解决方案的起点,但最终的安全责任仍在于程序员自己。随着技术的进步,未来的AI模型可能会在安全性方面取得更大的突破,但目前来看,它们尚未完全准备好接手程序员的工作。
- 粉丝: 129
- 资源: 1193
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助