今天在读SP的一篇文章Cross-Origin State Inference (COSI) Attacks:Leaking Web Site States through XS-Leaks的时候,发现对作者使用的XS-Leaks攻击不理解,而且国内博客资料也很少,因此我去Google了一下。在这里,把我的查阅的资料翻译一下,并写下我的理解。后面,我会附上SP那篇论文的论文笔记。

历史1

在10年前,Chris Evans描述了一种针对Yahoo!Mail攻击。这是一个基于network timing的攻击,攻击者让受害者进行一次查询询问,通过访问返回时间的长短,来判断用户是否在攻击者预设的列表中。
六年后,Nethanel Gelernter和Amir Herzberg对这一攻击进行了深入的研究,并设计了XSSearch攻击。攻击不断改进,这次攻击不在仅仅限于时间,浏览器的“错误特性”和漏洞使得攻击更加稳定,这使得攻击达到近乎完美的程度。

攻击的核心是检测一个查询询问是否有结果。 XS-Leaks利用了对HTTP缓存进行查询的机制。

举例1

  1. Delete the cache for a specific resource (or list of resources).
    首次,使用POST请求或者提取API与缓存一起使用:``重新加载’’(reload),以一种在服务器上返回错误的方式(例如,通过设置一个超长的HTTP引荐来源网址) ,这将导致浏览器不缓存响应,并使先前缓存的响应无效。
  2. Force the browser to render a website (navigation, or prerender).
    强制受害者浏览器访问一个网站。这个网站是攻击者设计的网站,访问该网站会使得受害者访问要检查的网页。在一定情况下,攻击者会缓存要检查的网页的资源。
  3. Check if the browser cached the resource deleted at (1).
    再次强制受害者浏览器访问攻击者实际的网站,但URL非常长,服务器是无法返回有效的资源的。不过在其中嵌入的图片会因为已经被缓存在客户端,所以可以访问。由此可以判别,用户是否缓存该资源。

应用场景2

看了上面的攻击过程,感觉没啥用处,因为为什么要知道是否受害者缓存过什么资源呢?
下面这个应用场景给了我们答案。

  • 攻击者目标:获取受害者社交网站的用户名,以确定受害者在社交网站中的身份。(因为在现实生活中,人们在社交网站上使用虚假的名字,我们无法定位到这个人是谁。)
  • 攻击过程
    1. 清空HTTP缓存资源。
    2. 使攻击者访问恶意页面。其中恶意页面需要加载受害者在某社交媒体平台的照片。该照片会保存在HTTP缓存中,并以受害者用户名命名。
    3. 使攻击者访问恶意页面,然后需要加载/tim.png的照片出来,但是由于本地缓存没有,因此无法加载;然后需要加载/alice.png的照片,由因为刚好是Alice,因此加载成功。
    4. 看到加载成功的结果,攻击者可以断定,受害人是Alice。

防御1

重要的是,希望不同域应该访问不同域的缓存。

  1. 禁用HTTP缓存
  2. 在所有的内容上加上CSRF tokens
  3. 可以使用Same Site=strict cookie对用户进行身份验证。
    等等

  1. HTTP Cache Cross-Site Leaks: ↩︎ ↩︎ ↩︎

  2. Web tracking via HTTP cache cross-site leaks ↩︎

【翻译】XS-Leaks攻击简介相关推荐

  1. 直播 | 清华大学李一鸣:后门攻击简介

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  2. 译书《物联网实战指南》出版 | 新成就:翻译自己的英文简介

    这本书有一个很长的故事,到今天算是走到了一个意想中的结局.从审阅这本书开始.英文版出版.翻译成中文就这样走了两年的时间,这是一本值得纪念的书籍. 英文书名<Learning Internet o ...

  3. c语言printf相关函数 格式化字符串攻击 简介

    目录 一.类printf函数簇实现原理 二.格式化字符串攻击原理 三.一个实际的例子 一.类printf函数簇实现原理 类printf函数的最大的特点就是,在函数定义的时候无法知道函数实参的数目和类型 ...

  4. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...

    摘自:https://zhuanlan.zhihu.com/p/22953451 首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解 DDoS(Distributed ...

  5. DDoS分布式拒绝服务攻击简介

    分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同 ...

  6. psa加密_PSA:请注意这种新的Google翻译网络钓鱼攻击

    psa加密 Akamai赤舞 You know, the thing with scammers is that they're always going to find new ways to sc ...

  7. XSS(Cross Site Scripting)攻击简介

    环境 Ubuntu 22.04 IntelliJ IDEA 2022.1.3 JDK 17.0.3.1 Spring Boot 3.0.1 Firefox 108.0.2 问题和分析 在Intelli ...

  8. DNS 缓存授权服务器攻击简介

    DNS架构 当用户上网访问某个网站时,会向DNS缓存服务器发出该网站的域名,以请求其IP地址.当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求.为了减少In ...

  9. 【翻译】Keras.NET简介 - 高级神经网络API in C#

    用C#,远离996 Keras.NET Keras.NET是一个高级神经网络API,它使用C#编写,并带有Python绑定,可以在Tensorflow.CNTK或Theano上运行.其关注点是实现快速 ...

最新文章

  1. AI的双刃剑:拍照搜题与协助作弊
  2. 浅谈loadrunner中pacing设置
  3. Virtualbox虚机无法启动因断电
  4. 转-WinRM service
  5. Docker环境运行SpringBoot项目
  6. java telnet乱码_telnet乱码的解决方法
  7. java高校教师工作量管理系统_基于ssh/bs/java/asp.net/php/web/安卓的高校教师工作量管理系统...
  8. 实验十一:图形界面二
  9. Nginx源码分析 - 模块的赋值及编号 --- 方便了解nginx模块
  10. [备忘]java读取与写入文件的五种方式
  11. c# 盖尔-沙普利算法的改进
  12. 基于matlab的捷联惯导算法编程(二)
  13. 使用MATLAB绘制Smith圆图
  14. Ubuntu的root
  15. PHP开发的H5即时通讯聊天系统源码 带群聊 可封装APP
  16. java递归查询分类及分类下所有子分类
  17. 什么数据可以成为“数据资产”?数据资产化又该如何实现?
  18. SpringCloud_JZZ_MBY
  19. 从系统托盘中删除Synaptics触摸板图标
  20. 分布式存储与集中式存储

热门文章

  1. android 分辨率6,Android_基础之分辨率
  2. Java8 Steam 随笔记录
  3. 全球物联网专利竞争态势分析
  4. 2018年度最佳数据可视化作品
  5. android studio : 编码GBK的不可映射字符
  6. 你让稻船敬二玩洛克人他也瞎
  7. 动画插件wow.js的使用方法
  8. ESP8266学习笔记(12)——设置静态IP
  9. 记录中国银行原油宝导致 中国普通人亏300多乙事件
  10. Android插件化方案实践