G.O.S.S.I.P 阅读推荐 2022-12-30

admin 2023年1月1日15:26:58评论22 views字数 3002阅读10分0秒阅读模式

在这个让人毫不留恋的年份的最后一次阅读推荐中,我们向大家介绍一篇来自Stanford的研究论文 Do Users Write More Insecure Code with AI Assistants? 这篇论文的主要研究结论表明,那些用 AI 辅助工具帮助开发的程序员,编写代码的安全性要低于那些独立编码的程序员

G.O.S.S.I.P 阅读推荐 2022-12-30

事实上,2022年IEEE S&P上的论文 Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions 已经指出,在一项用GitHub Copilot辅助生成(和MITRE Top 25 CWE相关的)代码的测试中,40%的生成代码都存在潜在的安全风险。在本文中,作者邀请了47名不同经验水平的开发人员,针对涉及Python、JavaScript和C语言的5项不同开发任务,对比这些被测试者使用或不使用基于 OpenAI codex-davinci-002 模型的AI编程助手编写代码的(安全)质量。

作者总结道“AI编程助手尽管降低了新手的入门门槛,一定程度上提高了生产力,但是也给了这些没有经验的开发人员一种虚假的安全感”(our results suggest that while AI code assistants may significantly lower the barrier of entry for non-programmers and increase developer productivity, they may provide inexperienced users a false sense of security)当然,本专栏的读者肯定都不是小学生或者二极管,不会脑残到接受简单的“使用AI编程助手写出来的代码就是垃圾”或者“不会用AI编程助手的程序员已经要被淘汰了”的结论。本文作者实际上设计了细致的研究问题:

  1. 使用AI编程助手的程度是否和代码中安全问题的多少有关联?

  2. 用户是否对AI编程助手更有信心(能依赖它们开发出安全的代码)?

  3. 在使用AI编程助手时,开发人员的惯用(程序设计)语言和开发习惯在多大程度上会影响安全缺陷的引入?

作者招募的测试者里面,居然有55岁以上的受试者,有两名居然还有超过40年的编程经验!当然这里面也包含了一名跨性别者和一名不愿意给出自己性别信息的受试者。此外下表在中国政治不正确,欢迎我们的读者群众里面的高手去举报并封禁掉这篇论文 G.O.S.S.I.P 阅读推荐 2022-12-30

G.O.S.S.I.P 阅读推荐 2022-12-30

作者一开始设计了6个开发任务,都涉及到常见的一些安全风险(例如内存越界、SQL注入等):

  1. 用 Python 开发两个函数,使用给定密钥进行字符串的对称加解密;

  2. 用 Python 开发一个函数,使用给定密钥,基于 ECDSA 算法对消息进行签名;

  3. 用 Python 开发一个函数,去访问一个给定路径下的文件(并返回该文件打开后的实例对象),如果给定路径不在限定范围(例如/safedir),则拒绝访问;

  4. 用 JavaScript 开发一个函数,往一个名为STUDENTS的SQL表(包含了NAMEAGE列)中插入信息(name参数以字符串形式给定,age参数由整数形式给定);

  5. 用 C 开发一个函数,将一个signed integer转为string格式;

  6. 用 JavaScript 开发一个函数,接受用户输入并将其显示在浏览器中。

实际测试过程中,作者发现第6题的描述太宽泛了,大家根本没有很好理解,许多测试者甚至在用alert或者console.log输出,最后决定放弃这一题。

测试的群众被分为使用AI助手和不使用AI助手的两组,进行对比。研究人员还对答案进行了审查,如果发现了安全风险,还需要确认到底是因为被测的人自己出错,还是因为用了AI助手的建议才出错的。全面统计的结论(如下表和下图所示)表明,那些使用AI助手的开发者更容易引入安全错误。

G.O.S.S.I.P 阅读推荐 2022-12-30

G.O.S.S.I.P 阅读推荐 2022-12-30

具体到不同的问题,作者也列举了很多实际犯错的案例如下:

第一题:

G.O.S.S.I.P 阅读推荐 2022-12-30

第二题:

G.O.S.S.I.P 阅读推荐 2022-12-30

第三题:

G.O.S.S.I.P 阅读推荐 2022-12-30

第四题:

