当前位置:首页 > 报告详情

03TheDog、0xEas-JDoop:下一代针对Java Web应用的静态分析框架.pdf

上传人: 2*** 编号:155023 2024-02-04 57页 1.14MB

1、J D o o p:下 一 代 针 对 J a v a W e b 应 用 的 静 态 分 析 框 架陈浩浩&陈光义 京东安全数据流类型漏洞可以总结为两方面的问题1.数据流向问题:不可信的数据流向了某些危险的函数中2.数据过滤问题:过滤不可信数据时出现了遗漏1.引擎目标注入类型漏洞可以总结为两方面的问题1.数据流向问题:不可信的数据流向了某些危险的函数中2.数据过滤问题:过滤不可信数据时出现了遗漏1.引擎目标1.引擎目标Runtime.exec(.)命令执行?javav.sql.Statement.execute(.)SQL注入?2.引擎架构2.引擎架构IR为jimple格式example:2

2、.引擎架构1.a=new A();2.b=a;3.c=b;AssignbacbNewao1facts例子:2.引擎架构1.a=new A();2.b=a;3.c=b;AssignbacbNewao1facts例子:分析规则的例子:VarPointsTo(p,o):-New(p,o).VarPointsTo(to,o):-Assign(to,from),VarPointsTo(from,o).2.引擎架构AssignbacbNewao1facts例子:分析规则的例子:VarPointsTo(p,o):-New(p,o).VarPointsTo(to,o):-Assign(to,from),Var

3、PointsTo(from,o).VarPointsToao1bo1co12.引擎架构Why?1.Datalog规则与指针分析规则天然契合,高度一致,可读性强2.将分析规则与求解过程进行解构,专注于规则的编写3.有效利用souffle的高性能求解能力4.利用Doop原有的反射处理规则.3.1 P/T Analysis算法P/T Analysis核心:为source生成污点对象,把污点对象视为普通堆对象,通过指针分析进行传播.指针分析:污点分析:Neville Grech and Yannis Smaragdakis,“P/Taint:Unified Points-to and Taint An

4、alysis”.OOPSLA 2017.3.1 P/T Analysis算法P/T Analysis核心:为source生成污点对象,把污点对象视为普通堆对象,通过指针分析进行传播.优点:1.对指针分析框架进行少量更改即可实现P/T Analysis2.一次分析即可同时完成指针分析与污点分析,效率更高3.污点分析可天然地复用指针分析规则3.2 taint transfer污点字符串相加的例子:3.2 taint transfer污点字符串相加的例子:3.2 taint transfer污点字符串相加的例子:3.2 taint transfer污点字符串相加的例子:Param To Base:若

5、str指向污点对象,则buffer指向StringBuffer类型的污点对象Base To Ret:若base指向污点对象则res指向String类型的污点对象3.3 taint transfer的局限性复杂字符串操作的例子:taint tansfer生成的污点对象是一个空壳arr指向char类型的污点对象但是arr*没有指向任何对象,导致污点断流3.3 taint transfer的局限性taint transfer可能会生产各种类型的污点对象3.4 access path问题问题的本质:创建污点对象时如何处理对象内部的字段?1.不处理内部字段漏报X2.内部所有字段都指向污点对象误报X3.部

6、分字段指向污点对象规则过于复杂X3.4 access path问题思路:只生成String相关类型的污点对象,并为其字段/索引添加指向关系大部分情况下:-source()只会生成String类型的污点对象-sink()只会接受String或者String相关泛型的污点对象3.4 access path问题思路:只生成String相关类型的污点对象,并为其字段/索引添加指向关系char类型的对象char类型的污点对象数组索引指针arr*3.4 access path问题ListedList.arrlist.add(str)list.get(0)LinkedList只是传播污点对象的桥梁自身不会作

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了J Doop,一种针对Java Web应用的静态分析框架,其核心思想是通过指针分析进行污点传播。文章提到了J Doop在处理数据流类型漏洞和引擎目标注入类型漏洞方面的应用,以及其对于污点流分析的优化。J Doop支持三方依赖包的解析,并可以对Spring框架进行适配。在Benchmark测试中,J Doop展现出了较高的准确率和召回率。文章还提到了J Doop的一些局限性,例如对于复杂字符串操作的处理不够完善。总体来看,J Doop是一种高效、实用的安全分析工具。
"JDoop如何实现污点分析与指针分析的结合?" "Spring框架下,如何有效地处理Bean容器动态执行的静态分析?" "JDoop在处理大型项目时,如何优化分析效率与资源消耗?"
客服
商务合作
小程序
服务号
折叠