LocalStorage漏洞分析
之前LocalStorage爆出过一个漏洞,使用Chrome打开这个网站:http://filldisk.com,会将磁盘空间给撑爆,而且Chrome还会Crash。除了FireFox之外,其他浏览器无一例外中招。以下分析一下这个网站所使用的这个漏洞。
其实这个漏洞的作者在他的博客中也做了详细的说明了,想了解的可以看这里:http://feross.org/fill-disk/
规范(http://www.w3.org/TR/webstorage/#disk-space)里面对于磁盘空间的控制有这样的声明:
- User agents should limit the total amount of space allowed for storage areas.
而每个浏览器也做了相应的限制:
- 2.5 MB per origin in Google Chrome
- 5 MB per origin in Mozilla Firefox and Opera
- 10 MB per origin in Internet Explorer
- 5 MB per origin in Safari
对于Chrome,应该实际的容量限制是5 MB per origin,而Safari是用的WebKit内核,WebKit默认是5 MB per origin。
这个漏洞的出现是因为规范里面的另一条声明:
- User agents should guard against sites storing data under the origins other
- affiliated sites, e.g. storing up to the limit in a1.example.com, a2.example.com,
- a3.example.com, etc, circumventing the main example.com storage limit.
这里说到,浏览器应该去做这样的限制:去限制子域名的存储限制,否则主域名的存储限制等同于虚设。
那么问题就来了,很多浏览器都没有对这条进行限制,所以就导致了这个漏洞的出现。http://filldisk.com就是利用了这一点,将用户的磁盘空间迅速填满。
WebKit对每个域名都提供了一个数据库存储LocalStorage的数据,每个数据库的大小都是5MB,估计这样做的原因是可以比较有效的阻止跨域访问。这里的域名不分主域名和子域名,也就是说不管是主域名还是子域名都会各自有个5MB大小的数据库提供读写LocalStorage的数据。而WebKit只限制每个数据库的大小,没有限制总容量的大小,所以就中招了。http://filldisk.com的实现就是通过不断的创建子域名,然后将该子域名的LocalStorage容量写满,因为WebKit没有总容量的限制,那么就像下图一样,一直创建数据库,直到磁盘空间被撑爆为止:
FireFox没有这个问题的原因是非常严格和完整的实现了上述规范里面说到的,下图是FireFox的实现方式:
每个顶级域名共享一个数据库,而这个数据库的大小为5MB,所以不管创建多少个子域名,能占用的总容量只能是5MB。因此,FireFox对这个漏洞完全免疫了。另外,有个问题就是,不太清楚FireFox是怎么保证跨域访问的问题。
接着360就发布了一个新版本,号称第一个修复漏洞的浏览器,看了下360没有按照FireFox的实现方式修改,没有去动WebKit的原生逻辑,只是在外层做了个简单的容量限制,就是限制每个顶级域名所可以的LocalStorage总容量,比如,filldisk.com这个域名总共可用500MB的容量,当然这个值应该是动态修改的吧。那么当这个容量被写满之后,这个顶级域名下的所有域名就不可以再使用LocalStorage的功能了,因为容量已满,而且也没有进行数据淘汰。
虽然360修复了漏洞,但是http://filldisk.com这个网站的设计比较奇怪,好像是专门针对FireFox而写的。尽管360在总容量上做了限制,但是网页上显示的占用容量的数字还是会不断的飙升。因为这个网页的设计是这样的:www.filldisk.com这个域名的LocalStorage用来保存创建了多少个域名,显示的占用容量大小是以5MB乘以这个数据的。虽然后面没有数据库创建了,容量没有增加了,但是子域名还是在不断的创建,那么页面上显示的占用容量还是会不断的增加。即使是解决了容量撑爆的问题,不过小白一看,对比FireFox,这不是没还解决吗,哈哈哈。
LocalStorage漏洞分析的更多相关文章
- Zabbix 漏洞分析
之前看到Zabbix 出现SQL注入漏洞,自己来尝试分析. PS:我没找到3.0.3版本的 Zabbix ,暂用的是zabbix 2.2.0版本,如果有问题,请大牛指点. 0x00 Zabbix简介 ...
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...
- CVE-2016-0143 漏洞分析(2016.4)
CVE-2016-0143漏洞分析 0x00 背景 4月20日,Nils Sommer在exploitdb上爆出了一枚新的Windows内核漏洞PoC.该漏洞影响所有版本的Windows操作系统,攻击 ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- CVE-2014-1767 漏洞分析(2015.1)
CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...
- CVE-2014-4115漏洞分析(2014.11)
CVE-2014-4115漏洞分析 一.简介 该漏洞是由于Windows的Fastfat.sys组件在处理FAT32格式的硬盘分区存在问题.攻击者利用成功可导致权限提升. 影响的系统包括: Windo ...
- FFmpeg任意文件读取漏洞分析
这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花. 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static. ...
- CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用
作者:栈长@蚂蚁金服巴斯光年安全实验室 -------- 1. 背景 FFmpeg是一个著名的处理音视频的开源项目,非常多的播放器.转码器以及视频网站都用到了FFmpeg作为内核或者是处理流媒体的工具 ...
- Oracle漏洞分析(tns_auth_sesskey)
p216 Oracle漏洞分析: 开启oracle: C:\oracle\product\\db_1\BIN\sqlplus.exe /nolog conn sys/mima1234 as sysdb ...
随机推荐
- HTTP返回码中301与302的区别(转)
add by zhj: 区别 1.使用效果不同 302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址.因为服务器返回302代码,搜索引擎认为新的网址只是暂时的. 301重定向是永久的重定向, ...
- redhat 6.6 离线安装docker
本机环境:redhat6.6 uname -a Linux host- -.el6.x86_64 # SMP Tue Sep :: EDT x86_64 x86_64 x86_64 GNU/Linux ...
- KL与JS散度学习[转载]
转自:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0 https://blog.csdn.net/e ...
- PAT 1110 Complete Binary Tree[判断完全二叉树]
1110 Complete Binary Tree(25 分) Given a tree, you are supposed to tell if it is a complete binary tr ...
- SLG手游Java服务器的设计与开发——网络通信
文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 上文分析了我们这款SLG的架构,本章着重讲解我们的网络通信架构,由上文的功能分析我们可以得知,游戏的所有功能基本上属于非 ...
- 如何表示各个时区的时间DateTime.ToString()
使用sqlite进行时间的插入的时候,使用了 DateTime.ToString("s") //s: 2008-06-15T21:15:07 插入到数据库之后,发现时间被加了8个 ...
- Cache与主存地址映像计算例题
一.全相连映像 主存中任何一个块均可以映像装入到Cache中的任何一个块的位置上.主存地址分为块号和块内地址两部分,Cache地址也分为块号和块内地址.Cache的块内地址部分直接取自主存地址的块内地 ...
- 【eclipse】运行maven项目clean tomcat7:run报错
问题: Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean 解决: 关闭进程javaw.exe,然 ...
- Python学习札记(四十一) IO 1
参考:IO NOTE A.Pre 1.IO在计算机中指Input/Output,也就是输入和输出. 2.IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但 ...
- 更换Ubuntu14.04主题
闲暇之余,想玩一玩Ubuntu的主题,想把原来的主题换成Numix主题,说干就干. sudo add-apt-repository ppa:numix/ppa sudo apt-get update ...