原文:https://www.freebuf.com/vuls/97727.html

1. 引子

本来最近和360 Nirvan Team的DQ430愉快的参加某加密厂商的年度大会,结果openssl也出来碰热闹,也许真是为了DH兄弟送大礼,苦了我们这些安全运维的。

感谢Shawn的指点!
hf!

2. 细节

360在内部信息安全实践历程中,“360信息安全部”逐步秉承最佳安全实践,在https等ssl领域逐渐做出了明显的变化。

比如重要系统中禁止不安全的加密套件使用,来减少ssl的攻击面。

我们在今天的内部运维修复中发现了个有趣的现象或者说尝试,我们想去确定禁止不安全的加密套件会对今天的两个高危漏洞有什么影响。

CVE-2016-0800
CVE-2016-0703

0800漏洞官方已经描述了如果是cipher none的话,能保证是不受影响的,或者说这是一个缓解措施。

但是0703就不一样了,我们花了几个小时尝试去证明如果ciphernone的话确实也是不受影响的。

0703过程大略如下:

client:
send hello msg ( 包括 ciphers,和一个随机数 cr )
server:
send hello msg ( 包括 ciphers,和一个随机数 sr )
client:
send  masterkey msg ( 指定一个 cipher,且包含 masterkey 的一部分明文 mkc 和一部分密文 mks,mkc长度可为0 )
server:
send verify msg
client:
send finish msg
server:
send finish msg

这个过程由于client可以指定不安全的算法(RC4-MD5  SSLv2 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export)
导致密文部分只有40bit

client 根据 cr, mk = mkc||mks, 和收到的 verify msg,可计算出 server key

server_key =MD5(mk||”0″||cr||sr)

所以我们认为攻击的条件依然需要类似RC4_128_WITH_MD5 的套件。

a、关键是 client 指定了 export cipher,导致 mks 只有5个字节

b、不止 RC4_128_WITH_MD5 一个 export,默认情况,openssl 编译出来共有两个 exportcipher:

EXP-RC2-CBC-MD5         SSLv2Kx=RSA(512) Au=RSA  Enc=RC2(40)   Mac=MD5  export

EXP-RC4-MD5            SSLv2 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export

c、计算出的 server_key 是 session key,双方可以互相计算

