使用 UChecker 检测内存中过时的共享库

本教程解释了什么是 UChecker 以及如何在 Linux 操作系统中使用 UChecker 检测内存中过时的共享库。

内容

  1. 介绍
  2. 什么是 UChecker
  3. UChecker 的工作原理
  4. 使用 UChecker 检测内存中过时的共享库
    1. 结论

介绍

依赖自由和开源软件 (FOSS) 的 IT 组织在处理未修补的共享库方面面临着不断的斗争。 这是一个非常重要的问题,因为共享库是一个广泛针对的攻击面。 例如,研究表明 OpenSSL 是世界上最具针对性的软件,占全球敌对活动的 19%。

如果您负责 OpenSSL 和 GNU C (glibc) 库,在许多可比较的开源代码集中,您有义务及时更新和补丁管理。 如果无法确定哪些进程仍在使用过时的库,则更新库的传统方法涉及重新启动整个服务器或重新启动所有进程。 然而,系统重启会导致并发症和风险。 谢谢 内核护理 团队,我们可以通过一个名为的简单脚本轻松解决这个问题 UChecker.

什么是 UChecker

UChecker,简称 用户空间检查器, 是一个免费的开源扫描器,可识别您的哪些进程仍在使用过时的库并需要重新启动。 它是在 KernelCare 为共享库开发实时补丁时创建的。 使用 Uchecker,您可以识别易受攻击的 FOSS 库并修补它们。 您将不得不重新启动受影响的进程(除非您使用的是无需重新启动的库更新服务),但通过扫描漏洞,您可以确定哪些进程需要注意,哪些不需要。

因此,您可以避免导致服务降级和/或中断的不必要的服务器重新启动以及创建漏洞窗口,因为库在可以安排重新启动之前保持未修补状态。 事实上,您甚至可能不知道哪些服务使用哪些库,因此很容易重新启动整个服务器以更新它们或重新启动主要服务。 这种做法也可能与重新启动一样具有破坏性。

UChecker 的工作原理

Uchecker 适用于所有现代 Linux 发行版,从第 6 个版本开始。 它是一个免费软件,使用 JSON 构建,并根据 GNU 通用公共许可证的条款开放重新分发和/或修改。 Uchecker 检测使用旧(即未修补)共享库的进程。 它检测并报告正在运行的进程正在使用的非最新共享库。 其检测能力基于 BuildID 比较。 因此,他们知道已删除或替换的文件。

下图显示了 Uchecker 的工作原理。

UChecker 的工作原理

Uchecker 工具能够检测进程 ID 和名称以及未修补的共享库的名称及其构建 ID。 Uchecker 从 KC 资源中获取最新的 BuildID。 然后它通过迭代来运行一个正在运行的过程 /proc/ 并从 /proc/<pid>/maps. 此时,Uchecker 会询问共享库是否未被替换或删除。 根据答案,软件将从文件系统解析 ELF 或从映射内存解析 ELF。 然后,Uchecker 从 .note.gnu.build-id.

使用 UChecker 检测内存中过时的共享库

无需安装! 只需运行 Uchecker 脚本即可在您的 Linux 服务器中查找未修补的库:

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

上述命令扫描您的 Linux 服务器系统以查找链接到 Python 处理并在标准输出中列出它们。

使用 Uchecker 检测内存中过时的共享库

然后,您可以使用系统的默认包管理器更新那些未打补丁的库。

在以下视频中观看 Uchecker 如何工作的视觉演示:

Uchecker 演示

结论

Uchecker 使您能够保持 FOSS 库的补丁和最新状态。 您可以避免必须重新启动服务器的常见麻烦,因为您不知道哪些进程需要重新启动。 这与 OpenSSL 和 GNU C (glibc) 库等相关。 借助 KernelCare+ 等技术,除了 Linux 内核中的漏洞之外,现在甚至可以对基本用户空间库中的漏洞进行实时修补。 您可以在不影响其操作状态的情况下更新应用程序。 无需重新启动或重新启动。

资源:

  • 检查器 GitHub 存储库

相关阅读:

  • 5 种内核实时修补工具,可帮助无需重启即可运行 Linux 服务器

KernelCareLinux开源脚本共享库Uchecker