Ubuntu Linux 使用的 needrestart 实用程序中发现了五个本地权限提升 (LPE) 漏洞,而该实用程序自 21.04 版起默认安装在 Ubuntu Server 上。

这些漏洞由 Qualys 发现,编号为 CVE-2024-48990、CVE-2024-48991、CVE-2024-48992、CVE-2024-10224 和 CVE-2024-11003。在 2014 年 4 月发布的 needrestart 0.8 版本中引入,并于日前的 3.8 版本中修复。

影响长达十年,Ubuntu 中五个本地提权漏洞曝光插图

Needrestart是 Linux(包括 Ubuntu Server)上常用的实用程序,用于识别包更新后需要重新启动的服务,确保这些服务运行最新版本的共享库。Qualys 发现的五个漏洞允许对易受攻击的 Linux 系统具有本地访问权限的攻击者无需用户交互即可将其权限提升到 root 权限。

关于这些漏洞的完整信息已在单独的文本文件中提供,摘要如下:

  • CVE-2024-48990:Needrestart 使用从正在运行的进程中提取的 PYTHONPATH 环境变量执行 Python 解释器。如果本地攻击者控制此变量,他们可以通过植入恶意共享库在 Python 初始化期间以 root 身份执行任意代码。
  • CVE-2024-48992:needrestart 使用的 Ruby 解释器在处理攻击者控制的 RUBYLIB 环境变量时存在漏洞。这允许本地攻击者通过向进程注入恶意库以 root 身份执行任意 Ruby 代码。
  • CVE-2024-48991:needrestart 中的竞争条件允许本地攻击者用恶意可执行文件替换正在验证的 Python 解释器二进制文件。通过仔细计算替换时间,他们可以诱骗 needrestart 以 root 身份运行其代码。
  • CVE-2024-10224:Perl 的 ScanDeps 模块(由 needrestart 使用)对攻击者提供的文件名处理不当。攻击者可以制作类似于 shell 命令的文件名(例如 command|),以便在打开文件时以 root 身份执行任意命令。
  • CVE-2024-11003:Needrestart 对 Perl 的 ScanDeps 模块的依赖使其面临 ScanDeps 本身的漏洞,在处理攻击者控制的输入时,不安全地使用 eval() 函数可能导致任意代码执行。

值得注意的是,为了利用这些漏洞,攻击者必须通过恶意软件或被入侵的帐户对操作系统进行本地访问,这在一定程度上降低了风险。不过,攻击者过去也利用过类似的 Linux 权限提升漏洞来获得 root 权限,包括 Loony Tunables 和一个利用 nf_tables 漏洞的漏洞,因此不能因为这个新漏洞需要本地访问权限就将其排除在外。

由于 needrestart 的广泛使用及其长期存在漏洞,上述缺陷可能为关键系统的特权提升创造机会。

除了升级到 3.8 或更高版本(其中包含所有已识别漏洞的补丁)之外,还建议修改 needrestart.conf 文件以禁用解释器扫描功能,从而防止漏洞被利用。

# Disable interpreter scanners. $nrconf{interpscan} = 0;

此举应该可以阻止 needrestart 执行具有潜在攻击者控制的环境变量的解释器。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。