首页> 中国专利> 一种基于静态表达的漏洞数据动态处理方法及装置

一种基于静态表达的漏洞数据动态处理方法及装置

摘要

本发明提供的一种基于静态表达的漏洞数据动态处理方法及装置,获取原始漏洞信息,所述漏洞信息包括指纹识别信息和静态漏洞信息;对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息;对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息;基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果。

著录项

  • 公开/公告号CN114896606A

    专利类型发明专利

  • 公开/公告日2022-08-12

    原文格式PDF

  • 申请/专利权人 苏州知微安全科技有限公司;

    申请/专利号CN202210821632.9

  • 发明设计人 杜雄杰;王大浩;姜栋;

    申请日2022-07-13

  • 分类号G06F21/57(2013.01);

  • 代理机构

  • 代理人

  • 地址 215000 江苏省苏州市吴中区太湖东路9号澹台湖大厦(武珞科技园)907-1室

  • 入库时间 2023-06-19 16:23:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-24

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F21/57 专利号:ZL2022108216329 变更事项:专利权人 变更前:苏州知微安全科技有限公司 变更后:敦和万物信息技术(苏州)有限公司 变更事项:地址 变更前:215000 江苏省苏州市吴中区太湖东路9号澹台湖大厦(武珞科技园)907-1室 变更后:215000 江苏省苏州市吴中区太湖东路9号澹台湖大厦(武珞科技园)907-1室

    专利权人的姓名或者名称、地址的变更

  • 2022-11-01

    授权

    发明专利权授予

  • 2022-08-30

    实质审查的生效 IPC(主分类):G06F21/57 专利申请号:2022108216329 申请日:20220713

    实质审查的生效

说明书

技术领域

本发明涉及信息安全技术领域,尤其涉及一种基于静态表达的漏洞数据动态处理方法及装置。

背景技术

随着全球范围针对物联网设备的黑客入侵不断猖獗,物联网领域所面临的信息安全问题越发严峻。为了对抗黑客入侵,网络安全厂家推出了诸多与入侵检测和漏洞评估相关的技术和产品。

在针对物联网设备的入侵检测和漏洞评估实施过程中,网络安全研究员需要经常性的实施指纹扫描、概念验证、漏洞利用等工作。例如,CVE(Common Vulnerabilities &EXPosures,即通用漏洞披露)提出了对针对一个漏洞的标准化的描述维度,但是该描述维度并未提供规范化的约束,导致CVE数据的具体形式参差不齐,CVE数据的撰写质量完全依赖于漏洞提供者的个人能力,实际应用中效果不佳。

可以看到,目前我们在积累了大量的设备指纹、POC、EXP等静态表达的漏洞数据之后,缺乏一种统一的规范处理方式去约束这些数据的表达形式,并且对于已有的漏洞数据缺乏进一步的分析挖掘,这些都严重妨碍对漏洞数据执行自动化测试,并导致漏洞数据的交换效率低下。

发明内容

本发明的主要目的在于提出一种可用于风险评估的基于静态表达的漏洞数据动态处理方法及装置,旨在解决提高漏洞数据的规范化处理。

为实现上述目的,本发明提供的一种基于静态表达的漏洞数据动态处理方法,包括:

步骤1,获取原始漏洞信息,所述漏洞信息包括指纹识别信息和静态漏洞信息;

步骤2,对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息;

步骤3,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息;

步骤4,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果。

其中,对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息,包括:构建指纹识别模型,所述指纹识别模型包括多个数字资产静态表达式,基于数字资产静态表达式将所述指纹识别信息中的数字资产信息分别映射为品牌、型号和版本,根据扩展表达式对所述版本进行扩展处理得到包括区间操作符的所述版本,基于品牌、型号和版本组成的三元组,生成规范化指纹识别信息。

其中,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息,包括:提取所述静态漏洞信息中的通道类型,基于通道类型扩展所述通道类型对应的CPU架构信息,对及所述静态漏洞信息中的POC信息和EXP信息进行简化,提取所述静态漏洞信息中的POC简化信息和漏洞利用预置变量。

其中,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果,包括:基于所述规范化指纹识别信息和规范化静态漏洞信息,自动生成漏洞检测表单,调用处理引擎执行所述漏洞检测表单,得到动态漏洞信息。

其中,还包括:基于所述规范化指纹识别信息、所述规范化静态漏洞信息和动态漏洞信息的关联关系,生成一组JSON格式的漏洞信息,并储存至漏洞信息数据库。

本发明还提供一种基于静态表达的漏洞数据动态处理装置,包括:

