当前位置: 首页 > 专利查询>上海大学专利>正文

一种面向Net反序列化漏洞挖掘的静态代码双流相向分析方法技术

技术编号:35100273 阅读:16 留言:0更新日期:2022-10-01 17:06
本发明专利技术提供一种面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,可针对反序列化调用连通路径进行更加高效的代码分析,大大降低漏洞挖掘与分析工作的人力成本。该方法包括如下步骤:1)待测对象反编译:运用反编译技术,将.NET程序集反编译为C#源代码以供分析;2)数据流正向分析:使用自动化检测软件进行数据流的正向路径分析;3)控制流反向分析:使用自动化分析工具进行控制流的反向路径分析;4)人工路径匹配:基于数据流和控制流的双流相向分析结果进行漏洞利用通路的人工匹配和验证。本发明专利技术方法能够有效提高C#代码的分析速率和反序列化漏洞的挖掘效率。列化漏洞的挖掘效率。列化漏洞的挖掘效率。

【技术实现步骤摘要】
一种面向Net反序列化漏洞挖掘的静态代码双流相向分析方法


[0001]本专利技术面向.NET平台反序列化漏洞挖掘提出了一种基于静态污点分析技术的双流相向代码分析方法,可针对反序列化调用连通路径进行更加高效的代码分析。

技术介绍

[0002]序列化器是信息传递和数据存储类应用程序的必要组件,因此反序列化功能普遍应用于.NET平台的各类软件中。然而当软件处理外部输入的用户数据时,反序列化方法极有可能被恶意利用,即当应用程序过于信任用户(或称之为攻击者),用户数据遭到篡改和利用,反序列化将可能导致严重的网络攻击。
[0003]当满足以下三个条件时,即可构成反序列化漏洞:(a)序列化对象由用户提供或者用户可以进行修改;(b)应用程序尝试绕过验证进行反序列化和调用对象;(c)应用程序在函数调用链中包含具有利用价值的类库。攻击者通过上述条件能够操纵序列化对象,并将危险数据传递到应用程序中,甚至用完全不同的类替换原序列化对象,类库中任何有价值的对象皆可被反序列化和实例化,通常对象被替换会导致程序报错、异常,然而攻击可能已经在反序列化完成之前达成,这意味着即使应用程序自身的功能不直接与恶意对象交互,反序列化过程本身也可以发起攻击。
[0004]由此可知,软件中的反序列化风险可能导致非常严重的后果,因为它大大增加了各种网络威胁的攻击范围。反序列化入口点给予攻击者实现代码重用攻击(Code

Reuse Attacks)的机会,从而诱发其他各种漏洞。优先级最高的是RCE,它的危害程度极大。即使在无法实现RCE的情况下,不安全的反序列化也可导致任意文件访问、系统权限提升和DoS等。同时依据漏洞构成条件的要求,应用程序中需要有对外开放的数据入口,才可实现用户的数据传输。此时攻击者从用户界面输入风险数据,其中的恶意代码可通过开放入口传输给反序列化方法,反序列化器解析数据文本,触发构造好的反序列化调用链,最终构建出攻击者可利用的系统对象,实现对软件系统的控制或者破坏。总之,攻击代码从反序列化方法的入口点完整传输到序列化器内部,才能成功触发反序列化调用链。漏洞挖掘中的关键就是通过对软件代码的分析来确认入口点与对外开放点之间是否存在连通路径。
[0005]在针对反序列化风险的研究方法中,白盒分析是最为直接的防御手段,它主要采用人工进行代码审计,但是在静态分析C#程序集的源代码时会消耗大量的时间和精力,且高度依赖分析人员的技术知识。与此同时,污点分析作为程序分析技术中确保信息流安全的常用方法,可以有效处理反序列化漏洞中的信息泄露、信息污染等问题。

技术实现思路