server_key = MD5(mk||”0″||cr||sr)
client_key = MD5(mk||”1″||cr||sr)
(“||”见 RSA PKCS1#v1.5)

d、server 回应的 verify msg 中大有玄机,是最终利用的关键,与sslv2标准有关,且听下回分解吧。

3. 结尾

虽然能表明“360信息安全部”的安全实践能有效抵挡 CVE-2016-0703的攻击,但在此依然希望大家按照官方的建议去升级对应的补丁。

gl!

以下是我们的基本修复建议:

漏洞编号:CVE-2016-0703

漏洞说明:
使用OpenSSL并支持SSLv2协议的服务器可接受指向长度非零非导出密钥组件的SSLv2连接握手,攻击者可利用这个缺陷解密已经建立的加密会话。

漏洞等级:高

漏洞编号:  CVE-2016-0800

漏洞说明:
SSLv2协议中存在一个填充内容缺陷,攻击者可以利用这个缺陷解密使用新版SSL/TLS协议会话中由RSA算法加密的内容。通过这种利用方式,可造成DROWN攻击(Decrypting RSA usingObsolete and Weakened eNcryption)

漏洞等级:高

漏洞详情:地址

受影响的服务版本:
Apache:                     非2.4.x版本
Nginx:                        0.7.64、0.8.18及更早版本
Postfix:                      早于2.9.14、2.10.8、2.11.6、3.0.2的版本 (在2015.07.20之前发布)
Openssl:                    1.0.2a、1.0.1m、1.0.0r、0.9.8zf及更早版本

检测方式

OpenSSL版本检测:

openssl   version
若版本低于修复版本请更新openssl

针对web  server:

openssl s_client -connect  待测域名或IP:443-ssl2

针对SMTP server:

openssl s_client -connect  待测域名或IP:25-starttls smtp -ssl2

如果出现如下错误信息,则SSLv2已禁用:

419:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:

修复步骤

(1). 升级OpenSSL软件包

CentOS、Redhat 可以通过以下命令来升级

#yum clean
#yum update openssl

对应的RPM包:
CentOS5:                  openssl-0.9.8e-39.el5_11、   openssl-devel-0.9.8e-39.el5_11、          openssl-perl-0.9.8e-39.el5_11
CentOS6:                  openssl-1.0.1e-42.el6_7.4、 openssl-devel-1.0.1e-42.el6_7.4、         openssl-perl-1.0.1e-42.el6_7.4、   openssl-static-1.0.1e-42.el6_7.4
CentOS7:                  openssl-1.0.1e-51.el7_2.4、 openssl-devel-1.0.1e-51.el7_2.4、         openssl-libs-1.0.1e-51.el7_2.4、   openssl-perl-1.0.1e-51.el7_2.4、        openssl-static-1.0.1e-51.el7_2.4

(2). ubuntu 版本可以通过以下命令来升级

#apt-get upgrade openssl

2. 禁用 Apache、Nginx、Postfix 中的SSLv2

在Apache 的 SSL 配置文件中禁用SSLv2
SSLProtocol all -SSLv2
重启apache服务

在 Nginx 的 SSL 配置文件中设置只允许使用 TLS 协议:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
重启nginx服务

在Postfix配置中禁用SSLv2

# Minimal recommended settings.  Whenever the built-in defaults are
# sufficient, let the built-in defaults stand by deleting any explicit
#overrides.  The default mandatory TLS protocols have never included
# SSLv2,check to make sure you have not inadvertently enabled it.
smtpd_tls_protocols= !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3
tlsproxy_tls_protocols= $smtpd_tls_protocols
tlsproxy_tls_mandatory_protocols= $smtpd_tls_mandatory_protocols
smtp_tls_protocols= !SSLv2, !SSLv3
smtp_tls_mandatory_protocols= !SSLv2, !SSLv3
lmtp_tls_protocols= !SSLv2, !SSLv3
lmtp_tls_mandatory_protocols= !SSLv2, !SSLv3
smtpd_tls_ciphers= medium
smtp_tls_ciphers= medium
# Other bestpractices
# Stronglyrecommended:
#http://www.postfix.org/FORWARD_SECRECY_README.html#server_fs
smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem
smtpd_tls_eecdh_grade= strong
# Suggested,not strictly needed:
smtpd_tls_exclude_ciphers=
EXPORT, LOW,MD5, SEED, IDEA, RC2
smtp_tls_exclude_ciphers=
EXPORT, LOW,MD5, aDSS, kECDHe, kECDHr, kDHd, kDHr, SEED, IDEA, RC2

(转)OpenSSL CVE-2016-0800 和 CVE-2016-0703 漏洞修复细节拾趣的更多相关文章

  1. 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结

    黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结 作者:蒸米,耀刺,黑雪 @ Team OverSky 0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开 ...

  2. 2016湖南省赛----A 2016 (同余定理)

    2016湖南省赛----A 2016 (同余定理) Description  给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 ...

  3. 在 .h 和 cpp 中查找 :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r

    :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r -w "whole" 匹配整个 ...

  4. 2016湖南省赛 A 2016 题解(同余)

    题目链接 题目大意 给出正整数 n 和 m,统计满足以下条件的正整数对 (a, b) 的数量: 1<=a<=n 1<=b<=m a*b%2016=0 题目思路 我本来以为是容斥 ...

  5. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  6. myeclipse 2016 激活,myeclipse 2016 激活

    myeclipse 2016 激活: 找了好久,myeclipse 2016 终于激活了.myeclipse版本是下载的  myeclipse-2016-ci-0-offline-installer- ...

  7. stand up meeting 1/8/2016 & weekend 1/9/2016~1/10/2016 && sprint2扫尾

    part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 跑通打印机功能,尝试与pdf读取部分结合     6 查漏补缺, ...

  8. 应用安全-软件安全-漏洞CVE整理

    jira ssrf CVE-2019-8451 url = url + '/plugins/servlet/gadgets/makeRequest?url=' + host + '@www.baidu ...

  9. 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

    微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...

随机推荐

  1. Spring Boot项目Maven Build报错的解决方法

    问题1, [ERROR]Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (defau ...

  2. 怎么通过tomcat的catalina.out查看日志

    进入tomcat的logs目录下:cd apache-tomcat/logs/ 查看logs下的文件和目录:ll   可以找到catalina.out文件: 实时查看日志: tail -fn 100 ...

  3. Unicode和多字节的相互转换

    多字节转Unicode 四步: Step1 #include <iostream> #include "windows.h" using namespace std; ...

  4. 使用 vs.php 调试PHP相关问题

    1. 使用mysql_connect()方法时报错"Call to undefined function mysql_connect()" 这是由于在php.ini没有启用mysq ...

  5. Simultaneous Localization and Mapping Technology Based on Project Tango

    Abstract: Aiming at the problem of system error and noise in simultaneous localization and mapping ( ...

  6. POJ1446 Girls and Boys

    Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 12747   Accepted: 5678 D ...

  7. js-图片时间(倒计时)

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  8. 必修3第三章概率mindmaps

    % !Mode:: "TeX:UTF-8" \documentclass{article} \usepackage[screen]{geometry} \usepackage[no ...

  9. E - Evaluate Matrix Sum

    Description Given a matrix, the elements of which are all integer number from 0 to 50, you are requi ...

  10. F - Cookies Piles

    Description The kids in my son's kindergarten made Christmas cookies with their teacher, and piled t ...