获取模块,用于获取原始漏洞信息,所述漏洞信息包括指纹识别信息和静态漏洞信息;

规范化处理模块,用于对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息;对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息;

动态模块,用于基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果。

其中,对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息,包括:构建指纹识别模型,所述指纹识别模型包括多个数字资产静态表达式,基于数字资产静态表达式将所述指纹识别信息中的数字资产信息分别映射为品牌、型号和版本,根据扩展表达式对所述版本进行扩展处理得到包括区间操作符的所述版本,基于品牌、型号和版本组成的三元组,生成CPEURI格式的规范化指纹识别信息。

其中,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息,包括:提取所述静态漏洞信息中的通道类型,基于通道类型扩展所述通道类型对应的CPU架构信息,对及所述静态漏洞信息中的POC信息和EXP信息进行简化,提取所述静态漏洞信息中的POC简化信息和漏洞利用预置变量。

其中,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果,包括:基于所述规范化指纹识别信息和规范化静态漏洞信息,自动生成漏洞检测表单,调用处理引擎执行所述漏洞检测表单,得到动态漏洞信息。

其中,还包括:存储模块,用于基于所述规范化指纹识别信息、所述规范化静态漏洞信息和动态漏洞信息的关联关系,生成一组JSON格式的漏洞信息,并储存至漏洞信息数据库。

本发明的有益效果包括:(1)本发明对现有的格式复杂、形式不统一的指纹识别信息和静态漏洞信息做了规范化处理,并将指纹识别信息、静态漏洞信息、动态漏洞信息进行关联存储,提高了漏洞信息的规范化,便于漏洞信息交流共享;(2)基于静态的指纹识别信息和漏洞信息自动生成漏洞检测表单,通过调用处理引擎执行所述漏洞检测表单得到动态漏洞信息,提高了漏洞数据的自动化测试效率;(3)提取CPEURI格式的指纹信息作为规范化指纹识别信息,采用POC简化信息和漏洞利用预置变量作为规范化静态漏洞信息,既提高了漏洞信息的规范性,也为其他形式的漏洞信息的转化利用提供了便利。

附图说明

图1为本发明的方法流程图。

具体实施方式

首先,对本发明中涉及的相关技术进行简要介绍:

CPE:Common Platform Enumeration,通用平台枚举。描述漏洞影响了什么组件的什么版本,那么就可以使用CPE。CPE是以标准化方式为软件应用程序、操作系统及硬件命名的方法。CPE是用于信息技术系统,软件和程序包的结构化命名方案。基于统一资源标识符(URI)的通用语法,CPE包括形式名称格式,用于根据系统检查名称的方法以及用于将文本和测试绑定到名称的描述格式。

CVE:Common Vulnerabilities & EXPosures,通用漏洞披露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据。

POC: Proof of Concept,漏洞的概念验证。POC阶段并不会建立控制通道,而只是验证漏洞是否影响实体。这个短语会在漏洞报告中使用,漏洞报告中的POC是一段说明或者一个攻击的样例,使得读者能够确认这个漏洞是真实存在的。

EXP:EXPloit,即是漏洞利用程序,一般为一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。

本发明提供的一种基于静态表达的漏洞数据动态处理方法,包括:

步骤1,获取原始漏洞信息,所述漏洞信息包括指纹识别信息和静态漏洞信息;

在现有技术中,SCAP的CPE给出了一种CPE身份证,然而其并未给出获取CPE身份证的标准化过程,也未制定过程标准化协议。例如一个CPEURI格式的指纹识别信息如下:

Ruby

cpe:2.3:a:juniper:junos:18.2:r1-s4:*:*:*:*:*:*

CVE对一个漏洞的标准化的描述维度如下:漏洞元数据、漏洞影响范围、漏洞类型、漏洞参考、漏洞描述、漏洞后果、发布和更新时间;然而,在以上维度中仍未解决以下问题:漏洞影响范围的校验过程该如何展开、漏洞后果的具体实施过程该如何展开、如何判断某项资产是否在漏洞影响范围之内。CVE并未给出答案,而是由大家自行发挥。但这种自行发挥显然不利于信息的共享交换。

因此,原始漏洞信息包括CPEURI格式的指纹识别信息,静态漏洞信息包括CVE格式的漏洞信息,还可以包括收集到的与该CVE格式的漏洞信息中CVE编号对应的POC和EXP信息。

步骤2,对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息;

