Heartbleed漏洞
自从首次发现Heartbleed至今已有6年了,并且仍然可以在Internet上发现和利用OpenSSL漏洞。
实际上,由于未打补丁的面向公众的服务器数量众多,因此有19%的全球攻击针对OpenSSL Heartbleed漏洞。
本文深入研究了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服务器(约500,000台服务器)易受Heartbleed攻击。
正如研究表明的那样,即使在2014年报告了Heartbleed漏洞,它仍然是许多面向公众的服务器和用户设备上的问题。
为何管理员无法修补服务器
易受攻击的服务器的明显修复方法是对其进行补丁修复,但与标准用户设备相比,对关键生产服务器进行补丁修复要更加脆弱和危险。
因此,管理员将在非高峰时段安排补丁修复,这可能是发现漏洞后的几周。
具有漏洞利用代码的漏洞对于数据隐私特别危险,因为这些漏洞可以立即被利用,并且不需要攻击者自行开发恶意软件。
由于存在重新启动的风险,管理员通常不给服务器打补丁。
当前的修补和重新启动计划存在风险,主要有两个原因:
- 服务器停机时间:即使顺利重启也没有问题,也可能需要15分钟或者更长时间。在此期间,服务不可用。大型企业对服务器停机的容忍度很低,因此重新启动关键服务器需要在生产中进行故障转移。故障转移或者仍在负载均衡器后面旋转的服务器可能会重载(overloading),无法处理流量负载。
- 漏洞窗口:大型组织每月都会修补和重新启动服务器。数周之内,服务器就很容易受到开放威胁的攻击。漏洞窗口越大,攻击者越有可能扫描并找到对攻击和最新威胁开放的服务器。
无重启手动修补程序和假阴性
除了OpenSSL之外,开源社区还具有许多在关键生产服务器上运行的共享库,但是必须与操作系统补丁一起对这些库进行修补,以确保服务器的安全。
为避免妥协,某些管理员无需重新启动即可手动修补服务器,因此停机不会造成风险。
如果没有正确的实时修补工具,则无需重新启动即可进行修补,从而将易受攻击的代码保留在内存中,但磁盘和服务器上的修补版本仍然易受攻击。
当管理员针对这些无法重新启动的修补程序服务器运行漏洞扫描程序时,扫描程序通过检测修补程序的磁盘版本来返回假阴性结果。
在内存中运行未打补丁版本的打补丁库仍然容易受到攻击,因此这是对服务器打补丁的无效方法。
要找到假阴性,需要使用Scanner来检测内存中的易受攻击的库,而不是使用磁盘上的结果。
theitroad社区可以使用UChecker by KernelCare的一种这样的开源扫描程序,以帮助他们找到易受攻击的服务器,即使它们已被修补在磁盘上。
它是使用JSON构建的免费软件,可以根据GNU通用公共许可证的条款进行重新分发和/或者修改。
Uchecker会检测使用旧的(即未打补丁的)共享库的进程。
它检测并报告正在运行的进程正在使用的最新共享库。
借助KernelCare的扫描器,管理员可以获得进程ID和易受攻击的共享库的名称以及库的内部版本ID。
此信息可用于标识漏洞和修复问题所需的修补程序。
Uchecker(“用户空间检查器”的缩写)与所有从版本6开始的现代Linux发行版一起使用。
下图说明了Uchecker的工作方式。
仅用一个命令,Uchecker就会在系统中扫描过时的共享库:
curl -s -L https://kernelcare.com/checker | python
访问UChecker的Github页面以了解更多信息或者观看其工作原理演示。