Web 安全 之 OpenSSL
什么是OpenSSL协议?
SSL(Secure SocketLayer,安全套接层)协议是使用最为普遍网站加密技术,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。简单的说,就是加密传输的数据,避免被截取监听等。
而OpenSSL则是开源的SSL套件,作为一个多用途的、跨平台的通信加密工具,为全球成千上万的web服务器所使用。Web服务器正是通过它来将密钥发送给访客然后在双方的连接之间对信息进行加密。URL中使用https打头的连接都采用了SSL加密技术。在线购物、网银等活动均采用SSL技术来防止窃密及避免中间人攻击。

但现在,OpenSSL自己出现了漏洞,而且是非常高危胁的漏洞,直接导致了本该是让为了更安全的设置变成了致命的危险。利用这个漏洞,黑客可以轻松获得用户的cookie,甚至明文的帐号和密码。
Heartbleed 漏洞,2014年互联网上最危险的漏洞
OpenSSL官方网站4月7日发布公告,安全公司Codenomicon的研究人员和Google安全小组的Neel Mehta相互独立地发现OpenSSL“heartbleed”存在安全漏洞(漏洞编号:CVE-2014-0160)。该漏洞发生在OpenSSL对TLS的心跳扩展(RFC6520)的实现代码中,由于遗漏了一处边界检查,使攻击者无需任何特权信息或身份验证,就能够从内存中读取请求存储位置之外的多达64 KB的数据,可能包含证书私钥、用户名与密码、聊天消息、电子邮件以及重要的商业文档和通信等数据。
简单地说,因为Heartbleed Bug存在,能让互联网的任何人读取系统保护内存,允许攻击者窃听通讯,并通过模拟服务提供者和用户来直接从服务提供者盗取数据,让上千万服务器中的加密用户数据暴露。
Heartbleed漏洞之所以得名,是因为用于安全传输层协议(TLS)及数据包传输层安全协议(DTLS)的Heartbeat扩展存在漏洞。Heartbeat扩展为TLS/DTLS提供了一种新的简便的连接保持方式,但由于OpenSSL 1.0.2-beta与OpenSSL 1.0.1在处理TLS heartbeat扩展时的边界错误,攻击者可以利用漏洞披露连接的客户端或服务器的存储器内容,导致攻击者不仅可以读取其中机密的加密数据,还能盗走用于加密的密钥。
Heartbleed漏洞是2011年12月引入OpenSSL库中的,2012年3月14日1.0.1正式版发布后,含有漏洞版本的库被广泛使用,受影响版本为OpenSSL 1.0.1和1.0.2-beta,更早版本的OpenSSL(1.0.0和0.9.8等)不受影响。