[0006]针对.NET反序列化漏洞挖掘工作中高度依赖人工分析和人员经验的问题,本专利技术提供一种面向Net反序列化漏洞挖掘的静态代码双流相向分析方法。
[0007]为了达到上述专利技术目的,本专利技术通过以下具体技术方案进行实现:
[0008]一种面向.Net反序列化漏洞挖掘的静态代码双流相向分析方法,包括如下步骤:
[0009]1)待测对象反编译:运用反编译技术,将.NET程序集反编译为C#源代码以供分析;
[0010]2)数据流正向分析:通过自动化检测软件进行数据流的正向路径分析;
[0011]3)控制流反向分析:通过自动化分析工具进行控制流的反向路径分析;
[0012]4)人工路径匹配:基于数据流和控制流的双流相向分析结果进行漏洞利用通路的人工匹配和验证。
[0013]优选地,所述步骤2)具体包括下列步骤:
[0014]步骤2.1、选取合适的静态污点分析软件对待检测的C#程序集进行数据流分析;
[0015]步骤2.2、选择适当的分析策略,并在静态污点分析流程中指定污点源(Source)和爆发点(Sink),进行反序列化调用连通路径的正向分析;
[0016]步骤2.3、基于静态污点分析软件,获得数据流正向分析的路径结果。
[0017]优选地,所述步骤3)具体包括下列步骤:
[0018]步骤3.1、选取合适的控制流图(CFG)和函数调用图(CG)生成工具对C#代码进行控制流分析;
[0019]步骤3.2、基于CFG和CG生成工具进行反序列化调用连通路径的反向分析,获得控制流分析的反向路径结果。
[0020]优选地,所述步骤4)具体包括下列步骤:
[0021]步骤4.1、根据步骤2)获取的正向路径分析结果和据步骤3)获取的反向路径分析结果,进行人工路径匹配;
[0022]步骤4.2、基于双流相向匹配的连通路径进行反序列化调用过程的验证,即通过漏洞利用实验证明反序列化漏洞的可行性和严重性(Proof of Concept,PoC)。
[0023]优选地,在所述步骤2.2中,软件代码分析采取误报的分析策略,即对程序中所有可能的连通路径进行“过分析”;理论上完美的程序静态分析报告应该真实地反映所有的错误;而实际操作中往往会产生两种结果,漏报和误报;漏报是指分析报告中包含的错误都是真实的漏洞,但是程序中还有未被发现的漏洞;误报则表示结果中报告了所有的错误,但是并不能保证这些漏洞都是成立的;
[0024]误报策略的具体操作为:在自定义安全代码扫描器加脏分析规则表的过程中,将所有可能存在的Source和Sink全部列入分析范围之中;第一步,在SCS的Source定义表中总结并标注出.NET中的外部数据接收点,并制定规则;第二步,制定关于Sink的分析规则;
[0025]同时,使用SCS静态污点分析的关键点在于标记被检测C#源代码中的Source和Sink;定义待测.NET程序的外部输入点为Source,程序内的反序列化入口点为Sink;在确定好起点Source和终点Sink之后,SCS自动化分析程序代码的信息流。
[0026]优选地,在所述步骤3.1中,选用Doxygen工具与GraphViz工具两者相结合的方法来完成;Doxygen工具依据.NET程序本身的内容,提取代码结构自动生成方法依赖、类型继承以及函数调用关系等信息;GraphViz是一款用于绘制DOT脚本语言描述图形的开源工具,基于Doxygen给出的程序信息,GraphViz自动生成CG等图形以供控制流分析使用;可视化的图形信息用于分析和判断SCS报告中的路径是否可行,即使生成误报也借此筛选和剔除,以避免分析资源的浪费和提高代码分析的整体效率。
[0027]优选地,在所述步骤3.2中,面对步骤2.2产生“过分析”以致漏洞检测效率下降的
情况,根据控制流信息进行辅助分析的方法进行解决;CFG和CG的构建用于分析程序中对反序列化方法具体的调用流程,针对反序列化方法调用者进行分析,即从反序列化风险入口点出发进行向上追踪,获取风险点被外部环境直接调用的函数关系路径。
[0028]与现有技术相比,本专利技术具有如下的优点:
[0029]1.本专利技术方法在静态污点分析的基础上,结合相关自动化工具和C#反编译软件,实现更高效的代码静态分析和风险路径的追踪,以提高本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,其特征在于,包括如下步骤:1)待测对象反编译:运用反编译技术,将.NET程序集反编译为C#源代码以供分析;2)数据流正向分析:通过自动化检测软件进行数据流的正向路径分析;3)控制流反向分析:通过自动化分析工具进行控制流的反向路径分析;4)人工路径匹配:基于数据流和控制流的双流相向分析结果进行漏洞利用通路的人工匹配和验证。2.根据权利要求1所述的面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,其特征在于,所述步骤2)具体包括下列步骤:步骤2.1、选取合适的静态污点分析软件对待检测的C#程序集进行数据流分析;步骤2.2、选择适当的分析策略,并在静态污点分析流程中指定污点源和爆发点,进行反序列化调用连通路径的正向分析;步骤2.3、基于静态污点分析软件,获得数据流正向分析的路径结果。3.根据权利要求1所述的面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,其特征在于,所述步骤3)具体包括下列步骤:步骤3.1、选取合适的控制流图CFG和函数调用图CG生成工具对C#代码进行控制流分析;步骤3.2、基于CFG和CG生成工具进行反序列化调用连通路径的反向分析,获得控制流分析的反向路径结果。4.根据权利要求1所述的面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,其特征在于,所述步骤4)具体包括下列步骤:步骤4.1、根据步骤2)获取的正向路径分析结果和据步骤3)获取的反向路径分析结果,进行人工的路径匹配;步骤4.2、基于双流相向匹配的连通路径进行反序列化调用过程的验证,即通过漏洞利用实验证明反序列化漏洞的可行性和严重性。5.根据权利要求2所述的面向Net反序列化漏洞挖掘的静态代码双流相向分析方法,其特征在于,在所述步骤2.2中,软件代码分析采取误报的分析策略,即对程序中所有可能的连通路径进行“过分析”;理论上完美的程序静态分析报告应该真实地反映所有的错误;而实际操作中往往...

【专利技术属性】
技术研发人员:周鹏印可阳
申请(专利权)人:上海大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1