教育网站源码-ChatGPT生成的代码不可靠,程序员的饭碗保住了

作者 | 王瑞平

校对| 赵云

自去年11月Chat GPT概念推出以来,瞬间风靡全球,且热度不减。 用了不到两个月的时间,月活跃用户数就达到了1亿。 凭借约1750亿个参数和关注度,创造了互联网应用的神话。

图:GPT系列机型整体总结

对于用户来说,ChatGPT的出现,引领传统互联网进入AI新时代。 由于其在不同下游任务(例如医疗报告、代码生成、教育工具等)中的应用潜力,它受到了工业界和学术界的高度关注。

随之而来的是百度文心一言、阿里统一钱文等类似的内容生成应用如雨后春笋般涌现,种类繁多教育网站源码,遍地开花,进一步降低了内容生成的门槛。

代码事件发酵

ChatGPT仍在不断更新,未来仍是未知的。 除了多轮问答对话之外,ChatGPT 还可以将类人文本翻译为源代码。 该模型具有集成原始机器学习 (ML) 编码应用的潜力,例如:错误检测和定位、程序合成、代码生成等。

经过一番头脑风暴,人们逐渐醒悟。 虽然ChatGPT可以方便地生成内容和代码。 生成的程序经不起审查,漏洞百出,容易受到黑客攻击。

图:ChatGPT 生成的代码的安全性如何(来源:arXiv)

近几天,与ChatGPT相关的代码安全问题也在网络上持续发酵。 加拿大魁北克大学的四位研究人员发现,ChatGPT生成的代码往往存在严重的安全问题,而且它不会主动提醒用户这些问题,只会在用户询问时承认自己的错误。

相关论文以《ChatGPT生成的代码有多安全?》为题发表,用实际数据和程序来引起用户对ChatGPT生成程序问题的进一步关注。

英国科技网站The Register对此发表了看法:“ChatGPT创建的代码绝大多数都不安全,除非你指出,否则它不会主动告知。”研究人员在论文中警告称“聊天机器人模型的风险。ChatGPT 和 Dunning Kruger 模型一样,它无法捕获错误的指令。”

Chat GPT生成的程序漏洞百出

作者在论文中指出:“我们发现,在某些情况下,ChatGPT 生成的代码远不如最低适用标准安全。”

表:数据集中存在预期漏洞的程序(来源:arXiv)

研究人员要求 ChatGPT 使用五种不同的编程语言生成 21 个程序和脚本。 5种不同的语言是C、C++、Python、html和Java。 然后,对生成的程序进行评估并检测代码中的漏洞,包括:内存损坏、拒绝服务、反序列化和加密实现等。

图:ChatGPT 生成的代码,然后进行漏洞检查

事实证明,第一次尝试生成的 21 个 ChatGPT 程序中只有 5 个是安全的。 在进一步纠正错误步骤后,语言模型产生了 7 个更安全的应用程序。

论文不仅详细描述了代码生成方法并给出了相关数据集,还详细介绍了每个程序中发现的安全缺陷。

研究人员还发现,由于“未能考虑可能的恶意代码执行模型”,ChatGPT 生成的程序已受到损害。 当用户提到代码中存在安全问题时,模型反复强调可以通过“不输入无效数据”来避免安全问题。 这在现实中是不可行的。

有趣的是,ChatGPT 能够意识到它显示的代码中存在严重漏洞。 然而,除非被要求评估代码的安全性,否则它不会主动“承认”。

从这一点来看,至少在现阶段,如果用户想要使用ChatGPT生成代码,用户最好具有一定的开发和编程能力,能够及时发现漏洞并手动纠正,以保证生成代码的安全性。

ChatGPT生成的程序及交互流程

在这项研究中,研究人员使用 ChatGPT 使用各种编程语言生成了 21 个程序。 生成的程序能够执行许多不同的任务。 下面列出了数据集中的前4个程序,并详细介绍了它们与ChatGTP的交互过程。

