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

livers · 2014/06/06 16:31

0x00 概述


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

www.openssl.org/news/secadv…

总结如图:

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

0x01 详情


1. CVE-2014-0224 ChangeCipherSpec 注入

漏洞作者:KIKUCHI Masashi

漏洞原理

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

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

更多详情:ccsinjection.lepidum.co.jp/blog/2014-0…

Poc

gist.github.com/rcvalle/71f… gist.github.com/rcvalle/585…

影响版本:

客户端所有版本都存在。服务端已知的受影响版本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: h30499.www3.hp.com/t5/HP-Secur…

受影响范围:

只有使用到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. 升级完后 记得重启是配置生效。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要给OpenSSL打补丁,您可以按照以下步骤进行操作: 1. 首先,您需要从OpenSSL官网(https://www.openssl.org/source/)下载所需的补丁文件。在左侧的菜单栏中,找到"Old Releases",然后选择对应的版本(例如1.0.2),然后下载相应的补丁文件(例如openssl-1.0.2l.tar.gz)。 2. 在打补丁之前,我们强烈建议您备份当前的OpenSSL版本,以防止意外情况发生。您可以根据官方升级文档(http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/openssl.html)中的指引进行备份操作。 3. 下一步是执行配置命令来准备打补丁。打开终端或命令行界面,进入解压后的OpenSSL源代码目录,并运行以下配置命令: ``` ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib ``` 这个命令将配置OpenSSL以准备进行打补丁的操作,并指定了一些常用的选项,如安装路径和共享库的使用。 4. 配置完成后,您可以按照补丁文件的说明进行打补丁的操作。具体的补丁方法可能因补丁文件的不同而有所不同,请仔细阅读补丁文件中的说明文档,并按照文档中的指引进行操作。 请注意,这只是一个一般的指导,具体的步骤可能会因您使用的操作系统或其他因素而有所不同。在进行任何补丁操作之前,请确保您已经仔细阅读了相关的文档,并按照官方指南或开发者建议进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [OpenSSL补丁安装(一)](https://blog.csdn.net/stone_bk/article/details/105042288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [OpenSSL补丁安装(二)](https://blog.csdn.net/stone_bk/article/details/105042542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值