Linux 中通过 Needrestart 漏洞 CVE-2024-48990 实现权限提升
漏洞 CVE-2024-48990 允许在 Needrestart 工具 3.8 及更早版本中实现本地权限提升(LPE)。问题出在对 PYTHONPATH 环境变量的处理上,从而可以以 root 权限执行任意代码。影响 Ubuntu 21.04 及更高版本、Debian、Fedora 等 Linux 发行版。CVSS 分数:7.8。
Needrestart 在库更新后扫描进程并重启易受攻击的服务。攻击利用了 Python、Perl 和 Ruby 的模块加载路径控制不足,通过替换为恶意路径进行利用。
检查系统是否易受攻击
运行此命令检查版本:
needrestart --version | grep -q "3.7" && echo "Definitely vulnerable" || echo "Version is potentially not vulnerable, this simply checks for 3.7"
3.8 以下版本易受攻击。该工具在通过 apt 安装软件包时自动运行,从而打开了利用窗口。
逐步利用
演示使用公开 PoC。克隆仓库并以普通用户身份运行脚本:
cd CVE-2024-48990-PoC-Testing
./runner.sh
脚本将 PYTHONPATH 设置为恶意模块。然后,以 root 或通过 sudo 执行触发 Needrestart 的操作,例如:
sudo apt remove ntp; sudo apt install ntp
这将导致以 root 权限执行代码,打开反向 shell 或直接获取访问权限。
技术攻击细节
漏洞发生在 PYTHONPATH 解析期间:Needrestart 未验证路径,允许注入以提升权限加载的模块。PERL5LIB 和 RUBYLIB 同样适用。
- 攻击者设置 PYTHONPATH=/path/to/malicious。
- Needrestart 在扫描期间从指定路径导入模块。
- 有效载荷以 root 权限执行。
需要本地访问权限,以及由其他用户(通过 sudo)调用 Needrestart。
防护措施和修补
- 更新到 Needrestart 3.8 或更高版本:通过增强环境变量验证修复漏洞。
- 在 /etc/needrestart/needrestart.conf 中禁用解释器扫描:
```
$nrconf{interpscan} = 0;
```
- 使用 auditd 或 falco 监控环境变量。
- 使用 AppArmor 或 SELinux 限制 Needrestart。
关键点
- CVE-2024-48990 通过 PYTHONPATH 在无初始 root 访问的情况下被利用。
- 影响默认启用 Needrestart 的 Ubuntu 21.04+ 服务器、Debian、Fedora。
- 3.8 版本补丁:完整模块路径验证。
- 推荐:禁用 interpscan 以最小化风险。
- 建议在部署前在隔离环境中测试更新。
— Editorial Team
暂无评论。