Heartbleed会收到哪些数据?

时间:2014-04-11 12:14:06

标签: python apache security openssl heartbleed-bug

我一直在几台服务器上玩Heartbleed的Python实现,并得到了各种各样的数据。

在收到的数据中,我看到了:

- Cookies values (SESSIONID, etc)
- Random characters that make no sense
- HTML
- ...?

我知道我在这里是一个脚本小子但是无论如何,我想知道这些数据来自哪里(RAM?)哪些应用程序将数据放在那里(apache?openSSL?)并且通常希望获得更广泛的图片发生了什么事。

任何帮助?

2 个答案:

答案 0 :(得分:2)

根据heartbleed.com,一个易受攻击的机器每个心跳请求可能会泄漏64kb的内存内容,但是攻击者可以任意多次发出这些请求。我已经看到了一些评论,说明攻击者理论上可以恢复足够的数据来完全重建目标机器的RAM内容 - 或者至少是Apache的大部分内容(或者SSL会话中涉及的任何程序)能看到。例如,这可以包括cookie,正在服务的文件以及来自的数据 - 尤其是用户名和密码。

一个特殊问题是,执行SSL的任何进程都需要有足够的信息来解密传入数据并签署传出数据 - 也就是说私钥。泄露会让您接受MITM攻击并可能(not always)对截获的数据进行追溯性解密。未检测到密钥泄漏的可能性是为什么建议的响应是修补OpenSSL和然后重新密钥 - 修补OpenSSL可以保护您免受未来的攻击,但您无法知道您的加密密钥是否已被泄露。

答案 1 :(得分:0)

以下是Jacob最初发布在Superuser上的解释:

在设置传输层安全性(TLS)标准的RFC 5246中,有一种称为心跳的功能。客户端和服务器来回发送一些数据以保持连接处于活动状态,以便以后使用。现在在实践中,客户端将发送一些数据,服务器将只发送回来,一切都很好。但是,在受影响的OpenSSL版本中,没有检查客户端是否实际发送了它所执行的数据量。因此,如果我发送它1B并告诉服务器我实际发送了64kB,那么它会很高兴地送回64kB。那些其他字节来自哪里?那是关键。 OpenSSL将向您发送64kB-1B的内存,该内存可以访问该进程并且您最初没有发送内存,具体取决于您的1B存储位置。来自内存的这些额外字节是问题,因为它们可以包含有价值的信息,例如私钥材料和服务器正在解密使用的信息。例如:密码,信用卡信息和/或PIN。