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

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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

JDoop:

下一代针对JavaWeb应用的静态分析框架

数据流类型漏洞可以总结为两方面的问题

1.数据流向问题:不可信的数据流向了某些危险的函数中

2.数据过滤问题:过滤不可信数据时出现了遗漏

1.引擎目标

1.数据流向问题:不可信的数据流向了某些危险的函数中

2.数据过滤问题:过滤不可信数据时出现了遗漏

注入类型漏洞可以总结为两方面的问题

1.引擎目标

Runtime.exec(...)命令执行?

javav.sql.Statement.execute(...)SQL注入?

1.引擎目标

2.引擎架构

2.引擎架构

IR为jimple格式example:

Assign

b

a

c

b

New

a

o1

1.a=newA();

2.b=a;

3.c=b;

2.引擎架构

facts例子:

Assign

b

a

c

b

New

a

o1

2.引擎架构

facts例子:

1.a=newA();

2.b=a;

3.c=b;

分析规则的例子:

2.引擎架构

facts例子:分析规则的例子:

VarPointsTo

a

o1

b

o1

c

o1

Assign

b

a

c

b

New

a

o1

Why?

1.Datalog规则与指针分析规则天然契合,高度一致,可读性强

2.将分析规则与求解过程进行解构,专注于规则的编写

3.有效利用souffle的高性能求解能力

4.利用Doop原有的反射处理规则.

2.引擎架构

3.1P/TAnalysis算法

P/TAnalysis核心:为source生成污点对象,把污点对象视为普通堆对象,通过指针分析进行传播.

指针分析:污点分析:

NevilleGrechandYannisSmaragdakis,“P/Taint:UnifiedPoints-toandTaintAnalysis”.OOPSLA2017.

3.1P/TAnalysis算法

P/TAnalysis核心:为source生成污点对象,把污点对象视为普通堆对象,通过指针分析进行传播.

优点:

1.对指针分析框架进行少量更改即可实现P/TAnalysis

2.一次分析即可同时完成指针分析与污点分析,效率更高

3.污点分析可天然地复用指针分析规则

3.2tainttransfer

污点字符串相加的例子:

3.2tainttransfer

污点字符串相加的例子:

3.2tainttransfer

污点字符串相加的例子:

ParamToBase:

若str指向污点对象,

则buffer指向StringBuffer类型的污点对象

BaseToRet:

若base指向污点对象

则res指向String类型的污点对象

3.2tainttransfer

污点字符串相加的例子:

!飞

arr指向char[]类型的污点对象

但是arr[*]没有指向任何对象,导致污点断流

3.3tainttransfer的局限性

tainttansfer生成的污点对象是一

复杂字符串操作的例子:

个空壳

3.3tainttransfer的局限性

tainttransfer可能会生产各种类型的污点对象

erator?

pojo?

pojo,field2

。.ooe。

3.4accesspath问题

问题的本质:创建污点对象时如何处理对象内部的字段?

1.不处理内部字段漏报X

2.内部所有字段都指向污点对象误报X

3.部分字段指向污点对象规则过于复杂X

大部分情况下:

-source()只会生成String类型的污点对象

-sink()只会接受String或者String相关泛型的污点对象

只生成String相关类型的污点对象,

思路:

3.4accesspath问题

并为其字段/索引添加指向关系

char[]类型的对象

数组索引指针arr[*]

char类型的污点对象

,并为其字段/索引添加指向关系

思路:

只生成String相关类型的污点对象

3.4accesspath问题

文档评论(0)

fat-bee + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档