1.本技术涉及物联网安全领域,尤其涉及一种有效负荷的检测方法及装置。
背景技术:2.iast(interactive application security testing),交互式应用安全测试,是一个能自动识别判断应用和api漏洞的一种技术。与传统的漏扫工具不同,iast是借助插桩技术,利用安全探头持续的获取安全事件,结合分析引擎,在应用内部监控并发现漏洞,一般应用在产品上线前的测试环境中,可将漏洞扼杀在功能测试阶段,极大程度上降低了产品上线后的安全风险,但这类方式仍有不足:一方面,iast虽然漏洞检出率和准确度相对较高,但检出的漏洞还是需要人工进行审核复现方可确认;另一方面,虽然可以利用污点跟踪技术去发掘污染源,但是对于注入漏洞的拼接语句,还是需要大量的payload(有效负荷)去做漏洞验证,非常依赖安全人员的自身安全能力,并会占用安全人员大量时间。
技术实现要素:3.本技术提供的一种有效负荷的检测方法,旨在解决现有技术中对检测出的漏洞进行验证需要耗费大量人力的问题。
4.为实现上述目的,本技术采用以下技术方案:
5.本技术的一种有效负荷的检测方法,包括以下步骤:
6.利用插桩技术在代码运行的中间件上注入探针,并将所述中间件的所有输入数据标记为初始污点;
7.利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点;
8.获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷;
9.将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷。
10.作为优选,所述利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点,包括:
11.利用所述探针监控所述初始污点的传播路径,并根据所述传播路径判断初始污点数据是否均经过无害处理到达污点汇聚点,若否,则将未经过无害处理的初始污点数据标记为目标污点。
12.作为优选,所述获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷,包括:
13.根据所述目标污点的传播路径提取出其数据流信息,并对所述数据流信息进行特征分析得到所述目标污点的污染源特征;
14.将所述数据流信息输入预先训练的目标决策树中,并根据所述污染源特征确定所
述目标决策树的决策路径;
15.根据所述决策路径确定与所述目标污点匹配的若干目标有效负荷。
16.作为优选,所述污染源特征包含数据库类型、注入方式和注入点类型。
17.作为优选,所述根据所述决策路径确定与所述目标污点匹配的若干目标有效负荷,包括:
18.根据所述数据库类型、注入方式和注入点类型确定所述目标决策树中与所述目标污点初步匹配的若干候选有效负荷;
19.标记每个候选有效负荷的注入点,并分别与所述目标污点的注入点进行比对,若一致,则将对应的候选有效负荷记为目标有效负荷。
20.作为优选,所述将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷,包括:
21.获取若干所述目标有效负荷对应的字段,并将每个目标有效负荷注入点后的字段分别与所述目标污点的数据流进行拼接;
22.利用函数预编译方法对拼接结果进行数据库语句的完整性校验,校验通过,则将对应的目标有效负荷标记为所述目标污点对应的最优有效负荷。
23.一种有效负荷的检测装置,包括:
24.标记模块,用于利用插桩技术在代码运行的中间件上注入探针,并将所述中间件的所有输入数据标记为初始污点;
25.选择模块,用于利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点;
26.匹配模块,用于获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷;
27.确定模块,用于将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷。
28.作为优选,所述匹配模块包括:
29.分析单元,用于根据所述目标污点的传播路径提取出其数据流信息,并对所述数据流信息进行特征分析得到所述目标污点的污染源特征;
30.输入单元,用于将所述数据流信息输入预先训练的目标决策树中,并根据所述污染源特征确定所述目标决策树的决策路径;
31.过滤单元,用于根据所述决策路径确定与所述目标污点匹配的若干目标有效负荷。
32.一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如上述中任一项所述的一种有效负荷的检测方法。
33.一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述中任一项所述的一种有效负荷的检测方法。
34.本发明具有如下有益效果:
35.本技术通过将污点数据流信息输入预先训练的目标决策树中进行有效负荷的筛选,不仅极大地降低了漏洞验证所需要的时间和性能资源,提高了安全人员工作效率,还对
业务环境完全无侵入,可以避免脏数据的产生,确保了业务系统的稳定性。
附图说明
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
37.图1是本技术提供的一种有效负荷的检测方法的流程图;
38.图2是本技术提供的目标决策树的原理图;
39.图3是本技术提供的目标决策树的判断逻辑图;
40.图4是本技术提供的一种有效负荷的检测装置示意图;
41.图5是本技术实现一种有效负荷的检测方法的电子设备示意图。
具体实施方式
42.下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.本技术的权利要求书和说明书的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式,此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他单元。
44.在网络安全中,payload也叫有效载荷或有效负荷,是指成功利用系统漏洞进行攻击后真正在目标系统执行的代码或指令,也就是说payload是用来实现攻击者目的的,比如创建账户、修改密码等,同时payload可以被模块化,一个payload稍作修改就能用于各种不同的漏洞,因此可利用payload来验证漏洞。
45.本实施例提供一种有效负荷的检测方法,如图1所示,其利用现有的污点分析技术获取未经过无害处理的污点,再根据其污染源特征去目标决策树中匹配最优解payload(有效负荷),即可实现漏洞验证,具体包括以下步骤:
46.s110、利用插桩技术在代码运行的中间件上注入探针,并将所述中间件的所有输入数据标记为初始污点;
47.s120、利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点;
48.s130、获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷;
49.s140、将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷。
50.在本实施例中,首先利用插桩技术在代码运行的中间件上注入agent即探针,其中,插桩技术是指在保证原有程序逻辑完整性的基础上,在程序中插入探针,并通过探针采集代码中的信息,如方法本身、方法参数值和返回值等,简单理解就是在特定的位置插上代码段以收集程序运行时的动态上下文信息。通过插桩技术不仅可以把发现的安全漏洞定位到代码行,还可得到其完整的请求和响应信息以及完整的数据流和堆栈信息以修复和验证安全漏洞。
51.具体地,利用所述探针监控所述初始污点的传播路径,并根据所述传播路径判断初始污点数据是否均经过无害处理到达污点汇聚点,若否,则将未经过无害处理的初始污点数据标记为目标污点。
52.接着利用污点分析技术判断中间件是否存在安全问题,即以零信任的方式去看待中间件的所有外部输入数据,并将其标记为初始污点,通过agent在中间件上监控初始污点的流转可得到初始污点的传播路径,根据传播路径可判断初始污点对应的数据是否都是经过无害处理到达的污点汇聚点,若否,就将所有未经过无害处理到达污点汇聚点的初始污点数据标记为目标污点,其中,污点分析是指分析程序中由污点源引入的数据能否不经无害处理而直接传播到污点汇聚点,如果不能,说明数据流是安全的,否则,说明系统产生了隐私数据泄露或类似注入漏洞的安全风险,其中,污点源sources代表直接引入不受信任的数据或机密数据到系统中,污点汇聚点sink代表直接产生安全敏感操作或者泄露隐私数据到外界,无害处理sanitizer代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害,本实施例中通过插桩技术可直接定位未经过无害处理而到达污点汇聚点的数据,提高了漏洞检测效率。
53.具体地,根据所述目标污点的传播路径提取出其数据流信息,并对所述数据流信息进行特征分析得到所述目标污点的污染源特征;
54.将所述数据流信息输入预先训练的目标决策树中,并根据所述污染源特征确定所述目标决策树的决策路径;
55.根据所述决策路径确定与所述目标污点匹配的若干目标有效负荷。
56.根据目标污点的传播路径即可从系统中提取出目标污点的数据流信息,再对数据流信息进行分析以提取出目标污点的污染源特征,在本实施例中,污染源特征包括但不限于数据库类型、注入方式和注入点类型,把目标污点的数据流信息输入预先训练好的目标决策树中,通过提取出的污染源特征来判断目标决策树的决策走向,最后得到与目标污点匹配的若干目标有效负荷。
57.其中,预先训练目标决策树是指将目前已知的所有注入payload写入学习模型中,再利用递归思想对这些payload进行划分,主要分为三个阶段,第一个阶段是基于数据库类型的过滤,即根据每个数据库语言存在的差异进行数据库分类,将每个payload划分进对应的数据库判断池中,每个数据库sql语句都有不同类型特征,例如oracle的sql语句全为大写字母,mysql用select,mongodb用find等;第二个阶段是基于注入方式的过滤,基于第一阶段的过滤结果,在每个数据库判断池中进行第二次过滤,即将payload按照字符注入、表单注入、盲注等常见攻击类型进行分类,亦可理解为在每个数据库判断池里再次划分多个不同的注入方式判断池,每个注入方式在大类上构造格式不同,例如字符型后面会直接尝试拼接sql语句,而盲注则会跟一些命令执行或者判断语句看回显;第三个阶段是基于注入
点类型即payload sink点特征的过滤,在每个注入方式判断池中进行第三次过滤,将payload按照数字、post、报错等注入点类型分类,得到若干个sql特征判断池,在知道注入方式的情况下,可以细分很多种sql注入点类型,例如盲注里可以基于报错或者时间等,基于报错的盲注sql语句中有明显的尝试判断的语句,例如用id=1'and info()
‑‑
+来显示当前库,回显会报错当前库不存在这个函数,并获得当前数据库的信息;而基于时间的盲注则存在sleep等函数关键字;最后生成目标决策树,目标决策树的原理如图2所示。
58.具体地,根据所述数据库类型、注入方式和注入点类型确定所述目标决策树中与所述目标污点初步匹配的若干候选有效负荷;
59.标记每个候选有效负荷的注入点,并分别与所述目标污点的注入点进行比对,若一致,则将对应的候选有效负荷记为目标有效负荷。
60.将目标污点的数据库类型、注入方式和注入点类型依次与目标决策树的决策分支进行比对,即可找到与目标污点相匹配的若干候选payload,但这还不够准确,还需要标记出这些候选payload的注入点,并将其与目标污点的注入点进行一一比对,只有注入点一致的候选payload才是真正与目标污点匹配的目标payload,其判断逻辑如图3所示。
61.具体地,获取若干所述目标有效负荷对应的字段,并将每个目标有效负荷注入点后的字段分别与所述目标污点的数据流进行拼接;
62.利用函数预编译方法对拼接结果进行数据库语句的完整性校验,校验通过,则将对应的目标有效负荷标记为所述目标污点对应的最优有效负荷。
63.通过目标决策树的三层过滤可为目标污点匹配到相似度最高的若干条目标payload,再截取每一个目标payload注入点后面的字段分别与目标污点的数据流进行拼接,例如根据污点分析技术得到的目标污点对应的sql语句为select*from user where id=2,通过目标决策树过滤得到的某一目标payload是select*from user where id=1'union select 1,database(),3
‑‑
+,那么就截取目标payload中1后面的字段并将其拼接到目标污点对应的sql语句中,输出的就是select*from user where id=2'union select 1,database(),3
‑‑
+,然后利用函数预编译技术来判断拼接得到的sql语句是否完整,最后将通过完整性校验的目标payload作为目标污点的最优解payload,并返回所有结果,若无返回则说明该污染源不存在注入漏洞。
64.本实施例基于污点分析技术获取数据流信息,再利用目标决策树进行自动化过滤即得到可用payload,不仅极大地降低了漏洞验证所需要的时间和性能资源,提高安全人员工作效率,还对业务环境完全无侵入,避免产生脏数据,确保了业务系统的稳定性。
65.本实施例提供一种有效负荷的检测装置,如图4所示,包括:
66.标记模块,用于利用插桩技术在代码运行的中间件上注入探针,并将所述中间件的所有输入数据标记为初始污点;
67.选择模块,用于利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点;
68.匹配模块,用于获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷;
69.确定模块,用于将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷。
70.上述装置的一种实施方式可为:标记模块利用插桩技术在代码运行的中间件上注入探针,并将所述中间件的所有输入数据标记为初始污点;选择模块利用所述探针获取所述初始污点的传播路径,并根据所述传播路径从所述初始污点中筛选出目标污点;匹配模块获取所述目标污点的污染源特征,并基于决策树分析法和所述污染源特征确定与所述目标污点匹配的若干目标有效负荷;确定模块将若干所述目标有效负荷分别与所述目标污点的数据流进行拼接和预编译以确定所述目标污点对应的最优有效负荷。
71.本实施例提供一种电子设备,如图5所示,包括存储器501和处理器502,所述存储器501用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器502执行以实现上述的一种有效负荷的检测方法。
72.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
73.本实施例提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述的一种有效负荷的检测方法。
74.示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器501中,并由处理器502执行,并由输入接口505和输出接口506完成数据的i/o接口传输,以完成本发明,一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机设备中的执行过程。
75.计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,存储器501、处理器502,本领域技术人员可以理解,本实施例仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入器507、网络接入设备、总线等。
76.处理器502可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器502、数字信号处理器502(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器502可以是微处理器502或者该处理器502也可以是任何常规的处理器502等。
77.存储器501可以是计算机设备的内部存储单元,例如计算机设备的硬盘或内存。存储器501也可以是计算机设备的外部存储设备,例如计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等,进一步地,存储器501还可以既包括计算机设备的内部存储单元也包括外部存储设备,存储器501用于存储计算机程序以及计算机设备所需的其他程序和数据,存储器501还可以用于暂时地存储在输出器508,而前述的存储介质包括u盘、移动硬盘、只读存储器rom503、随机存储器ram504、碟盘或光盘等各种可以存储程序代码的介质。
78.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。