insight-labs · 2014/10/15 14:11

0x00 背景


POODLE攻击是针对SSLv3中CBC模式加密算法的一种padding oracle攻击。这个攻击方式和之前的BEAST攻击方式很像,可以让攻击者获取SSL通信中的部分信息的明文,比如cookie。和BEAST不同的是,它不需要对明文内容的完全控制,所以操作起来更加贴近实战。

从根本上说,这是SSL设计上的问题,就像 Lucky13 和 Vaudenay's two atacks 这些漏洞里面描述的一样,SSL的加密和认证过程搞反了,SSL先进行认证之后再加密。

0x01 细节


首先考虑这个明文HTTP请求, 我把它分成了 8字节的块,就像3DES加密,但是这个方法对16字节的AES块加密一样适用:

最后一个块里包含了7个字节的填充(padding),用·来表示,最后一个字节7是填充长度,我用了虚构的8字节MAC校验码。在传输前,这些数据都会被3DES或者AES加密。现在来回顾下CBC解密的过程,这张图来自wikipedia:

攻击者可以控制HTTP请求中的路径和主体,从而让请求的内容满足如下条件:

后面的padding填充部分填充了一整个block
cookie的第一个字节正好在某个块的末尾的字节
复制代码

攻击者需要做的是把包含cookie第一个字节(出现在这个块的末尾,例如块中的内容是 Cookie:a,a正好在8字节块的末尾)的那个块,替换padding的那个块发送给接收者(服务器)。

一般来说,服务器会拒绝这段密文,因为CBC校验失败了,攻击者需要重新发送,平均来说,每256个请求中有一个会被服务器接受,只要服务器接受了,根据CBC的解密过程,攻击者就知道了cookie的第一个字节(明文)的和上一个块最后一个字节的密文 XOR 后是 7或者15(分别对应块长度8或16)。

作为中间人,我们可以看到任何一段密文,所以

P XOR K = C
C XOR K = P
复制代码

三个变量我们只要知道了两个就可以解密出另一个,所以 Cookie第一字节 XOR 密文最后一个字节 = 15

我们只要把 15 XOR 密文最后一个字节就知道了cookie的第一个字节。

因为可以解密的窗口大小只有1字节(前面任意一个块的最后一个字节),所以需要通过js控制HTTP请求路径的长度,比如 GET/, GET /A, GET /AA...把需要解密的cookie的位置逐渐顶到解密窗口中,每次解密一个字节平均需要256次请求,攻击者就可以用256*n次构造的请求来解密SSLv3中任意位置的明文。

这个漏洞的主要成因是因为SSLv3没有规定padding填充块字节的内容,只校验填充块最后一个字节,因为TLS会检查填充块的内容所以在TLS上同样的攻击方式成功率只有2^-64或者2^-128。

0x02 解决方式


把SSLv3关了,SSLv3已经过期用了15年了。

参考: www.imperialviolet.org/2014/10/14/… www.openssl.org/~bodo/ssl-p…

CVE-2014-3566 SSLv3 POODLE原理分析相关推荐

  1. android 动画 最顶层_【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗...

    0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android平台上发现了一个高危漏洞 该漏洞允许攻击者冒充任意合法应用,诱导受害者授予恶意应用 ...

  2. web压测工具http_load原理分析

    一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/  ...

  3. Android 兼容 Java 8 语法特性的原理分析

    本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理.Android第三方插件RetroLambda对其的支持过程.Android官方最新的dex编译器D8对其的编译支 ...

  4. java8 lambda map排序_Android兼容Java 8语法特性的原理分析

    本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理.Android第三方插件RetroLambda对其的支持过程.Android官方最新的dex编译器D8对其的编译支 ...

  5. lr分析器的设计与实现_DCGAN原理分析与pytorch实现

    本文介绍的是DCGAN及其pytorch实现.DCGAN论文地址https://arxiv.org/pdf/1511.06434.pdf DCGAN论文全称为"Unsupervised Re ...

  6. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

  7. 一篇读懂无线充电技术(附方案选型及原理分析)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: 目录 一篇读懂无线充电技术(附方案选型及原理分析) 0.背景 1.无线供电特 ...

  8. 一文读懂无线充电技术(附方案选型及原理分析)

    一文读懂无线充电技术(附方案选型及原理分析) 标签: 无线充电 技术 电子 解决方案 2017年09月02日 10:27:12 5807人阅读 评论(1) 收藏 举报 (function () {   ...

  9. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

  10. 计算机操作系统的工作原理英文,计算机操作系统原理分析

    <计算机操作系统原理分析>是2014年清华大学出版社出版的图书,作者是丁善镜[1] . 书    名 计算机操作系统原理分析 作    者 丁善镜 ISBN 9787302284710定  ...

最新文章

  1. libpython2.7.so.1.0 cannot open的解决方法
  2. ubuntu出现HWE问题
  3. [ffmpeg] 解码API
  4. JavaScript创建命名空间
  5. MPAA正在对BT下毒手,BT大站被警方关闭
  6. swift菜鸟入门视频教程-02-基本运算符
  7. JDK1.6和JDK1.7中,Collections.sort的区别,
  8. xcode mysql库_Mac+MySQL+Xcode数据库配置
  9. SoapUI5.1.2安装和破解教程
  10. 斐讯 http文件服务器,斐讯刷机教程(硬件版本A5)
  11. php html ubb,php UBB 解析实现代码
  12. 微信公众号推文(编辑+排版教程)
  13. 终于鸿蒙微内核弄懂了-程序员和鼓励师的合作
  14. Project 的简单使用
  15. IAR工程中的各个文件的含义
  16. 郴州市少儿机器人编_郴州市举办中小学机器人竞赛
  17. writeline是什么意思_write是什么意思_write的翻译_音标_读音_用法_例句_爱词霸在线词典...
  18. Linux完全自学手册图文教程
  19. 电脑应用程序错误:提示0xc000009错误怎么办?
  20. 城市公交线路查询系统

热门文章

  1. 【论文阅读】Deep Learning for Encrypted Traffic Classification: An Overview(深度学习方法进行加密流量分类综述)
  2. html5canvas圆角矩形,html5 canvas 绘制圆角矩形
  3. 鼠标双击桌面上的快捷方式出现打开本快捷方式属性,而不是打开文件的可能原因及解决方法参考...
  4. 我是一个没有感情的杀手
  5. PostgreSQL SRF函数上索引实现方法
  6. 创维电视能用鸿蒙系统吗,鸿蒙OS系统电视怎么看直播?装了鸿蒙系统的电视可以看电视直播吗?当然可以...
  7. 微信小程序第三方平台开发配置
  8. 基于matlab的汽车牌照识别程序
  9. 以太网没有有效的ip怎么解决
  10. 实战项目1之分析链家房源信息