指纹是数据资产的身份证,将指纹信息与数字资产进行关联映射,分解为多个信息元素组,即可得到数字资产静态表达式,数字资产静态表达式能够赋予了指纹识别这一安全实践过程分享和交换的能力。

对此,我们构建指纹识别模型,所述指纹识别模型包括多个数字资产静态表达式,基于数字资产静态表达式将所述指纹识别信息中的数字资产信息分别映射为品牌、型号和版本,根据扩展表达式对所述版本进行扩展处理得到包括区间操作符的所述版本,基于品牌、型号和版本组成的三元组,生成规范化指纹识别信息。

其中,关键的信息是品牌、型号、版本。即规范化指纹识别信息是由数字资产中的品牌、型号、版本等3个元素构成的三元组,该三元组可以与多个数字资产的实体对应。而后续,会将规范化指纹识别信息投射到一个具体数字资产的实体,检测所述实体与规范化指纹识别信息是否匹配,实现实体的指纹识别。数字资产的实体可以是一台路由器,一个摄像头,也可以是一辆智能汽车等物联网中的数字资产设备。

理论上,每一个数字资产静态表达式均代表了一个CPEURI的识别过程。当拥有若干数字资产静态表达式构成的集合后,我们就构建完成了指纹识别模型可以完成对某项数据资产的指纹识别,最终给出该资产的规范化指纹识别信息。

规范化指纹识别信息格式如下:

JSON

{

"brand": ScdlObject,

"model": ScdlObject,

"version": ScdlObject

}

其中,对于brand、model、version的格式,约束规则包括:

value全部用英文表达;

value中的英文全部小写;

value只允许英文字母、数字、空格、"."号,其余字符全部去掉;

不允许连续的多个空格;

不允许value出现二义性(同样的语义,表达应该是一致的);

其中,二义性:比如,DLink品牌,有人写为dlink,有人写为d-link。表达的意思又都是DLink这个品牌,但是表述方式不一样,一旦出现二义性,会破坏规范化指纹识别信息的准确性。

并且,有时对于某个漏洞影响的不止是单点,比如一个固定版本,还可能影响一个大的型号。所以,规范化指纹识别信息提供指纹版本的区间的操作符限定版本范围,具体操作符为["==", "!=", ">", "<", ">=", "<=", "&&"]。比如:

JSON

{

"brand": "dlink",

"model": "dir850",

"version": ">=1.18 && <= 1.20"

}

步骤3,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息;

其中,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息,包括:提取所述静态漏洞信息中的通道类型,基于通道类型扩展所述通道类型对应的CPU架构信息,对及所述静态漏洞信息中的POC信息和EXP信息进行简化,提取所述静态漏洞信息中的POC简化信息和漏洞利用预置变量。

通道类型代表漏洞最终能够实现的对实体的控制形态,可选类型包括4种大的类型:telnet、ssh、bind、reverse。bing是正向监听类型的控制通道,reverse是反弹型控制通道。由于目标设备的架构可能不一致,所以通道类型还需要包含CPU架构信息。

表达规范如下:

JSON

{

"channelType": [string, ...]

}

CPU架构信息采用支持的架构列表,包括:

Apache aix/ppc64 android/386 android/amd64 android/arm android/arm64darwin/amd64 darwin/arm64 dragonfly/amd64 freebsd/386 freebsd/amd64 freebsd/arm freebsd/arm64 illumos/amd64 ios/amd64 ios/arm64 js/wasm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/riscv64 linux/s390x netbsd/386 netbsd/amd64 netbsd/arm netbsd/arm64 openbsd/386 openbsd/amd64 openbsd/arm openbsd/arm64 openbsd/mips64 plan9/386 plan9/amd64 plan9/arm solaris/amd64 windows/386 windows/amd64 windows/arm windows/arm64

为了格式统一,上述CPU架构信息中的“/”需更换为“_”。

对及所述静态漏洞信息中的POC信息和EXP信息进行简化,主要包括对其中的连接等无效操作代码进行过滤,只保留核心代码。后续,连接等基础操作代码由处理引擎统一实现。

漏洞利用预置变量是为了满足POC或EXP启动时对初始化参数的需求;漏洞利用预置变量须符合如下格式:

JSON

{

"initParam": [

{"name": "", "value": ""}

]

}

其中,规范化指纹识别信息和规范化静态漏洞信息均属于静态表达。因为规范化指纹识别信息和规范化静态漏洞信息均未经过动态验证,所以有必要对上述静态表达的内容进行动态验证。

