首页 网络安全 正文
  • 本文约2553字,阅读需13分钟
  • 154
  • 0

Ubuntu Needrestart权限提升漏洞CVE-2024-48990

摘要

栋科技漏洞库关注到Ubuntu Linux漏洞CVE-2024-48990、CVE-2024-48991、CVE-2024-48992、CVE-2024-10224和CVE-2024-11003。

Needrestart 是Ubuntu 和其他基于 Debian 的 Linux 发行版中常用的一个工具,主要被用于检测系统中是否有需要重启的服务或内核模块。

Needrestart 是一款简洁但强大的工具,该工具采用Perl语言编写,运用了模块化的设计思路,允许通过不同的Perl包来提供前端交互界面。

一、基本情况

Needrestart 在软件包更新后运行,帮助管理员识别哪些服务或进程需要重新启动以使更新生效务,从而确保服务运行最新版本的共享库。

Needrestart通过检查/proc/<pid>/maps文件识别哪些守护进程(daemons)绑定更新共享库,判断是否需要重启相关服务应用新库变更。

Ubuntu Needrestart权限提升漏洞CVE-2024-48990

它支持多种场景,包括但不限于GNU/Linux系统,并且针对GNU/kFreeBSD有限兼容,支持主流的包管理系统如dpkg、rpm、pacman等。

栋科技漏洞库关注到Ubuntu Linux漏洞CVE-2024-48990、CVE-2024-48991、CVE-2024-48992、CVE-2024-10224和CVE-2024-11003。

二、漏洞分析

CVE-2024-48990

Ubuntu Needrestart使用从运行进程中提取的PYTHONPATH环境变量执行Python解释器,本地攻击者可通过控制该变量植入恶意共享库。

该漏洞存在于Needrestart 3.8之前版本,攻击者通过欺骗 Needrestart 运行受攻击者控制的PYTHONPATH环境变量来执行Python解释器。

从而实现在 Python 初始化期间以 root 身份执行任意代码,该漏洞的CVSS3评分为 7.8。

CVE-2024-48992

CVE-2024-48992是Ubuntu Needrestart使用的 Ruby 解释器在处理攻击者控制的 RUBYLIB 环境变量时存在漏洞,该漏洞CVSS评分 7.8。

该漏洞存在于Needrestart 3.8之前版本,允许本地攻击者通过欺骗 Needrestart 使用攻击者控制的 RUBYLIB 环境变量来运行Ruby解释器。

从而允许本地攻击者通过向进程注入恶意库,从而获得root权限,然后以 root 身份执行任意 Ruby 代码。

CVE -2024-48991

CVE -2024-48991允许Ubuntu Needrestart中的竞争条件漏洞允许本地攻击者用恶意可执行文件替换正在验证的Python解释器二进制文件。

本地攻击者通过仔细把握替代时机,利用竞争条件欺骗Needrestart运行他们自己的假冒Python解释器(并非系统的真实Python解释器)。

这一过程涉及Race condition,攻击者通过此种方式达到诱使 Needrestart 运行其伪 Python 解释器,以 root 身份运行他们的代码的目的。

该漏洞的CVSS评分为 7.8,对于条件竞争漏洞比较经典的案例是转账、购买,也是条件竞争漏洞的高发场景,这种攻击方式相对较罕见。

CVE-2024-10224

CVE-2024-10224漏洞源于Ubuntu Needrestart使用的 Perl ScanDeps 模块未能正确处理攻击者提供的文件名,该漏洞的CVSS评分为 5.3。

当Modules::ScanDeps库版本低于1.36时,若使用未经清理输入,本地攻击者可能通过打开“讨厌的管道”传递“commands|”作为文件名)。

这是攻击者制作的类似 shell 命令的文件名(command|)或向eval()传递任意字符串,便于在打开文件时以 root 身份执行任意shell命令。

CVE-2024-11003

CVE-2024-11003源于Ubuntu Needrestart 3.8 之前版本将未经验证数据传递给期望安全输入库(Modules::ScanDeps),CVSS评分 7.8。

Needrestart对Perl ScanDeps模块的依赖使其暴露于ScanDeps本身漏洞,因不安全使用 eval() 函数导致处理恶意输入时执行任意代码。

Needrestart使用 Module::ScanDeps 分析依赖文件,可能以 root 权限运行时错误将用户可控输入(如文件名)传递给Module::ScanDeps。

Module::ScanDeps 允许用户通过 open() 调用外部文件或执行命令,由于输入缺乏严格验证,攻击者可以提供如错误文件名等恶意输入。

如此导致本地攻击者以 root 特权触发 CVE-2024-10224漏洞,从而将任意字符串传递给Module::ScanDeps运行任意shell命令或Perl代码。

综合来说,CVE-2024-48990和CVE-2024-48992这两个漏洞分别利用了 Python 和 Ruby 解释器的环境变量,允许攻击者来执行任意代码。

CVE-2024-10224和CVE-2024-11003则利用Perl的ScanDeps模块,允许攻击者通过构造特定文件名或不安全的 eval() 函数执行任意代码。

这些漏洞由 Qualys 发现,由2014年04月发布的Needrestart  0.8 版本中引入,直到2024年11月19日才在Needrestart 3.8 版本中得以修复。

虽然这些漏洞被利用的前提是攻击者必须通过恶意软件或被盗帐户对操作系统进行本地访问从而获取本地权限,但并不代表其低风险系数。

历史上类似的Linux权限提升获得 root 权限漏洞并不罕见,包括 Loony Tunables 和利用 nf_tables 漏洞曾被成功利用,因此不能掉以轻心。

除升级到版本 3.8 或更高版本(包括所有已识别漏洞的补丁)之外,建议受影响用户修改Needrestart.conf 文件以禁用解释器的扫描功能。

三、影响范围

0.8 <= Ubuntu Needrestart > 3.8

四、修复建议

Ubuntu Needrestart >= 3.8 

五、参考链接

https://github.com/liske/needrestart/commit/0f80a348883f72279a859ee655f58da34babefb0    

https://www.qualys.com/2024/11/19/needrestart/needrestart.txt

评论
更换验证码
友情链接