【技术实现步骤摘要】
一种支持序列化或反序列化特征的混合流图生成方法
[0001]本专利技术涉及软件安全领域,尤其是一种支持序列化或反序列化特征的混合流图生成方法。
技术介绍
[0002]2015年,Lawrence和Frohoff提出了Java反序列化漏洞。随后,Breenmachine利用Java反序列化漏洞成功攻击了WebLogic、WebSphere、JBoss、Jenkins、OpenNMS等Java应用,实现了远程代码执行。Fastjson、Jackson、Hessian、XStream等第三方反序列化库被爆出存在反序列化漏洞,在反序列化攻击者可控的数据时可能会执行攻击者构造的恶意代码其中能够找到反序列化利用链是该类型漏洞能否利用的关键。所以对java程序做完整的过程间分析至关重要,例如漏洞检测,信息流优化和分析。由于Java应用及依赖库的代码空间大和Java本身多态的问题,序列化期间主要依靠反射完成方法的调用,想要对反序列化过程中做完整的分析存在一定的困难,《Salsa:Static Analysis of Serialization Features》利指针分析加迭代的方法能够构建(反)序列化期间的调用,《Serialization
‑
Aware Call Graph Construction》中又对salsa的反序列化期间的回调方法进行扩充,但是仍然只是考虑了继承了Serializable的可序列化类,没有对继承了Externalizable的可序列化类在(反)序列化的相关回调void readExte ...
【技术保护点】
【技术特征摘要】
1.一种支持序列化或反序列化特征的混合流图生成方法,其特征在于,包含以下步骤:1)将java源程序以及包含程序入口函数CSV文件,以及相关的配置文件作为输入;2)根据工具输入的入口函数CSV文件,将入口函数以及入口函数所对应的上下文提取至工作列表工作列表以的形式存在,其中c代表入口函数对应的上下文,m为函数;3)根据已有的工作列表从入口函数使用对象敏感的指针分析方法,构建初始调用图,若在调用过程中包含序列化点及反序列化点的调用,则将序列化点及反序列化点调用和上下文c存入synthetic method函数,根据指针分析生成初始的调用图,初始的调用图和synthetic methods函数共同传入步骤4),序列化点指的是反序列化点ObjectInputStream.readObject()及序列化点ObjectOutputStream.writeObject(Object);4)将初始的调用图和synthetic methods函数进行调用图的迭代优化,利用过滤器对在此过程中利用过滤器对程序中存在的黑白名单规则的匹配进行调用,生成完整的具有序列化或反序列化的调用图;5)在反序列化的调用图生成的过程中,指针分析与反序列化过程中的信息传播规则共同处理,以反序列化函数的序列化点或反序列化点的具体实现为分析起点,进行信息流的向下传播,最终与完整的具有序列化或反序列化的调用图合成为混合流图。2.根据权利要求1所述的支持序列化或反序列化特征的混合流图生成方法,其特征在于,步骤2)中,入口函数CSV文件中含有入口函数,其中入口函数均以<m,c>的形式提取至工作列表即每一个入口函数均分配全局上下文Globe c。3.根据权利要求2所述的支持序列化或反序列化特征的混合流图生成方法,其特征在于,步骤2)中,<m,c>∈W中的函数m均被转换为单一静态赋值SSA的中间表示Intermediary Representation,首先利用上下文敏感的指针分析进行初步处理,当在处理入口函数中的函数调用时,指针分析计算方法的调用目标g通过下列公式确定:Targets=dispatch(pt(<o,c>),g)当指针集pt(<o,c>)所指向的对象类中有g的实现,则调用上述公式;当存在ObjectInputStream流或者ObjectOutputStream流及其子类发生的读取对象流readObject()和写入对象流writeObject()时,分别为其创建synthetic method函数,用于记录序列化及序列化时的调用,作为下一个阶段的输入。4.根据权利要求3所述的支持序列化或反序列化特征的混合流图生成方法,其特征在于,步骤3)中,提供了序列化及反序列化过程中的回调函数,既继承Serializable类在序列化或反序列化过程中产生的回调,同时继承Externalizable类在序列化或反序列化过程中产生的回调,序列化过程期间的回调函数包含void writeObject(ObjectOutputStream)、void writeExternal(ObjectOutputStream)、Object writeReplace();反序列化过程期间的回调函数包含void readObjectNoData()、void readObject(ObjectInputStream)、ObjectreadResolve()、void readExternal(ObjectInputSteam)、void validateObject()。5.根据权利要求4所述的支持序列化或反序列化特征的混合流图生成方法,其特征在于,步骤4)中,将初始调用图进行迭代优化,并将synthetic methods函数放入对应的处理模型中,...
【专利技术属性】
技术研发人员:孙小兵,王满友,薄莉莉,吴潇雪,曹思聪,魏颖,
申请(专利权)人:扬州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。