技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种基于大型语言模型的PHP解释器漏洞挖掘方法与流程  >  正文

一种基于大型语言模型的PHP解释器漏洞挖掘方法与流程

  • 国知局
  • 2024-10-09 16:23:34

本发明涉及web安全领域,尤其涉及一种基于大型语言模型的php解释器漏洞挖掘方法。

背景技术:

1、web安全是信息安全领域的一个关键部分,随着互联网和web应用的快速发展,它的重要性日益突出。web安全涉及保护网站、网络应用和网络服务不受到未授权访问、使用、披露、破坏、修改或破坏的策略和措施。而php作为一种广泛使用的服务器端脚本语言,自其诞生以来一直是网络应用中的重要组成部分。由于其在互联网上的普及程度,php应用的安全性问题一直是信息安全领域关注的焦点。

2、模糊测试(fuzz)是一种自动化的软件测试技术,主要用来发现编程错误和安全漏洞。这种方法通过向系统输入异常的、意外的或看似随机的数据来测试程序的健壮性和错误处理能力。模糊测试的目的是触发系统的非正常行为,如崩溃、执行未授权的代码、内存泄露等,从而帮助开发者识别并修复潜在的问题。因此可以使用模糊测试进行php解释器的漏洞挖掘。

3、目前大多数的fuzzer可以分为基于生成的fuzzer和基于突变的fuzzer。基于生成的fuzzer是指从头开始生成输入数据的fuzzer。这类fuzzer通常依赖于对目标程序的输入规范的详细了解,如输入的数据格式或协议规范。基于生成的fuzzer设计了一套特定的规则或使用预定义的语法来生成结构化的测试数据。基于突变的fuzzer不是从头开始生成输入数据,而是从已存在的有效输入(称为种子)开始,通过应用一系列突变操作(如插入、删除、替换等)来生成新的测试用例。

4、基于生成的fuzzer需要详细的输入规范,如语法或协议的定义,以生成有效的测试用例。开发这种类型的fuzzer通常需要深入了解目标系统的输入规格,编写用于生成输入的复杂规则或脚本,这可能涉及大量的人力和时间投入。基于突变的fuzzer的效率和效果很大程度上依赖于初始输入的种子的质量。如果提供给fuzzer的种子覆盖不广或者质量较低,生成的测试用例可能无法有效探索到程序的深层次和边缘情况。这限制了测试的全面性,可能导致一些潜在的缺陷未被发现。这种方法的关键在于选取合适的种子输入和有效的突变策略。

5、对于基于突变的fuzzer来说,使用大语言模型生成模糊测试用例具有显著优势。相比于传统的基于随机或突变的模糊测试生成器,大语言模型经过大规模代码库的训练,对多种编程语言的语法结构有深入的学习和理解。这使得这些模型在生成代码时能自然而然地保持语法的正确性。对于模糊测试而言,这意味着生成的测试用例将是语法正确的,可以直接被编译器或解释器处理,而不会因为语法错误而被拒绝执行。同时使用大语言模型自动生成测试用例可以极大地减少手动编写测试用例的需要,从而节省时间并提高测试过程的自动化程度。大大提升了测试的效率和效果。

6、目前很多对php的模糊测试方法都是针对某个特定的漏洞进行模糊测试,如自动检测基于php的服务器端web程序中的不受限的文件上传漏洞漏洞、php远程命令/代码执行(rce)漏洞等,而并不存在对php进行较全面的测试,因此如何有效且全面的检测php漏洞,亟需进一步研究。

技术实现思路

1、有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何有效且全面的检测php漏洞。

2、为实现上述目的,本发明提供了一种基于大型语言模型的php解释器漏洞挖掘方法,涉及web安全领域,该方法提出了一个php模糊测试工具phpfuzzer,所述phpfuzzer可分为三个模块:生成模块、变异模块和模糊测试模块;所述生成模块只需要接收用户不规范的自然语言描述以及简单的代码示例作为输入,输出高质量的模糊测试种子,所述变异模块接收这些种子作为输入,利用两种提示方法指导大语言模型生成更多样化的模糊测试种子集,最后的所述模糊测试模块可以对所有版本的php语言解释器进行模糊测试。

3、进一步地,所述方法包括以下步骤:

4、步骤1、phpfuzzer接收用户输入,这些输入描述了要生成的模糊测试种子,包括php的文档、示例代码片段、规范;php解释器接受的输入是一个php脚本,必须符合特定的语法规则,大语言模型可以轻松地生成符合规范的种子。

5、步骤2、之后接着进入种子变异环节,会在使用两种生成指令作为提示,引导模型生成新的模糊测试输入;

6、步骤3、最终将生成的所有模糊测试种子传递给afl++,由afl++对各个版本的php进行模糊测试,检查是否会产生崩溃。

7、进一步地,与传统的php模糊测试工具不同,所述phpfuzzer要求输入遵循特定格式,包括用作种子的代码片段或格式良好的说明,本系统能直接理解用户输入中的自然语言描述或代码示例;虽然用户输入中的一些信息可能是多余或无关的,但由于本系统采用gpt-4turbo,而这个大语言模型的可接收上下文窗口高达128k tokens,所以允许存在一些多余的信息。

8、进一步地,所述变异模块利用了大语言模型运用示例和自然语言指令来指导生成的能力;所为了进一步生成能覆盖新代码并发现新错误的多样化模糊测试种子集,所述变异模块借鉴了基于突变的模糊测试器mutation-based fuzzer的核心思想,基于突变的模糊测试器是一种常见的模糊测试工具,其核心思想是对现有的有效输入数据进行小的、随机的修改,以生成新的测试用例。

9、进一步地,所述模糊测试器依赖于有效输入的变异来探索程序的执行路径,并试图触发程序中的错误或漏洞。

10、进一步地,所述模糊测试器的工作包括以下几个步骤:

11、步骤a、选择种子,测试开始时,基于突变的模糊测试器从一个预先定义的种子库中选择输入文件;

12、步骤b、模糊测试器生成突变,对选定的种子文件应用一系列突变操作,包括位翻转、字节替换、删除、插入,以生成新的测试用例;

13、步骤c、执行测试用例,每生成一个新的测试用例,模糊测试器就会将其作为输入传递给目标程序,监控程序的执行,如是否崩溃、产生未定义行为或其他异常情况。

14、进一步地,所述步骤a中,种子是已知的、有效的输入,能通过被测试的程序而不引发错误;

15、进一步地,这些所述突变操作随机执行,也可以根据特定的策略或以前的测试结果进行优化;

16、进一步地,若所述步骤c崩溃或表现异常,所述模糊测试器会记录相关的错误信息,包括测试用例和程序的崩溃状态。

17、进一步地,所述模糊测试模块将模糊测试种子集作为输入,传递给afl++,然后进行模糊测试。

18、本发明具有如下技术效果:

19、(1)在崩溃发现方面,使用phpfuzzer进行模糊测试得到的崩溃数量明显多于进使用afl++模糊测试器得到的崩溃数;在代码覆盖率方面,phpfuzzer的运行24小时代码覆盖率明显高于目前最先进的afl++模糊测试器;

20、(2)phpfuzzer检测php漏洞的效率和效果相比afl和afl++均有一定的提升。

21、以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

本文地址:https://www.jishuxx.com/zhuanli/20240929/312893.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。