Ubuntu系统中的实用程序 needrestart 近日被曝出存在5个本地权限提升 (LPE) 漏洞,这些漏洞不是最近才产生,而是已经潜藏了10年未被发现。
这些漏洞由 Qualys 发现,并被跟踪为 CVE-2024-48990、CVE-2024-48991、CVE-2024-48992、CVE-2024-10224 和 CVE-2024-11003,由 2014 年 4 月发布的Needrestart 0.8 版本中引入,直到最近的11月19日才在3.8 版本中修复。
这5个漏洞允许攻击者在本地访问有漏洞的 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:Needrestart 使用的 Perl ScanDeps 模块未正确处理攻击者提供的文件名。攻击者可以制作类似于 shell 命令的文件名(例如 command|),以便在打开文件时以 root 身份执行任意命令。
- CVE-2024-11003:Needrestart 对 Perl 的 ScanDeps 模块的依赖使其暴露于 ScanDeps 本身的漏洞中,其中不安全地使用 eval() 函数会导致在处理攻击者控制的输入时执行任意代码。
值得注意的是,为了利用这些漏洞,攻击者必须通过恶意软件或被盗帐户对操作系统进行本地访问,这在一定程度上降低了风险。但攻击者过去也利用过类似的 Linux 权限提升漏洞来获得 root 权限,包括 Loony Tunables 和利用 nf_tables 漏洞,因此不能因为这些漏洞需要本地访问权限就疏于修补。
除了升级到版本 3.8 或更高版本(包括所有已识别漏洞的补丁)之外,建议用户修改Needrestart.conf 文件以禁用解释器扫描功能,从而防止漏洞被利用。