openssl 漏洞
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
OpenSSL CVE-2016-0800 和 CVE-2016-0703 漏洞修复细节拾趣 360安全卫士认证厂商2016-03-03共246536人围观 ,发现 5 个不明物体 漏洞
*原创作者:au2o3t@360 CloudSec Team(360信息安全部)
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
*作者:au2o3t@360 CloudSec Team(360信息安全部),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
360安全卫士
360安全卫士
207 篇文章
等级: 8级
||
上一篇:一个罕见的MSSQL注入漏洞案例下一篇:不是闹鬼,是病毒!全球首个Golem(傀儡)病毒感染数万手机
发表评论已有 5 条评论
1 2016-03-03回复 1楼
https://github.com/nimia/public_drown_scanner 这工具各种报错,怎么解决
亮了(3)
Fiend520 (7级) 2016-03-03回复 2楼
呀比
亮了(1)
Sb360 2016-03-03回复 3楼
建议数字公司的同学去抓包分析或者阅读下 RFC ,连 TLS 的 Handshake 过程都没摸透就好意思出来发文章… 这是贵司一贯的作风么?
亮了(1)
S360 2016-03-04回复
@ Sb360 看了几篇RFC就牛逼了?最烦这种看了文章还TM当喷子的,能的你倒是去补发一篇?
亮了(0)
翻译 2016-03-04回复 4楼
翻译请加原文连接
亮了(0)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
360安全卫士
360安全卫士认证厂商
360安全卫士官方账号
207
文章数
10
评论数
最近文章
十张图看懂Windows平台挖矿木马攻击趋势
2018.11.09
远控木马盗用网易官方签名
2018.10.24
幽灵间谍:TrickBot新变种运用“无文件”技术发起攻击
2018.08.23
浏览更多
相关阅读
CVE-2014-0160 Heartbleed分析报告如何阻止下一次心脏出血漏洞OpenSSL又出新漏洞,超过1100万https站点受影响赛门铁克:我们能否信任 OpenSSL?Ruby OpenSSL 私钥伪造脚本
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论