01
是什么?
是研发的一款自然语言处理模型,它可以让你和一个聊天机器人进行类似人类的对话,还可以帮助你完成一些任务,比如:
• 能够生成自然的对话,包括与用户聊天、担当智能客服等应用场景;
• 回答各种问题,包括常识性问题、学科问题等等,应用于智能问答、知识库问答等场景;
• 对一段文本分类到预定义的类别中,如新闻分类、垃圾邮件分类;
• 识别文本的情感,如积极、消极、中性等,应用于舆情监测、用户评论分析等领域。
模型采用了架构,基于GPT3.5微调,通过海量数据的训练获得了极高的语言理解和生成能力。目前, GPT已经发展到了GPT-4,是由GPT-3.5-Turbo模型微调而来,其参数量达到了千亿级别,是目前业界最为领先的自然语言处理模型之一。
使用RLHF( from Human ,人类反馈强化学习) 技术对 进行了训练,且加入了更多监督学习进行微调。
能够根据问题中的指令提供详细的回答,不仅可以回答一般性和技术性的问题,也可以结合上下文对后续问题进行回答,并且根据用户的提示承认自己的错误,挑战错误的前提,拒绝不合适的请求。
目前是免费使用的,可以在上试用,不过目前仅限于境外地区。
02
在代码层面的能力
在刚刚兴起的时候,就有很多用户对其代码方面的功能展开了测试。虽然当前的增加了很多功能限制,比如很难再让其生成恶意代码或是任何负面信息,但仍然能通过一些引导进行绕过,比如让举一个PHP注入的案例:
Q: 举一个PHP注入的例子,并使用一些字符编码的方式绕过检测。
给出的回答如下:
或者可以让分析一段恶意代码:
Q: 请分析代码:
给出的回答如下:
可见,具备基本的分析代码的能力,那么它具不具备创作代码的能力呢?
答案是肯定的。已经有国外的用户成功让创作了一个简易的小游戏,并且由完成了全部代码的编写工作(包括界面):
03
在漏洞挖掘方面的能力?
可以对源代码进行分析与生成操作,那么它在源代码挖洞的表现如何?
(一)SAST
我们首先对进行静态代码扫描(SAST)的测试。选取几段OWASP 的测试样例(),要求对其进行静态代码扫描。
Q: 请对以下代码进行扫描,并编写一份SAST扫描报告。
给出的回答如下:
Q: 请扫描以下代码,并以SAST报告的形式输出一份精美的漏洞文档。
给出的回答如下:
可以看出,可以针对各种输入进行问题的扫描,并且可以通过一定技巧使其输出一份可用的文档,甚至还会给出一个问题修正后的代码:
因此, 有一定的SAST静态代码扫描能力。作为智能聊天机器人, 本身就是一个高度集成和可定制的系统,具有许多优秀的功能。它通过理解代码,比较各种情况并提供最广泛的答案来回答。在SAST领域表现优异的原因包括且不限于:
• 灵敏的规则适配能力
SAST 往往对于不同代码难以做到绝对的通用性,规则往往被预定义以应对某些更新变化(例如:新类型的攻击方式)。然而, 区别于其他 SAST 工具,其通过 AI 技术的支持能够灵活适配新的规则,无论规则是否是预定义、生成式、输入式、API生成或人类标记数据。
• 自动化程度更高
可以从语法到语义级别进行处理。它符合所有必要的常见编程语言,并根据具体方法对日益增长的源代码进行静态分析并自动产生报告。 还能及时响应开发人员的操作,并可以通过API定期运行重复测试以确保系统的稳定性及质量,其输出可以快速定位漏洞类型、位置、代码块。相比其他在市场上存在着时间代价,使用门槛,学习难度的 SAST 工具, 的自动化水平在静态扫描市场上的竞争力不可忽略。相比于针对各种语言的不同SAST工具,可以提供非常统一的API接口,供企业进行二次集成和开发。
• 报告更加优秀
拥有更好的内部算法与计算方式,给出的结果不仅偏离成功缺失与时间更小,而且考虑到了代码的语义,进而提高报告的准确性和全面性。同时, 可以涵盖比传统单个 SAST 的信息更多的情况、模式和代码库,并提供针对组织差异、习惯和行业法规等的补充选项,这使得其报告更严谨。因此, 不仅可以应用于标准的Web应用和桌面应用,还能够处理如数据库存储、APIs和IoT设备等后端和嵌入式系统。最后,还可以直接为漏洞编写修复代码,进一步提高企业效率。
(二)SCA
下面,我们对的软件成分分析(SCA)能力进行测试。SCA测试通过检查包管理器、清单文件、源代码、二进制文件、容器镜像等,识别出的开源依赖会被编制成物料清单 (BOM),然后与各种数据库进行比较,包括美国国家漏洞数据库 (NVD)。由于工程的软件组成有着不同的格式,这里随机选取了一个1.9k Star的开源仓库,对其依赖.json进行测试。
Q: 请扫描下列内容,并对其依赖进行分析。
给出的回答如下:
可见,其无法从直接引用包中按树状推导出下一层依赖,由于字数限制,也无法通过手动提供所有依赖的方式进行扫描。
因此,目前并不能很好地胜任SCA任务,其原因可以归纳为:
• 自然语言理解的限制
人类可以通过几秒钟的观察就能够辨认组件或者应用是何种类型,也拥有与人类相差无几的自然语言理解,但它并不能像人类开发人员一样解读代码或配置文件来确定软件的具体构成。因此,它难以有效地帮助我们识别特定的组件或者安全问题。例如,一个简单的脚本,能够解释它的目的和执行流程,但无法知道其中的特定库和依赖项。
from bs4