修复” Heartbleed” OpenSSL错误(系统管理员指南)

本文概述

  • 那么, 该错误到底是什么呢?
  • 谁受此问题影响?
  • 那么, 如果我使用任何受影响的网站, 该怎么做才能保护自己?
  • 如果我是使用OpenSSL的网站的系统管理员, 该怎么做才能修复和防止Heartbleed?
  • 更多血腥的Heartbleed细节, 适合那些感兴趣的人…
那么, 该错误到底是什么呢? 这是一个非常简短的摘要:
广泛使用的OpenSSL密码库中出现了潜在的关键问题。它被称为” Heartbleed” , 因为该漏洞存在于传输层安全性(TLS)的” 心跳扩展” (RFC6520)中, 并且是内存泄漏(” bleed” )问题。用户密码和其他重要数据可能已在受此漏洞影响的任何站点上被泄露。
该漏洞特别危险, 其原因有两个:
  1. 潜在的关键数据已泄漏。
  2. 攻击无影无踪。
受影响的OpenSSL版本是1.0.1到1.0.1f, 1.0.2-beta和1.0.2-beta1。
谁受此问题影响? 简短答案:使用这些版本的OpenSSL的所有人和所有人。
那是很多公司和很多人。
在我们进入Heartbleed教程之前, 这里只是一些已知受到影响且需要修补其网站的主要公司和网站的简要样本:Gmail, Yahoo Mail, Intuit TurboTax, USAA, Dropbox, Flickr, Instagram, Pinterest , SoundCloud, Tumblr, GitHub, GoDaddy, Boingo Wireless等。
修复” Heartbleed” OpenSSL错误(系统管理员指南)

文章图片
已修补(或仍然需要!)各种规模的公司的许多公司网站, 以修复Heartbleed漏洞。
该漏洞自2011年12月31日以来一直存在, 大约66%的Internet主机使用OpenSSL。
作为用户, 你经常访问的站点很可能会受到影响, 并且你的数据可能已经受到破坏。作为开发人员或系统管理员, 你负责的网站或服务器也可能会受到影响。
那么, 如果我使用任何受影响的网站, 该怎么做才能保护自己? 你应该立即做的主要事情是更改你拥有登录帐户的任何受影响站点的密码。
如果我是使用OpenSSL的网站的系统管理员, 该怎么做才能修复和防止Heartbleed? 如果你使用的是OpenSSL 1.0.1, 请立即执行以下操作之一:
  • 升级到OpenSSL 1.0.1g, 或
  • 使用-DOPENSSL_NO_HEARTBEATS重新编译OpenSSL。
如果你使用的是OpenSSL 1.0.2, 则该漏洞将在1.0.2-beta2中修复, 但你不能等待它。在此期间, 请立即执行以下任一操作:
  • 恢复为OpenSSL 1.0.1g, 或
  • 使用-DOPENSSL_NO_HEARTBEATS重新编译OpenSSL。
大多数发行版(例如Ubuntu, Fedora, Debian, Arch Linux)已经升级了其软件包。在Gentoo这样的情况下, 你可以升级到修补的ebuild。
升级(或重新编译)并在服务器上建立安全版本后, 请执行以下操作:
  • 确保重新启动所有可能受影响的进程。受此错误影响的主要守护程序包括Apache, Nginx, OpenVPN和sshd;基本上所有与libssl相关的东西。 (请注意, 重新启动这些守护程序就足够了。由于这些二进制文件与openssl库动态链接, 因此无需重建这些二进制文件。)
  • 使用此在线测试, GitHub上的此工具或Pastebin上的此工具, 验证你不再受到攻击。
如果你的基础架构易受攻击, 则可以并且应该采取Heartbleed教程步骤。此处提供了此类缓解措施的有用列表。
更多血腥的Heartbleed细节, 适合那些感兴趣的人… 如该修复程序的GitHub提交中所述, 可以利用TLS心跳扩展处理中的缺失边界检查来向连接的客户端或服务器揭示多达64k的内存。
尽管公开的内存可能只是垃圾, 但对于恶意攻击者而言, 它却很有价值。
Heartbleed漏洞的工作方式如下:攻击者提供了有效载荷以及有效载荷长度。但是, 没有进行任何验证来确认攻击者确实提供了有效载荷长度。如果未提供有效负载长度, 则会发生越界读取, 进而从堆中泄漏进程内存。
泄漏先前的请求标头可能是一个非常严重的安全问题。具体来说, 以前的用户的登录信息可能仍可以通过其用户名, 密码和cookie来获取, 然后可以公开和利用所有这些信息。此外, 尽管最初不大可能通过Heartbleed泄露私钥, 但已经证实可以利用此漏洞来窃取SSL私钥。
修复” Heartbleed” OpenSSL错误(系统管理员指南)

文章图片
由于OpenSSL愚蠢地使用了malloc()缓存, 因此也使该漏洞成为可能。通过包装libc函数而不是实际释放内存, libc中的利用对策永远不会有机会让bug失效。
有关修复Heartbleed的这些方法的其他详细信息, 请在此处和此处。
而且, 就其价值而言, 这是一个更有趣的观点。
【修复” Heartbleed” OpenSSL错误(系统管理员指南)】发现者Google Security的Neel Mehta以及Adam Langley和Bodo Moeller均表示感谢, 他们迅速提供了补丁并帮助系统管理员确定了如何修复Heartbleed。我也鼓励你对其他一些常见的Web安全漏洞进行自我教育, 以免将来出现问题。

    推荐阅读