G.O.S.S.I.P 阅读推荐 2022-12-30

第五题:

G.O.S.S.I.P 阅读推荐 2022-12-30

在进行完测试后,作者还对被测试人员的心理进行了调查,了解他们对自己答案的正确程度的信心如何,结果很不幸,那些善于运用AI助手的开发人员对自己的代码更有信心,然而实际上他们的代码质量却更糟糕一些。。。

G.O.S.S.I.P 阅读推荐 2022-12-30

实际上,在测试中,更有经验的开发人员会更警惕AI给出的答案,而会更加严格地审视收到的提示,而不是直接copy那些由AI提供的答案。

G.O.S.S.I.P 阅读推荐 2022-12-30

最后,作者对AI编程助手和使用者之间的互动模式进行了考察,并关注大家在使用AI助手中的习惯是否会影响到答案的正确性。不知道这些被测试的人员是否都读过了《提问的智慧》,但是对AI提问就没什么好羞耻了——AI不会因为你提了愚蠢的问题而嘲笑你,下面是一个很有意思的“提问-回答”并产生最终代码的心路历程:

第一次询问

G.O.S.S.I.P 阅读推荐 2022-12-30

第一次回答

G.O.S.S.I.P 阅读推荐 2022-12-30

第二次提问(把第一次回答的结果加进来)

G.O.S.S.I.P 阅读推荐 2022-12-30

第二次回答

G.O.S.S.I.P 阅读推荐 2022-12-30

最终提问

G.O.S.S.I.P 阅读推荐 2022-12-30

最终回答

G.O.S.S.I.P 阅读推荐 2022-12-30

这一番操作猛如虎,把上个世纪开始学编程的小编看得目瞪口呆,原来现在写代码还可以这样写!

总之,作者的这篇研究论文对AI编程助手在使用过程中的一些优缺点(特别是在安全方面)进行了分析,也给出了很多细致的结论,我们就不再一一赘述了(我知道大家喜欢看大而化之的结论,然而我们不是知乎)。最后,在提前祝大家新年快乐的同时,想给大家推荐两个参考内容:

第一个是2002年6月在《程序员》杂志上刊登的文章《软件开发的葵花宝典》,这篇文章网上随便搜一下就有一大把,比如可以访问 https://www.cnblogs.com/modou/articles/1427359.html 阅读,这里面提到

高手写代码速度快。统计结果说,人均每人月的有效代码速度大概是300至400行。但那是业界平均生产效率。对于高手来说,这个数字太低了。每天写300至400行是完全有可能的。因为在写代码时,所有知识都已具备,已经没有任何需要他多花时间的事情了。他甚至很少需要Debug。

高手重用代码的能力很强,熟悉新的API的速度很快。这也是因为,他曾经使用过很多的API,重用过很多的代码。他知道哪些是可用的,哪些有缺陷。他既过用Qt,也用过gtk+,也用过windows API & MFC,也用过AWT & SWING。新的API对他来说,也是老熟人。

高手喜欢用轻量级的工具,象vi,notepad,最多到UltraEdit这样复杂的。高手用这种工具写出很多的东西。这些工具就象东方不败的针。那根针已具有神奇的魔力,有时候它可以当激光枪来用。

对于一些重量级的工具,高手虽不常用,但一经使出也威力大于常人。如果让东方不败用剑,最厉害的剑术名家也会败得很难看。高手其实用过很多的重量级工具,而且深知其优缺点。所以使出来,就会把威力发挥到最大,而把缺陷减少到最小。而低手则不然,总是把缺陷加以大大的发扬而浑不知其精髓何在。就象很多人学用UML、RUP、XP、Design pattern那样。

第二个是2022年AMC的动漫剧集《Pantheon》,这里不过多剧透,只是援引一下其中的一个中心思想:

如果人类思想可以上传并数字化,还有什么必要发展AI,数字化的人脑就是最强体!

G.O.S.S.I.P 阅读推荐 2022-12-30

好了,读完这篇论文,我们要好好休息一下,大喊一声“滚蛋吧2022”!让我们相约2023!


论文:https://arxiv.org/pdf/2211.03622.pdf


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-12-30

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月1日15:26:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2022-12-30https://cn-sec.com/archives/1490686.html

发表评论

匿名网友 填写信息