步骤4,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果。其中,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果,包括:基于所述规范化指纹识别信息和规范化静态漏洞信息,自动生成漏洞检测表单,调用处理引擎执行所述漏洞检测表单,得到动态漏洞信息。

动态漏洞信息包括POC表达和EXP表达,所述POC表达和EXP表达均为动态数据表达的形式。其中,POC阶段并不会建立控制通道,而只是验证漏洞是否影响实体。POC表达结构如下:

JSON

{

"POC": {

"operation": string,

"steps": [interactionObject, ...]

}

}

其中,operation是对POC多阶段的逻辑判断标准,取值范围为["AND", "OR"]。

当operation==AND时,所有的interactionObject均返回True,POC才会返回true。

当operation==OR时,只要有一个interactionObject返回True,POC就会返回true。

interactionObject是交互对象,包含了交互过程、响应期望、变量设置等表达,其输出是二元结果:true or false。

EXP为EXPloit的简称,是漏洞利用程序,此处我们主要关注实体的权限控制。EXP表达结构如下:

JSON

{

"channelType": [],

"EXP": {

"[channelType]":{

"operation": "",

"steps":[interactionObject,...]

}

}

}

由于漏洞的利用方式可能有多种,所以在EXP表达中需要对每一种可能的控制方式进行表达。

其中,还包括:基于所述规范化指纹识别信息、所述规范化静态漏洞信息和动态漏洞信息的关联关系,生成一组JSON格式的漏洞信息,并储存至漏洞信息数据库。

最后,我们得到一组JSON格式的漏洞信息如下:

总体结构如下:

JSON

{

"desc": {

"name": string,

"level": string,

"detail": string

},

"fingerprint": [

{

"brand": "dlink",

"model": "dir850",

"version": ">=1.18 && <= 1.20"

}

],

"channelType": ["bind_linux_mips", "reverse_linux_arm"],

"affectedArch": ["linux/mips", "linux/arm"],

"initParam": [

{

"name": "",

"value": ""

}

],

"poc": {

"operation": string,

"steps": [interactionObject, ...]

},

"exp": {

"bind_linux_mips":{

"operation": "AND",

"steps":[interactionObject,...]

},

"reverse_linux_arm":{

"operation": "OR",

"steps":[interactionObject,...]

}

}

}

由于JSON是一种扩展性、可读性良好的半结构化数据形式,后续可以以简单的JSON读取程序读取出其中的漏洞信息,无需编写复杂的逻辑代码。将所述规范化指纹识别信息、所述规范化静态漏洞信息和动态漏洞信息的关联关系,生成一组JSON格式的漏洞信息,对漏洞数据做了充分的整合、挖掘,综合了静态与动态的漏洞数据,提高了漏洞数据的规范化表达能力,充分挖掘出漏洞数据中的信息,又提高漏洞信息的共享效率。

本发明还提供一种基于静态表达的漏洞数据动态处理装置,包括:

获取模块,用于获取原始漏洞信息,所述漏洞信息包括指纹识别信息和静态漏洞信息;

规范化处理模块,用于对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息;对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息;

动态模块,用于基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果。

其中,对所述指纹识别信息进行规范化处理,生成品牌、型号和版本组成的三元组,作为规范化指纹识别信息,包括:构建指纹识别模型,所述指纹识别模型包括多个数字资产静态表达式,基于数字资产静态表达式将所述指纹识别信息中的数字资产信息分别映射为品牌、型号和版本,根据扩展表达式对所述版本进行扩展处理得到包括区间操作符的所述版本,基于品牌、型号和版本组成的三元组,生成规范化指纹识别信息。

其中,对所述静态漏洞信息进行规范化处理,生成包括通道类型和漏洞利用预置变量的规范化静态漏洞信息,包括:提取所述静态漏洞信息中的通道类型,基于通道类型扩展所述通道类型对应的CPU架构信息,对及所述静态漏洞信息中的POC信息和EXP信息进行简化,提取所述静态漏洞信息中的POC简化信息和漏洞利用预置变量。

其中,基于所述规范化指纹识别信息和规范化静态漏洞信息,得到动态漏洞信息,所述动态漏洞信息包括漏洞验证结果和漏洞利用结果,包括:基于所述规范化指纹识别信息和规范化静态漏洞信息,自动生成漏洞检测表单,调用处理引擎执行所述漏洞检测表单,得到动态漏洞信息。

其中,还包括:存储模块,用于基于所述规范化指纹识别信息、所述规范化静态漏洞信息和动态漏洞信息的关联关系,生成一组JSON格式的漏洞信息,并储存至漏洞信息数据库。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号