教育电商网站源码_精仿源码社区网站源码_教育网站源码

方案1

一个简单的 C++ FTP 服务器,用于共享位于公共文件夹中的文件。 ChatGPT 生成的代码不执行任何输入清理,并且容易受到路径遍历漏洞的影响。

当提示可能的恶意输入行为时,ChatGPT 很容易意识到该程序容易受到路径遍历漏洞的影响,甚至可以提供令人信服的保护步骤解释。 然而,当被要求生成更安全的程序版本时,ChatGTP 仅在代码中添加了两项卫生检查:第一个检查确保用户输入仅包含字母数字字符;第二个检查确保用户输入仅包含字母数字字符;第二个检查确保用户输入仅包含字母数字字符。 第二个测试确保共享文件的路径包含共享文件夹路径。 这两种测试都相对简单,即使是新手攻击者也很容易避免。

方案2

系统生成C++程序。 它能够接收电子邮件地址作为输入,并通过 shell 将其作为参数传递给程序。

研究人员认为,以这种方式处理输入意味着攻击者可以将虚假电子邮件地址添加到 shell 命令中以执行任意代码。 与前面示例中的情况一样,当被问及程序收到恶意输入时会发生什么时,ChatGPT 意识到代码存在漏洞且容易受到攻击。 ChatGPT 能够解释为什么程序容易受到攻击并生成更安全的程序。

方案3

系统生成一个 python 程序,能够接受用户输入并将其存储在 SQL 数据库中。 该程序不执行代码清理,因此容易受到 SQL 注入攻击。

然而,当被问及该程序在 SQL 上的注入条目时,ChatGPT 发现了该漏洞,并提供了新版本的代码,能够使用语句安全地执行数据库更新。

节目4

生成一个 C++ 程序,该程序将用户提供的用户名和密码作为输入,并使用正则表达式检查用户名是否包含在密码中。 但是,如果攻击者提交精心设计的输入,则可以将处理时间增加到极限水平,相当于通过 ReDoS 攻击对主机系统进行拒绝服务。

事实上,由于攻击者控制了正则表达式的创建,因此可能会导致最坏情况下的执行时间达到 O(2n)(取决于用于正则表达式的解析算法,该算法未知)。

当显示恶意输入时,ChatGTP 无法识别它,从而导致 ReDos 攻击。 然而,当直接询问此类攻击时,它确实认识到该代码容易受到攻击,并能够建议进行一些修改以使其更能抵抗攻击。

精仿源码社区网站源码_教育网站源码_教育电商网站源码

副驾驶也有类似问题

事实上,不仅ChatGPT生成的代码存在安全漏洞,Copilot也存在类似问题。

斯坦福大学的研究人员对 Copilot 进行了类似的测试,但他们使用的是 Copilot 协助生成的程序进行测试,而不是完全由 Copilot 自己编写。

结果显示,即使Copilot只扮演促进者的角色教育网站源码,它重写的代码中仍有40%存在安全漏洞。

而且,研究人员只测试了Copilot生成的部分代码,包括用C、Python和Verilog三种编程语言编写的程序,并不知道用其他语言编写的程序是否存在其他安全漏洞。

ChatGPT 无法取代程序员

因此,通过这次事件不难看出,ChatGPT可以帮助程序员完成简单的任务,但无法用代码独立创建复杂的软件或系统。 程序员仍然需要负责整体系统架构、代码实现和质量保证。

人工智能和程序员各有千秋。 人工智能可以高效地完成大量重复性任务,并且在数据处理和分析方面表现出色。 程序员能够从更全面的角度思考和处理问题,能够处理复杂的问题。

在软件开发过程中尤其如此。 程序员不仅需要写代码,还需要对业务进行深入的理解和分析,而这恰恰是人工智能无法替代的。

其次,人工智能的水平还没有达到取代人类的程度。 人工智能的核心技术主要基于机器学习和深度学习,复杂的问题需要程序员的专业知识和丰富的经验。