野外仍发现心脏出血:您知道自己可能很脆弱吗?

2023-10-25

自 Heartbleed 首次被发现以来已经六年了,OpenSSL 漏洞仍然可以在互联网上被发现和利用。事实上,19% 的全球攻击由于大量未修补的面向公众的服务器,我们针对 OpenSSL Heartbleed 漏洞进行了攻击。无论是由于扫描不力还是担心重新启动生产服务器,让服务器遭受 OpenSSL 攻击都会使客户及其数据面临风险。本文深入探讨了 Heartbleed 及其对数据隐私和合规性的威胁。它还讨论了如何确定您的进程是否仍在使用过时的库,即使您已在磁盘上更新了它们。

Heartbleed 简要概述#

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

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

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

Heartbleed 的发现意义重大,管理员必须尽快修补任何使用 OpenSSL 1.0.1 到 1.0 和 1.0.2 beta 1.1f 的服务器,因为漏洞已经可用。 ANetcraft研究表明,17% 的 SSL 服务器(大约 500,000 台服务器)容易受到 Heartbleed 的攻击。研究表明,尽管 Heartbleed 漏洞于 2014 年被报道,但它仍然是许多面向公众的服务器和用户设备上的一个问题。

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

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

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

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

  2. 漏洞窗口:大型组织每月修补和重新启动服务器是很常见的。这几周的时间让服务器容易受到公开威胁。漏洞窗口越大,攻击者就越有可能扫描并发现易受攻击和最新威胁的服务器。

无需重新启动的手动修补和漏报#

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

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

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

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

Uchecker 识别出内存中过时的共享库

Uchecker(“用户空间检查器”的缩写)适用于从版本 6 开始的所有现代 Linux 发行版。下图显示了 Uchecker 的工作原理。

Uchecker 的工作原理

只需使用一个命令,Uchecker 就会扫描您的系统以查找过时的共享库:

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

Visit ​UChecker 的 Github 页面​ 了解更多或观看演示,了解其工作原理 .

结论#

使用 UChecker 等高效的漏洞扫描器并实施适当的实时修补管理将消除与重新启动相关的大部分风险,同时仍保持开源库的更新。组织必须加快修补易受攻击的库,尤其是那些可能泄露私钥和用户凭据(例如 OpenSSL)的库。目前,由于重新启动可能出现的问题,许多服务器在补丁可用后数周内仍然容易受到攻击,但这会使组织不合规并面临严重数据泄露的风险。 恶意软件字节reports数以千计的网站仍然容易受到 Heartbleed 的攻击,使任何连接到这些网站的人都面临数据隐私问题。正确的实时修补和漏洞扫描解决方案将帮助管理员修补这些服务器并阻止其客户的信息泄露,并保护他们免遭身份盗窃和帐户接管。

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

关于作者

内核维护

内核维护是一项实时内核修补服务,可为一系列流行的 Linux 内核提供安全补丁和错误修复,无需重新启动系统即可安装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

