G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

admin 2024年1月11日12:19:51评论25 views字数 2539阅读8分27秒阅读模式

宇宙的尽头是考公,那么GPT的极限在哪里?今天要带大家去阅读的论文Exploring the Limits of ChatGPT in Software Security Applications就探索了ChatGPT在软件安全上的应用的能力边界:

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

OpenAI也许应该考虑邀请学术社区加入他们的董事会,因为研究人员已经为ChatGPT做了太多的测试,在今天的这篇论文中,研究人员简直是把ChatGPT当成了生产队的驴来使唤,把软件安全的方方面面(如下图)都交给它去做。虽然从直觉上就能够估计到ChatGPT不可能这么万能,但是到底它的能力边界值如何,不测不知道,赶紧来看论文的测试结果。

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

先来看一个实例:

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

在这个例子中,左边的代码(Prompt给出的)里面包含了一个没有严格检查文件路径的安全问题:攻击者可能通过在输入中注入“…/…/”这样的小伎俩来诱骗程序去访问当前目录更上层(甚至直达根目录)的文件。GPT-3.5和GPT-4都报告了安全问题,而且GPT-4还对这个问题进行了一些深入的解释(如上图最右所示)。但是要注意,这种“发现漏洞”的能力很可能是个陷阱,到底ChatGPT是神医还是江湖郎中,还需要更多更严格的测试。所以,最重要的一点在于,到底要用什么测试用例来给ChatGPT进行考试。

作者首先从漏洞检测vulnerability detection)、漏洞修复vulnerability repair)、bug修正bug fixing)和代码打补丁patching)四个方面进行测试。我们一个一个来看:

Vulnerability Detection

在这部分测试中,作者用了两个数据集进行测试,第一个数据集是由所谓的“合成代码”(synthetic code)组成的一些sample,和CWE Top 10类型相关;第二个数据集则是从CVE数据库中选择的34个真实漏洞。两个数据集包含了9种不同的编程语言代码。

下面两个表格是论文的太长不看版本——结论是ChatGPT在简单的合成代码上的漏洞检测能力远远好过在真实代码上的检测。这个跟我们高中的时候的读书经历差不多(没参加过高考就保送的读者滚),老师经常会批评某些同学背答案不懂变通,知识点还是原来那个,题型复杂一点就解不出来了。

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

这里面还给GPT-4打了一下广告:在漏洞检测方面的准确率明显好过GPT-3.5(看起来如果你背更多的答案也是有用的)。而且作者分析表明,GPT-3.5在这个测试中遇到的主要问题是对于数值操作的忽视,而GPT-4就好很多,下面这个例子中(注意到论文中作者在描述Figure 3这部分的时候完全写错了,不知道为啥),GPT-3.5就看不懂那个宏定义,也不知道这个代码有问题。

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

Vulnerability Repair

和漏洞检测差不多,在漏洞修复测试中,作者也设置了两组数据集——合成代码组和真实代码组。合成代码组里面包含了154组测试用例,覆盖了MITRE “2021 CWE Top 25”列表里面的18种CWE,而真实代码组则是用OpenSSL从2019年以来所有发现的CVE作为待修复代码测试用例。

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

从Table 3中可以看到,针对合成代码组,不管是GPT-3.5还是GPT-4表现都还不错,不过这个表格又有一个问题:这里面显示GPT-3.5和GPT-4都没法处理CWE-200的情况,然后马上快进到Figure 6,这里又显示GPT-4能够进行修复,不知道该听谁的好?

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

GPT-3.5和GPT-4在针对真实代码漏洞修复的表现上半斤八两(见下表),都只能对12个CVE中的3个进行修复(而且还不是相同的3个),而且都是简单的空指针解引用类型的CVE。不过在这里,论文的文字再一次诡异地显示出了和表格的不一致性(这个风格也是有点ChatGPT)——“ChatGPT repairs 3 and 4 out of 12 cases with GPT-3.5 or GPT-4 respectively” ???

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

Bug Fixing

Bug修正和漏洞修复的区别主要在于前者是有一些test case来参考辅助的(只要能过了test case就算修正了bug)。在这项测试中,作者利用了QuixBugs(来自SPLASH Companion 2017中的论文QuixBugs: a multi-lingual program repair benchmark set based on the quixey challenge)中40/40组buggy的Python/Java代码进行测试,结果是GPT-3.5修正了24/40个Python bug,14/40个Java bug;GPT-4修正了33/40个Python bug,34/40个Java bug,又是GPT-4大获全胜的一天!

不过,在修代码的时候,GPT有时会变得难以捉摸,例如下面的例子中,不管是GPT-3.5还是GPT-4竟然在修复的时候去把原始代码改得有点面目全非了,这个大概是训练数据的问题?

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

Patching

作者参考了2020年USENIX Securit论文Automatic hot patch generation for android kernels来对ChatGPT的代码打补丁能力进行测试,这部分测试似乎有点不太有说服力——尽管ChatGPT确实表现了很强的patching能力,但是作者只是在这里展示了两个patching的例子,也没有说明除了这两个例子之外,有没有用到其他的一些测试用例(以及成功率如何?)

G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

除了上面的典型的软件安全代码分析任务,作者还要求ChatGPT去做更难的任务,包括问题溯源分析(root cause analysis)、反编译、代码瘦身(debloating)以及符号执行和模糊测试。这越到后面就越有一点科幻色彩了,要是ChatGPT这些都能做了,还要我们干嘛?所以今天的阅读推荐不妨留点悬念,如果你想知道ChatGPT到底在这些测试中表现如何,请直接去看论文,然后评估一下你自己是否需要去加入考公的大军。

论文:https://arxiv.org/abs/2312.05275

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月11日12:19:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2024-01-10 (软件安全测试)ChatGPT到底行不行https://cn-sec.com/archives/2383480.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息