仍在野外发现的流血之心:您知道自己可能会脆弱吗?

自从首次发现Heartbleed至今已有6年了,并且仍然可以在Internet上发现和利用OpenSSL漏洞。 实际上,由于未打补丁的面向公众的服务器数量众多,因此有19%的全球攻击针对OpenSSL Heartbleed漏洞。 无论是由于扫描效果不佳还是担心重新启动生产服务器,使服务器保持对OpenSSL漏洞的开放态度,都会给客户及其数据带来风险。 本文深入研究了Heartbleed及其对数据隐私和合规性的威胁。 它还讨论了如何确定您的进程是否仍然使用过时的库,即使您已经在磁盘上对其进行了更新。

Heartbleed的简要概述

OpenSSL是一个开放源代码库,用于促进客户端和服务器之间的加密通信。 因为它是开源的,所以任何人都可以为其代码库做出贡献,并在自己的服务器通信协议中使用它。 易受攻击的代码于2011年添加并于2012年发布。直到2014年,Google的研究人员才发现了易受攻击的代码。

在启用了TLS / SSL的服务器与客户端之间进行初始握手时,客户端将向服务器发送16位整数“消息”,并将相同的消息发送回客户端。 此初始握手对于TLS / SSL连接启动安全通信是必需的。 发出请求后,服务器将为16位消息分配内存。

Heartbleed漏洞利用程序将格式错误的初始握手消息发送到服务器,这意味着一条声称包含一定长度的消息,但该消息实际上要小得多。 例如,客户端的初始握手消息声称该长度为64个字节,但仅为8个字节。 当服务器收到格式错误的请求时,它将通过读取相邻的内存值并将其发送回客户端来填充返回给客户端的其余位。 该相邻的内存可以是垃圾值,也可以是用户凭据,用于解密通信的私钥或个人身份信息(PII),例如社会安全号码。

Heartbleed的发现意义重大,对于管理员来说,必须尽快利用OpenSSL 1.0.1到1.0和1.0.2 beta 1.1f对任何服务器进行补丁打补丁。 Netcraft的一项研究表明,有17%的SSL服务器(约50万台服务器)易受Heartbleed攻击。 正如研究表明的那样,即使在2014年报告了Heartbleed漏洞,它仍然是许多面向公众的服务器和用户设备上的问题。

为何管理员无法修补服务器#

易受攻击的服务器的明显修复方法是对其进行补丁修复,但与标准用户设备相比,对关键生产服务器进行补丁修复要更加脆弱和危险。 因此,管理员将在非高峰时段安排补丁修复,这可能是发现漏洞后的几周。 具有漏洞利用代码的漏洞对于数据隐私特别危险,因为这些漏洞可以立即被利用,并且不需要攻击者自行开发恶意软件。

由于存在重新启动的风险,管理员通常不给服务器打补丁。 当前的修补和重新启动计划存在风险,主要有两个原因:

  1. 服务器停机时间:即使顺利重启也不会花费15分钟或更长时间。 在此期间,服务不可用。 大型企业对服务器停机的容忍度很低,因此重新启动关键服务器需要在生产中进行故障转移。 故障转移或仍在负载均衡器后面旋转的服务器可能会过载,无法处理流量负载。

  2. 漏洞窗口:大型组织每月都会修补和重新启动服务器。 那是让服务器容易受到开放威胁的几周。 漏洞窗口越大,攻击者越有可能扫描并找到对攻击和最新威胁开放的服务器。

无重启手动修补和错误否定代码

除了OpenSSL,开源社区还具有在关键生产服务器上运行的许多共享库,但是必须与操作系统补丁一起对这些库进行修补,以确保服务器安全。 为避免妥协,某些管理员无需重新启动即可手动修补服务器,因此停机不会造成风险。 如果没有正确的实时修补工具,则无需重新启动即可进行修补,从而在内存中留下易受攻击的代码,但是磁盘和服务器上的修补版本仍然容易受到攻击。

当管理员针对这些不重新启动的修补程序服务器运行漏洞扫描程序时,扫描程序通过检测修补程序的磁盘版本来返回假阴性结果。 在内存中运行未修补版本的修补程序库仍然容易受到攻击,因此这是修补服务器的无效方法。

要找到假阴性,需要使用扫描仪来检测内存中的易受攻击的库,而不是使用磁盘结果。 FOSS社区提供的一种这样的开源扫描程序是KernelCare的UChecker,它可以帮助他们找到易受攻击的服务器,即使它们已经在磁盘上打了补丁。

它是使用JSON构建的免费软件,并且可以根据GNU通用公共许可证的条款重新分发和/或修改。 Uchecker会检测使用旧的(即未修补的)共享库的进程。 它检测并报告正在运行的进程正在使用的最新共享库。 使用KernelCare的扫描程序,管理员可以获取进程ID和易受攻击的共享库的名称以及库的内部版本ID。 此信息可用于标识漏洞和修复问题所需的修补程序。

Uchecker标识的内存中过时的共享库

Uchecker(“用户空间检查器”的缩写)与所有从版本6开始的现代Linux发行版一起使用。下图说明了Uchecker的工作方式。

Uchecker的工作方式

Uchecker的工作方式

仅使用一个命令,Uchecker就会在您的系统中扫描过时的共享库:

curl -s -L https://kernelcare.com/checker | python

访问UChecker的Github页面以了解更多信息或观看其工作原理演示。

结论#

使用高效的漏洞扫描程序(如UChecker)并实施适当的实时补丁管理,将消除与重新启动相关的大部分风险,同时仍可保持开源库的更新。 至关重要的是,组织必须加快修补易受攻击的库的速度,尤其是那些可能会泄露私钥和用户凭据(例如OpenSSL)的库。 当前,由于重新启动可能引起的问题,许多服务器在补丁可用后的几周内仍然容易受到攻击,但是这会使组织无法合规,并有遭受严重数据泄露的风险。 Malwarebytes报告说,成千上万的网站仍然容易受到Heartbleed的攻击,使连接到这些网站的任何人都面临数据隐私问题。 正确的实时修补和漏洞扫描解决方案将帮助管理员修补这些服务器并阻止其客户泄露,并保护其免受身份盗用和帐户接管的影响。

如果您有任何疑问或反馈,请随时发表评论。

安全

关于作者

内核维护

KernelCare是一个实时内核修补服务,它为一系列流行的Linux内核提供安全补丁和错误修正,无需重新启动系统即可安装这些内核。

Sidebar