波及数十万服务器
据谷歌和网络安全公司Codenomicon的研究人员透露,OpenSSL加密代码中一种名为Heartbleed的漏洞存在已有两年之久。三分之二的活跃网站均在使用这种存在缺陷的加密协议。因此,许多人的数据信息开始被暴露,每个人都被卷入到这次灾难的修正中去。放眼放去,我们经常访问的支付宝、淘宝、微信公众号、YY语音、陌陌、雅虎邮件、网银、门户等各种网站,基本上都出了问题。
而在国外,受到波及的网站也数不胜数,就连大名鼎鼎的NASA(美国航空航天局)也已宣布,用户数据库遭泄露。
外媒估计,估计受影响的服务器数量可能多达几十万。其中已被确认受影响的网站包括雅虎、Imgur、OKCupid、Eventbrite以及FBI网站等,不过Google未受影响。
网络安全公司Qualys的一名研究员伊万•瑞斯提克(Ivan Ristic)创建了一种测试网站是否存在Heartbleed漏洞的工具。工具发布当天,他的网页访问量增加了7倍。他估计,使用SSL的服务器中,有30%存在漏洞。
经瑞斯提克的工具测试显示,许多大型网站,如谷歌、亚马逊、eBay等网站较安全,未受到这种漏洞的影响。雅虎发言人则表示,“我们的团队已经成功地完成雅虎各个网站的修复。”
由于大多数的隐私工具都是基于OpenSSL,所以这次Bug影响的范围会更加深远。漏洞的修复可能需要几天时间,服务器重置证书的过程也是缓慢和昂贵的,在这期间会给攻击者留出很多自由发挥的空间。
解决之道
将 OpenSSL 升级到最新版本:
下载地址:https://www.openssl.org/source/
PFS是未来?
塞翁失马,焉知非福。此次风波将会让整个互联网重新思考网络安全。Heartbleed风波过后,互联网公司必将改变它们的安全措施。据悉,很多大型互联网公司都已经转向了PFS(完全正向保密)技术——它能让密钥的保存时间变得很短。有评论认为,这可能是未来的一个发展方向。
Web 安全 之 OpenSSL的更多相关文章
- (转)OpenSSL CVE-2016-0800 和 CVE-2016-0703 漏洞修复细节拾趣
原文:https://www.freebuf.com/vuls/97727.html 1. 引子 本来最近和360 Nirvan Team的DQ430愉快的参加某加密厂商的年度大会,结果openssl ...
- 使用openssl生成SSL证书完全参考手册
一般来说,配置HTTPS/SSL的步骤为: 1.生成足够强度的私钥.需要考虑:算法,广泛采用的一般是RSA.键长度,RSA默认为512,一般应选择2048.密码,虽然私钥不一定要加密存储,但是加密存储 ...
- Tomcat,JBoss与JBoss Web
最近接触到应用服务器JBoss,此外JBoss Web与Tomcat也同为web服务器,便查阅资料对三者进行比较,供大家参考. 一.Tomcat Tomcat 服务器是免费开源的Web 应用服务器.支 ...
- JBoss Web和Tomcat的区别
在Web2.0的时代,基于Tomcat内核的JBoss在J2EE应用服务器领域已成为发展最为迅速的应用服务器.这一青出于蓝而胜于蓝的产品与Tomcat的区别又在哪里? 基于Tomcat内核,青胜于蓝. ...
- 转 : JBoss Web和 Tomcat的区别
JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全 球领导者,JBoss在 ...
- 【转】JBoss Web和 Tomcat的区别
转载于:http://www.verydemo.com/demo_c202_i780.html JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端 ...
- centos php 扩展安装
1. 安装mysqli扩展 1.进入php源代码目录:# cd /home/apps/web/php/php-5.3.5/ 2.再进入要添加的mysqli扩展源码目录:# cd ext/mysqli/ ...
- how to use fiddler and wireshark to decrypt ssl
原文地址: http://security14.blogspot.jp/2010/07/how-to-use-fiddler-and-wireshark-to.html Requirements2 C ...
- 【SEED Labs】Public-Key Infrastructure (PKI) Lab
Lab Overview 公钥加密是当今安全通信的基础,但当通信的一方向另一方发送其公钥时,它会受到中间人的攻击.根本的问题是,没有简单的方法来验证公钥的所有权,即,给定公钥及其声明的所有者信息,如何 ...
随机推荐
- 接口隔离原则(Interface Segregation Principle, ISP)
使用多个专门的接口,而不使用单一的总接口 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don ...
- noip2016 天天爱跑步
没看过正解..应该是些乱七八糟想不出来的东西 解法1: 首先,必须要做的是将每条路径拆成2个直的路径 那么对于那条从深度大的到深度小的路径 dep[x]-dep[y]应该等于观察时间 那么就可以在这些 ...
- python全栈开发day33-进程间的通信、进程间的数据共享,进程池
一.昨日内容回顾: 1. 守护进程 1).p.saemon, 2 ).p.terminate 3 ).p.join 2. 同步控制 1).锁,Lock 互斥锁,解决数据安全.进程之间资源抢占问题. ...
- Kubernetes 安装
一.引用自:https://www.cnblogs.com/gaoyuechen/p/8685771.html#_label6 二.安装过程中docker 坑 转自:https://blog.csdn ...
- 【noip模拟赛7】足球比赛 树
描述 在2009的中国城市足球比赛中,在2^N支队中,有一些队在开赛前宣布了退出比赛.比赛采取的是淘汰赛.比如有4支队伍参加,那么1队和2队比赛,3队和4队赛,然后1队和2队的胜者与3队和4队的胜者争 ...
- 【Java】 剑指offer(53-2) 0到n-1中缺失的数字
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个 ...
- Linux 之 AT&T汇编语言 mov、add、sub指令、数据段
mov指令的几种形式: mov 寄存器. 数据 mov ax,8888 mov 寄存器. 寄存器 mov bx,ax mov 寄存器. 内存单元 mov ax,[0] mov 内存单元.寄存器 mov ...
- JavaScript开发区块链只需200行代码
用JavaScript开发实现一个简单区块链.通过这一开发过程,你将理解区块链技术是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表中包含着许多有序的记录. 然而,在通常情况下,当 ...
- jstl标签比较格式化后的时间
c:set 里面不支持任何标签,这样写不好讲格式化的值放到bdateVar里面 <c:set var="bdateVar" value="<fmt:forma ...
- go标准库-log包源码学习
log包是go语言提供的一个简单的日志记录功能,其中定义了一个结构体类型 Logger,是整个包的基础部分,包中的其他方法都是围绕这整个结构体创建的. Logger结构 Logger结构的定义如下: ...