当前位置: 首页 > news >正文

Openssl多个安全补丁简易分析危害及修复方案

0x00 概述


心脏出血(CVE-2014-0160)后,Openssl 拿出专项资金进行了代码审计,于6月5号晚发布了所发现的漏洞公告。

https://www.openssl.org/news/secadv_20140605.txt

总结如图:

enter image description here

两个高危漏洞 2014-0224中间人攻击(截获明文) 和2014-0195(DTLS 特定包代码执行) 3个拒绝服务 1个缓存区注入 1个特殊漏洞

0x01 详情


1. CVE-2014-0224 ChangeCipherSpec 注入

漏洞作者:KIKUCHI Masashi

漏洞原理

enter image description here

按照TLS的协议 在固定的时间顺序内服务端发送和接收ChangeCipherSpec(更改密钥规格)数据,但是实际上openssl的实现:

服务端在发送时是按照时间线的顺序发送,接收时却没有检查顺序,导致攻击者可以构造伪造的ChangeCipherSpec(比如使用空的主密钥),导致可以中间人攻击解密两端加密信息。

更多详情:http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.html

Poc

https://gist.github.com/rcvalle/71f4b027d61a78c42607 https://gist.github.com/rcvalle/585e12e4d5d3b658cd3d#

影响版本:

客户端所有版本都存在。服务端已知的受影响版本OpenSSL 1.0.1 和1.0.2-beta1.

漏洞产生必须客户端和服务端都使用了受影响版本的openssl。

2. CVE-2014-0195 DTLS碎包代码执行

漏洞作者:Jüri Aedla(Pwn2Own的火狐溢出执行获胜者)

漏洞原理:

为了避免被IP分片,在DTLS存在一个数据包处理机制:

对所有大的UDP包进行分割,每个分割后的DTLS片段有三个标志字段:

总消息长度
帧偏移量
帧大小长度

每个DTLS分包后的总消息长度是固定不变的。

OPENSSL把每个收到的DTLS包判断(帧大小长度<总的长度)就会把这段长度的数据复制到缓冲区。

Openssl出错的地方就是:他认为所有DTLS包的总消息长度都是固定不变的。并没有检查总消息长度是否一致

所有攻击者可构造第一个包:

总长度 10
分包长度 2

第二个包

总长度 1000
分包长度900

由于长度字段占用3个字节,理论上可以写入(2^8)^3数据,再利用上下文执行命令。

OPENSSL在后面做了一些长度的代码检查但是前面已经执行。

More: http://h30499.www3.hp.com/t5/HP-Security-Research-Blog/ZDI-14-173-CVE-2014-0195-OpenSSL-DTLS-Fragment-Out-of-Bounds/ba-p/6501002#.U5FqnvmSyD4

受影响范围:

只有使用到DTLS的应用才会受影响。
包括但不限于:
VPN(openVPN)
VoIP
WebRTC  按照我之前对某些应用的研究很多app使用了这个。包括某 用户量最大的app 视频通信基于这个做的。
SSL的LDAP
SNMPv3
基于SSL的视频 音频

(你们只用zmap扫端口是不是太局限了)

3. DOS

CVE-2014-0221&&CVE-2014-0198&&CVE-2010-5298

CVE-2014-0221

原理

发送无效的DTLS握手包到DTLS客户端,可令客户端进入死循环导致拒绝服务。

影响

只对使用了DTLS的客户端有影响。

CVE-2014-0198&&CVE-2010-5298

原理

ssl3_read_bytes功能在竞争条件下可以让攻击者在会话中注入数据或导致拒绝服务。

影响

只有在SSL_MODE_RELEASE_BUFFERS打开的时候受影响(默认关闭)
但是有些服务商为了节省内存会打开此选项。(比如Nginx,apache2.4.1,openvpn)
对DTLS/SSL2无影响。

CVE-2014-3470

匿名ECDH套件拒绝服务

OpenSSL TLS客户端启用了匿名ECDH密码套件会受到拒绝服务攻击。

0x02 修复


1. 升级到Openssl最新版

Openssl 0.9.8 za

https://www.openssl.org/source/openssl-0.9.8za.tar.gz

Openssl 1.0.0m

https://www.openssl.org/source/openssl-1.0.0m.tar.gz

Openssl 1.0.1h

https://www.openssl.org/source/openssl-1.0.1h.tar.gz

2. 升级完后 记得重启是配置生效。

受影响的客户端及时进行补丁更新。:)

相关文章:

  • Redhat Linux 安全设置脚本
  • nginx中shell脚本封锁采集IP地址
  • Apache和Tomcat限制文件访问或下载
  • Postgresql默认用户名与密码
  • Oracle default SID list
  • Apache服务器禁用TRACE Method防范XSS跨站攻击
  • 网页自适应不同浏览设备的方法
  • 网站降权了魔术收录法帮你恢复收录
  • phpmyadmin加载缓慢的终极解决方法
  • 网页CSS常用英文命名说明
  • linux下mysql命令大全 整理
  • JBoss服务器 /invoker/JMXInvokerServlet/ 接口对外开放
  • IT 圈里经常被读错的词
  • jQuery学习总结(一)
  • 织梦cms安装完成后登录后台出现空白解决办法
  • ES6指北【2】—— 箭头函数
  • __proto__ 和 prototype的关系
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • canvas绘制圆角头像
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript类型识别
  • PHP 小技巧
  • springboot_database项目介绍
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 检测对象或数组
  • 简单易用的leetcode开发测试工具(npm)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 力扣(LeetCode)965
  • 漂亮刷新控件-iOS
  • 前端技术周刊 2019-02-11 Serverless
  • 如何在 Tornado 中实现 Middleware
  • 深度学习在携程攻略社区的应用
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 微服务框架lagom
  • 异步
  • 原生js练习题---第五课
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #etcd#安装时出错
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (07)Hive——窗口函数详解
  • (11)MSP430F5529 定时器B
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (python)数据结构---字典
  • (solr系列:一)使用tomcat部署solr服务
  • (分类)KNN算法- 参数调优
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (算法二)滑动窗口
  • (图)IntelliTrace Tools 跟踪云端程序
  • (学习日记)2024.01.19
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ./configure、make、make install 命令
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .aanva