LibreNMS 版本 24.10.0 之前 RCE 漏洞通过操作系统命令注入(CVE-2024-51092)
CVE-2024-51092(CVSS 9.1):LibreNMS 在 24.10.0 版本之前允许未经身份验证的远程攻击者通过 AboutController.php、SettingsController.php 等执行任意操作系统命令...

执行摘要
LibreNMS,一个被成千上万的组织使用的开源网络监控平台,包含一个关键的操作系统命令注入漏洞,跟踪编号为 CVE-2024-51092,CVSS评分为9.1。该漏洞影响所有 24.10.0 之前的版本,允许远程未经身份验证的攻击者在底层服务器上执行任意操作系统命令。漏洞存在于三个独立的代码路径中:AboutController.php 的 index() 方法、SettingsController.php 的 update() 方法和 PollDevice.php 的 initRrdDirectory() 函数。LibreNMS维护者在GitHub上发布的公告确认了这个问题,并提供了补丁代码。截至本文撰写时,尚未有活跃利用的证据报告,但由于利用的简便性和LibreNMS服务器在内部网络中的特权位置,这成为了一个高优先级的补丁目标。
技术分析
根据 GitHub安全公告,当用户提供的输入未经清理直接传递给系统级命令执行函数时,就会发生注入。这三个受影响的端点各自处理不同的功能:
-
AboutController.php (
index()):此控制器显示有关LibreNMS安装的系统信息。它构建了一个命令字符串,其中包括用户可控的参数,如版本检查或诊断数据,而没有适当的转义。攻击者可以注入shell元字符(例如;,|,&&)来附加任意命令。 -
SettingsController.php (
update()):此端点处理管理员提交的配置更新。公告指出,update()方法通过包含不受信任输入的shell命令写入配置文件。虽然此端点在默认配置中可能需要身份验证,但公告并未明确将攻击面限制为经过身份验证的用户,且CVSS评分为9.1(通常假设不需要特权)表明该向量可以在没有事先访问的情况下被利用。 -
PollDevice.php (
initRrdDirectory()):此函数为被监控的设备创建RRD(Round-Robin Database)目录。目录路径源自设备主机名或IP地址,这些可以在设备发现过程中被伪造或操纵。能够将恶意设备添加到监控范围的攻击者——或者能够污染LibreNMS服务器解析的DNS条目的攻击者——可以在轮询器尝试初始化RRD存储时触发命令执行。
公告没有包含概念验证漏洞利用代码,但注入的性质(PHP应用程序中的操作系统命令注入)是众所周知的。攻击者可能会将此与网络侦察链式结合,以定位LibreNMS实例,然后使用shell访问进行横向移动,窃取SNMP社区字符串,或部署勒索软件。
缓解措施与建议
唯一的完整缓解措施是将LibreNMS升级到 24.10.0 或更高版本。维护者发布了这个版本,修复了所有三个易受攻击代码路径的输入清理和命令转义问题。没有可靠的变通方法——禁用受影响的控制器会破坏核心监控功能。防御者应该:
- 立即升级 所有LibreNMS实例到24.10.0或更新版本。升级过程记录在项目的官方升级指南中。
- 审计LibreNMS Web界面的网络暴露。如果Web UI必须从互联网访问,请将其放置在VPN或具有严格访问控制的反向代理后面。CVSS攻击向量是“网络”(AV:N),意味着远程利用是可能的。
- 监控LibreNMS服务器上的异常命令执行。查找由Web服务器用户(通常是
www-data或librenms)生成的意外进程,特别是调用curl,wget,bash或python的shell命令。 - 审查设备发现日志,寻找可能触发
PollDevice.php注入路径的可疑主机名或IP。将SNMP和ICMP发现限制在受信任的子网上。
截至本报告,维护者或第三方研究人员尚未发布任何入侵指标(IOC)。公告没有提及任何活跃的利用活动。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。

