【技术实现步骤摘要】
基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置
[0001]本专利技术属于网络安全
,尤其涉及一种基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置。
技术介绍
[0002]公共组件库是具有良好定义的接口的功能集合,各种独立程序都可以使用由开发人员开发的公共组件库的功能。这种特性的重用为计算机科学领域做出了贡献,因为它的实现时间和成本都很低,生产效率很高,据统计,使用开源组件库的软件占用软件市场的90%以上。然而在程序开发设计阶段,开发者经常忽略了公共组件库的漏洞审查,甚至有些公共组件库被信手拈来使用,从根本上缺乏了安全审计。如果某个公共组件库存在漏洞,那么,大量使用了该库的软件都将面临安全威胁。这种场景,在现实世界中已经有了血淋淋的证明:如OpenSSL中出现的心脏滴血漏洞(Heartbleed)、GNU Bash出现的破壳漏洞(Shellshock)、 Java中的反序列化漏洞(Deserialization)和Apache Log4j2中出现的远程代码执行(RCE)漏洞等,这些都是实际应用程序中,存在公共组件库或应用框架漏洞的典型案例。2013年OWASP将“使用有已知漏洞的组件”列为十大网络安全风险,2021年OWASP将其改名为“脆弱过时组件(Vulnerable and OutdatedComponent)”,排名第六。
[0003]针对公共组件库中可能存在的漏洞,工业界已经开发了一些漏洞检测工具,如OWASP DEPENDENCY CHECK、WHITESOURCE和SNY ...
【技术保护点】
【技术特征摘要】
1.一种基于符号化污点分析的公共组件库漏洞可利用性分析方法,其特征在于,包括:步骤1:采用Pin对公共组件库的二进制程序进行动态二进制插桩;步骤2:对面向公共组件库的模糊测试产生的Crash文件进行污点标记,采用正向污点分析对插桩后的二进制程序调用公共组件库的路径进行分析,采用反向污点分析对Crash文件到公共组件库的脆弱点位置进行分析,结合正向和反向污点分析,对污点传播路径进行信息提取;步骤3:根据步骤2中提取的信息设计可利用性分析规则,将可利用性分为直接可利用、可能可利用和不可利用三个等级,对公共组件库漏洞的可利用性进行评估。2.根据权利要求1所述的基于符号化污点分析的公共组件库漏洞可利用性分析方法,其特征在于,所述步骤2包括:步骤2.1:污点标记;包括:将Crash文件标记为污染源Source点,并将数据分配给寄存器或内存操作数,然后二进制程序通过插桩后执行并读取污点数据,如果执行过程中存在系统调用,则提取目标函数的寄存器和内存操作数数据,判断目标函数参数是否被污染,如果内存或寄存器数据被污染,则将其指向的数据标记为污点数据;如果内存或寄存器数据被非污点数据覆盖,则删除污点;步骤2.2:污点传播;包括:污点变量根据指令语义和敏感函数的传播约束在程序中进行传播,当程序执行时,首先判断指令操作数所在寄存器或内存地址是否被污染,如果污染则将其标记为污点并赋予标签,然后修改污点变量的相关属性并将污点变量加入到属性链表中;如果此时污染的寄存器或内存地址被无污染的数据覆盖,则删除污点标记,然后执行下一条指令;通过模糊测试获取的Crash文件和崩溃信息标记Sink点,对于无效指令导致的崩溃,将EIP寄存器标记为Sink点;对于取消引用无效地址导致的崩溃,将通用寄存器标记为Sink点;在程序执行时,当识别到Sink点后对其进行污点标记并执行反向污点传播;步骤2.3:信息提取;包括:通过实时记录执行路径下的函数信息,并结合污点变量标签构建函数路径链表FP,函数路径链表FP包括执行次序FD、执行函数名FN、函数地址FA、栈基址SA,在程序执行过程中实时记录EIP/EBP的状态和程序崩溃或结束时函数到达位置。3.根据权利要求2所述的基于符号化污点分析的公共组件库漏洞可利用性分析方法,其特征在于,在污点标记过程中,每个污点变量用标签<ID,TS,TT,TL>表示,其中ID表示污点变量序号;TS表示污点变量的直接污染源,污点源的直接污染源为其自身;TT表示污点变量的内存污染情况,0表示无污染,否则表示污染;TL表示污点变量的属性链表,包括内存数据链表TL
‑
Mem和寄存器数据链表TL
‑
Reg,污点变量的属性包括污点变量的地址Addr、大小Size、直接污点源的长度Len、变量的栈底指针EBP和指令指针EIP。4.根据权利要求1所述的基于符号化污点分析的公共组件库漏洞可利用性分析方法,其特征在于,所述步骤3包括:将正向污点分析和反向污点分析获取的两个不同的执行信息进行对比,查看执行路径是否重合,判断组件库的Crash文件在二进制程序中是否可以到达脆弱点位置;然后分析EIP寄存器是否被覆盖,包括EIP/EBP是否为符号值,综合上述分析将分析结果分为直接可
利用、可能可利用和不可利用三个等级。5.根据权利要求1所述的基于符号化污点分析的公共组件库漏洞可利用性分析方法,其特征在于,所述可利用性分析规则包括:首先根据步骤2获取的信息提取污点变量的函数执行路径,然后将正向污点分析执行路径与反向污点分析执行路径进行对比,如果在程序崩溃时执行路径相同,则将该漏洞归类为直接可利用漏洞,路径不同时进行下一步EIP/EBP分析;如果程序执行结束而未发生崩溃,不论此时执行路径是否相同,都进行下一步EIP/EBP分析;当检测到EIP寄存器的值被污点变量的符号值覆盖时,表示该漏洞可能可利用,然后检查污点变量的属性标签,污点变量的最大安全范围为Addr
‑
EBP,实际使用范围为Size,并且由直接污点源的长度Len控制,因此如果污点变量的Len>Addr
‑
EBP时,程序出现崩溃,此时查看当前函数内执行指令,如果是跳转指令或读写指令,则表示该漏洞为可能可利用,否则该漏洞为不可利用;将信号中断崩溃、空指针、除零、访问无效地址和软件配置错误归类为不可利用。6.一种基于符号化污点分析的公共组件库漏洞可利用性分析装...
【专利技术属性】
技术研发人员:袁会杰,魏强,武泽慧,王允超,王新蕾,周国淼,宗国笑,黄辉辉,
申请(专利权)人:中国人民解放军战略支援部队信息工程大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。