野外仍发现心脏出血:您知道自己可能很脆弱吗? 的相关文章

  • 基本身份验证:是否可以像 getRemoteUser() 一样设置RemoteUser

    您好 我正在使用基本身份验证方法来保护我的 Web 应用程序中的某些页面 其中有指定的 url 模式如下
  • Oracle - 为什么在存储过程中允许 EXECUTE IMMEDIATE?

    如果存储过程旨在减轻 SQL 注入攻击 为什么在存储过程中允许 EXECUTE IMMEDIATE 以下问题的公认答案将其视为针对此类攻击的一个步骤 什么是存储过程 https stackoverflow com a 459531 3163
  • Java Keystore 是否存在性能问题? [复制]

    这个问题在这里已经有答案了 我们开发了一个应用程序来加密 解密来自服务器的请求 响应 我们正在做性能测试 加密 解密应用程序 我们观察到加密 解密过程需要时间 而许多线程 正在同时做 为了识别问题 我们记录了加密 解密过程中的所有方法 从记
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • 良好的安全实践和自动身份范围管理是否相互排斥?

    我正在尝试使用自动身份范围管理 http msdn microsoft com en us library ms152543 aspx sectionToggle1 但是 确保我的用户可以在具有标识列的表中插入记录的唯一方法是使它们db o
  • antisamy 解析器强制关闭标签

    我使用 Antisamy 来验证 HTML 我的政策允许 iframe 例如 YouTube 视频 问题是 如果标签为空 像这样 清洗后会是这样的 但它应该有正常的结束标签 这会破坏之后页面上的所有内容 我已经将指令设置为使用大部分 HTM
  • ASP.NET MVC - ValidateAntiForgeryToken 过期

    在网页中 我们提供一个超链接 GET 用户可以单击该超链接进行身份验证 Html ActionLink Please Login MyMethod MyController 这映射到以下返回视图的控制器方法 RequireHttps pub
  • 具有桌面应用程序安全性的 OAuth2

    我有一个 Electron 应用程序 它基本上是一个 Google Drive 客户端 我打算使用 OAuth 2 但是 Google API 要求我在生成 client secret 的地方注册我的应用程序 由于这是一个桌面应用程序 因此
  • VSCode 扩展的安全性和隐私性

    我发现 VSCode 有很多不错的扩展 然而 我担心这些扩展是否将我的代码发送到他们的任何服务器 有什么办法可以查到吗 我可以使用 fiddler 并隔离插件中可能发生的调用 但不想对我安装的每个扩展都这样做 VScode 团队对此有一些指
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 上传的白名单或黑名单文件扩展名?

    我正在制作一个新闻通讯编辑器 它将允许文件上传 新闻通讯的发件人可以将文件上传到将在电子邮件中链接到的服务器 该站点的设置使得只有 do URI 实际由 servlet 执行 处理 因此不会有太大的安全风险 但有人告诉我将 jsp php
  • 在 Spring Security SAML 身份验证请求中配置 POST ProtocolBinding

    Spring Security SAML 坚持在 SAML 身份验证请求中请求 Artifact 绑定 ProtocolBinding 属性
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • 无法使用前导 ../ 在顶级目录之上退出

    我有一个 asp net 网站 我们有管理区域 其中的登录页面仅供管理员使用 并且所有网站都允许所有人使用 当我收到此错误时 我需要询问如何为其定义正确的安全配置 Cannot use a leading to exit above the
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • 警告:您的 git 版本是 1.9.3。存在严重的安全漏洞

    我在部署到 Heroku 期间收到有关 git 1 9 3 严重安全漏洞的警告 我尝试通过 homebrew 更新 git 但发现 git 最初并不是通过 homebrew 安装的 然后我通过自制程序安装了它 brew update bre
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入

