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

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

介绍

依赖免费和开源软件 (FOSS) 的 IT 组织在处理未打补丁的共享库方面面临着持续的困难。 这是一个重要的问题,因为共享库是一个广泛针对的攻击面。 为了 example,研究表明,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 内核中的基本用户空间库中执行漏洞的实时补丁。 您可以在不影响其运行状态的情况下更新应用程序。 不需要重新启动或重新启动。

资源:

相关阅读:

  • 5 个内核实时修补工具,有助于在不重新启动的情况下运行 Linux 服务器