随机推荐

  • 使用 pyenv 管理多个 Python 版本

    pyenv 是一个简单而强大的工具 用于管理多个Python版本 作为一名 Python 开发人员 您可能面临过不同项目需要不同 Python 版本的情况 pyenv 为这个问题提供了一个优雅的解决方案 本质上 pyenv 是一个 Pyth
  • 如何在Ubuntu 20.04上安装Netdata监控工具

    Netdata是一款专为实时系统性能监控解决方案而设计的开源工具 它收集系统活动的实时指标 如 CPU 使用 内存使用 带宽使用和磁盘活动等 并通过图形图表在 Web 界面上显示信息 Netdata官方团队建议安装netdata监控工具使用
  • 用于删除重复数组元素的 JavaScript 程序

    数组是包含一组元素的数据结构 通常这些元素都是相同的数据类型 例如整数或字符串 但在 JavaScript 中 我们可以存储不同类型的元素 使用数组 您可以组织数据 以便可以轻松地对一组相关值进行排序或搜索 本教程向您介绍了如何使用 Jav
  • 如何在 Debian 9 上安装 Python 3.9

    Python 是一种面向对象的高级编程语言 它是一个拥有大型社区的开源软件 Python 被 Google 等顶级科技公司用作关键语言 Python 3 9 稳定版本已发布 包含多项改进和安全更新 它包括多个新模块 改进的现有模块和许多其他
  • 如何在 Debian11 上安装和保护 Apache

    Apache HTTP Web 服务器是广泛使用的 Web 服务器之一 尤其是在 Linux 发行版上 它是一种免费的跨平台 被互联网上的大量网站使用 Apache Web 服务器使用 HTTP 来处理请求并接收 Web 信息 Apache
  • 如何在 Ubuntu、CentOS 和 Fedora 上设置 Hadoop 2.6.5(单节点集群)

    阿帕奇Hadoop 2 6 5与之前的稳定 2 X Y 版本相比有显着改进 该版本在HDFS和MapReduce方面有很多改进 本操作指南将帮助您在 CentOS RHEL 7 6 5 Ubuntu 和其他基于 Debian 的操作系统上安
  • C# 中的空合并运算符 (??)

    在 C 领域 程序员使用许多运算符来执行各种操作 并且每个运算符都有其独特的功能 空合并运算符 就是这样一个运算符 通常被视为管理空值的重要实用程序 什么是空合并运算符 空合并运算符是一个二元运算符 可简化对空值的检查并在遇到空值时定义默认
  • Linux 中的 su 命令及有用示例

    The su 命令也称为切换用户 该命令用于在登录会话期间成为另一个用户 当没有用户名调用时 su 默认切换到超级用户 基本上 su 命令用于将当前登录的用户更改为另一个用户 而无需从系统注销 它是 Linux 终端用户经常使用的命令 本教
  • 如何在 Amazon Linux 2 上安装 Python 3.11

    Amazon Linux 2 是由 Amazon Web Services AWS 团队开发的操作系统 您可以使用此操作系统启动 Amazon ec2 实例 此外 磁盘映像可用于主要的虚拟机管理程序平台 Python 是一种功能强大的通用编
  • 如何在 Python 中读取文本文件

    使用 Python 应用程序时 您需要使用 Python 读取和写入文本文件 您可以参考我们的其他教程用Python编写文本文件 在 Python 中读取文本文件是一个简单的过程 可以使用几种不同的方法来完成 在本文中 我们将介绍以下在 P
  • 如何在 Ubuntu 18.04、16.04 和 LinuxMint 19/18 上安装和使用 Cordova

    阿帕奇科尔多瓦是一个开源移动开发框架 它允许您使用 HTML5 CSS3 和 JavaScript 等标准 Web 技术进行跨平台开发 避免每个移动平台的原生开发语言 Apache Cordova 命令行需要 Node js 才能在 NPM
  • 如何在 Ubuntu 22.04 上安装 Node.js

    Node正在成为开发者构建前端应用程序的首选 此外 许多开发人员正在使用它来构建 REST API 和 CRUD 该编程语言由 OpenJS 基金会开发 运行在 Chrome 的 v8 引擎上 Node js 适用于大多数现代操作系统 包括
  • 如何在 Ubuntu 18.04 和 16.04 LTS 上安装 Dovecot

    本教程将帮助您在 Ubuntu 系统上安装 Dovecot Dovecot 包为 POP IMAP 协议提供服务 通过这些协议 您可以从远程客户端访问电子邮件帐户 步骤 1 在 Ubuntu 上安装 Dovecot Dovecot 软件包可
  • 使用 Crontab 安排 Cron 作业

    Cron 是一个调度守护进程 按指定的时间间隔执行任务 这些任务称为 cron 作业 主要用于自动化系统维护或管理 例如 您可以设置 cron 作业来自动执行重复任务 例如备份数据库或数据 使用最新的安全补丁更新系统 检查磁盘空间使用情况
  • 如何列出 Debian 上已安装的软件包

    在本指南中 我们将解释如何列出和过滤 Debian 上已安装的软件包 我们还将向您展示如何检查是否安装了特定的软件包 计算已安装的软件包以及找出已安装软件包的版本 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出基
  • 如何在 Ubuntu 18.04 上部署 Odoo 12

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo可以通过多种不同的方式安装 安装 Odoo 最简单 最快的方法是使用
  • 如何从命令行管理 MySQL 数据库和用户

    MySQL 是最流行的开源关系数据库管理系统 MySQL服务器允许我们创建大量的用户和数据库 并授予适当的权限 以便用户可以访问和管理数据库 本教程介绍如何使用命令行创建和管理 MySQL 或 MariaDB 数据库和用户 在你开始之前 在
  • 如何在 CentOS 7 上安装和配置 Redis

    Redis 是一个开源的内存数据结构存储 它可以用作数据库 缓存和消息代理 并支持各种数据结构 如字符串 哈希 列表 集合等 Redis 通过 Redis Sentinel 提供高可用性 包括监控 通知 自动故障转移 它还通过 Redis
  • 列出(显示)MySQL 数据库中的表

    管理时MySQL对于数据库服务器 您将执行的最常见的任务之一就是熟悉环境 这包括列出数据库驻留在服务器上 显示数据库表 或获取有关的信息用户帐户及其权限 本文介绍如何通过命令行列出 MySQL 或 MariaDB 数据库中的表 显示 MyS
  • 野外仍发现心脏出血:您知道自己可能很脆弱吗?

    自 Heartbleed 首次被发现以来已经六年了 OpenSSL 漏洞仍然可以在互联网上被发现和利用 事实上 19 的全球攻击由于大量未修补的面向公众的服务器 我们针对 OpenSSL Heartbleed 漏洞进行了攻击 无论是由于扫描