CVE-2025-68614
LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
CVE-2025-68614 is a medium vulnerability (CVSS 4.3) in Librenms, published December 22, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 3.88%, the 90th percentile. Fixed in librenms/librenms 25.12.0.
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.12.0, the Alert Rule API is vulnerable to stored cross-site scripting. Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code. This issue has been patched in version 25.12.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- High
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
4.3
LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.12.0, the Alert Rule API is vulnerable to stored cross-site scripting. Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code. This issue has been patched in version 25.12.0.
- Record
CVE-2025-68614- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2025-204770
4.3
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.12.0, the Alert Rule API is vulnerable to stored cross-site scripting. Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code. This issue has been patched in version 25.12.0.
- Record
EUVD-2025-204770- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-c89f-8g7g-59wj
4.3
LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
Please find POC file here https://trendmicro-my.sharepoint.com/:u:/p/kholoud_altookhy/IQCfcnOE5ykQSb6Fm-HFI872AZ_zeIJxU-3aDk0jh_eX_NE?e=zkN76d
ZDI-CAN-28575: LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
-- CVSS -----------------------------------------
4.3: AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L
-- ABSTRACT -------------------------------------
Trend Micro's Zero Day Initiative has identified a vulnerability affecting the following products: LibreNMS - LibreNMS
-- VULNERABILITY DETAILS ------------------------
- Version tested: 25.10.0
- Installer file: NA
- Platform tested: NA
Analysis
LibreNMS Alert Rule API Stored Cross-Site Scripting
Overview
Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code.
Affected versions
The latest version at the time of writing (25.10.0) is vulnerable.
Root cause
When an alert rule is created or updated via the API, function add_edit_rule() in includes/html/api_functions.inc.php is called to add/update the entry in the database. When an alert rule is created via the web interface, HTML tags are stripped from the rule name, however this is not the case when using the API.
As such, it is possible to create an alert rule where the name is:
<script>alert(1)</script>
Later, when a victim browses to the Alerts > Alert Rule page, PHP script\xc2\xa0includes/html/print-alert/rules.php\xc2\xa0is called. It notably includes the file\xc2\xa0includes/html/modal/alert_rule_list.inc.php, which returns HTML code for a modal window that searches alert rules.
The modal window includes an HTML table with all rules, including their name, and an inline JavaScript that calls the\xc2\xa0bootgrid()\xc2\xa0function (http://www.jquery-bootgrid.com/) for styling and enhancing the table.
alert_rule.list.inc.php sanitizes the rule name with the function e() before including it in the table, which XML encodes all special characters. However the\xc2\xa0bootgrid()\xc2\xa0function rewrites the table cells content when enhancing the table, and as a side effect, XML character references are decoded. After the script updated the table, the browser now interprets the payload as HTML tags and includes the code to the DOM.
Detection guidance
- inspect HTTP POST and PUT requests to a Request-URI that includes the string\xc2\xa0
/api/v0/rules - check if the\xc2\xa0
name\xc2\xa0JSON value includes a<character
PoC
The proof-of-concept can be run as such:
python3 poc.py ip_addr -T <token>
-- CREDIT --------------------------------------- This vulnerability was discovered by: Simon Humbert of Trend Research of Trend Micro
-- FURTHER DETAILS ------------------------------
Supporting files:
If supporting files were contained with this report they are provided within a password protected ZIP file. The password is the ZDI candidate number in the form: ZDI-CAN-XXXX where XXXX is the ID number.
Please confirm receipt of this report. We expect all vendors to remediate ZDI vulnerabilities within 120 days of the reported date. If you are ready to release a patch at any point leading up to the deadline, please coordinate with us so that we may release our advisory detailing the issue. If the 120-day deadline is reached and no patch has been made available we will release a limited public advisory with our own mitigations, so that the public can protect themselves in the absence of a patch. Please keep us updated regarding the status of this issue and feel free to contact us at any time:
Zero Day Initiative [email protected]
The PGP key used for all ZDI vendor communications is available from:
http://www.zerodayinitiative.com/documents/disclosures-pgp-key.asc
-- INFORMATION ABOUT THE ZDI -------------------- Established by TippingPoint and acquired by Trend Micro, the Zero Day Initiative (ZDI) neither re-sells…
- Record
GHSA-c89f-8g7g-59wj- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
4.3
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.12.0, the Alert Rule API is vulnerable to stored cross-site scripting. Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code. This issue has been patched in version 25.12.0.
- Record
CVE-2025-68614- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
4.3
LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.12.0, the Alert Rule API is vulnerable to stored cross-site scripting. Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code. This issue has been patched in version 25.12.0.
- Record
CVE-2025-68614- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVGHSA-c89f-8g7g-59wj
4.3
LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
Please find POC file here https://trendmicro-my.sharepoint.com/:u:/p/kholoud_altookhy/IQCfcnOE5ykQSb6Fm-HFI872AZ_zeIJxU-3aDk0jh_eX_NE?e=zkN76d
ZDI-CAN-28575: LibreNMS Alert Rule API Cross-Site Scripting Vulnerability
-- CVSS -----------------------------------------
4.3: AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L
-- ABSTRACT -------------------------------------
Trend Micro's Zero Day Initiative has identified a vulnerability affecting the following products: LibreNMS - LibreNMS
-- VULNERABILITY DETAILS ------------------------
- Version tested: 25.10.0
- Installer file: NA
- Platform tested: NA
Analysis
LibreNMS Alert Rule API Stored Cross-Site Scripting
Overview
Alert rules can be created or updated via LibreNMS API. The alert rule name is not properly sanitized, and can be used to inject HTML code.
Affected versions
The latest version at the time of writing (25.10.0) is vulnerable.
Root cause
When an alert rule is created or updated via the API, function add_edit_rule() in includes/html/api_functions.inc.php is called to add/update the entry in the database. When an alert rule is created via the web interface, HTML tags are stripped from the rule name, however this is not the case when using the API.
As such, it is possible to create an alert rule where the name is:
<script>alert(1)</script>
Later, when a victim browses to the Alerts > Alert Rule page, PHP script\xc2\xa0includes/html/print-alert/rules.php\xc2\xa0is called. It notably includes the file\xc2\xa0includes/html/modal/alert_rule_list.inc.php, which returns HTML code for a modal window that searches alert rules.
The modal window includes an HTML table with all rules, including their name, and an inline JavaScript that calls the\xc2\xa0bootgrid()\xc2\xa0function (http://www.jquery-bootgrid.com/) for styling and enhancing the table.
alert_rule.list.inc.php sanitizes the rule name with the function e() before including it in the table, which XML encodes all special characters. However the\xc2\xa0bootgrid()\xc2\xa0function rewrites the table cells content when enhancing the table, and as a side effect, XML character references are decoded. After the script updated the table, the browser now interprets the payload as HTML tags and includes the code to the DOM.
Detection guidance
- inspect HTTP POST and PUT requests to a Request-URI that includes the string\xc2\xa0
/api/v0/rules - check if the\xc2\xa0
name\xc2\xa0JSON value includes a<character
PoC
The proof-of-concept can be run as such:
python3 poc.py ip_addr -T <token>
-- CREDIT --------------------------------------- This vulnerability was discovered by: Simon Humbert of Trend Research of Trend Micro
-- FURTHER DETAILS ------------------------------
Supporting files:
If supporting files were contained with this report they are provided within a password protected ZIP file. The password is the ZDI candidate number in the form: ZDI-CAN-XXXX where XXXX is the ID number.
Please confirm receipt of this report. We expect all vendors to remediate ZDI vulnerabilities within 120 days of the reported date. If you are ready to release a patch at any point leading up to the deadline, please coordinate with us so that we may release our advisory detailing the issue. If the 120-day deadline is reached and no patch has been made available we will release a limited public advisory with our own mitigations, so that the public can protect themselves in the absence of a patch. Please keep us updated regarding the status of this issue and feel free to contact us at any time:
Zero Day Initiative [email protected]
The PGP key used for all ZDI vendor communications is available from:
http://www.zerodayinitiative.com/documents/disclosures-pgp-key.asc
-- INFORMATION ABOUT THE ZDI -------------------- Established by TippingPoint and acquired by Trend Micro, the Zero Day Initiative (ZDI) neither re-sells…
- Record
GHSA-c89f-8g7g-59wj- CVSS 3.1
- 4.3 Medium
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-79
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
librenms/librenmsPackagist |
before 25.12.0 | 25.12.0 |
librenms/librenmsPackagist |
before 25.12.0, plus listed versions 1.191.201.20.11.211.22 Show 45 moreShow less1.22.011.231.241.251.261.271.281.291.301.30.011.311.31.011.31.021.31.031.321.32.011.331.33.011.341.351.361.36.011.371.381.391.401.411.421.42.011.431.441.451.461.471.481.48.11.491.501.50.11.511.521.531.53.11.541.55 |
25.12.0 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-02 | created | CVE List, EUVD, GitHub Advisories, NVD, OSV |
References
github.com/librenms/librenms/security/advisories/GHSA-c89f-8g7g-59wj
github.com/librenms/librenms/commit/ebe6c79bf4ce0afeb575c1285afe3934e44001f1
nvd.nist.gov/vuln/detail/CVE-2025-68614
github.com/advisories/GHSA-c89f-8g7g-59wj
github.com/CVEProject/cvelistV5/tree/main/cves/2025/68xxx/CVE-2025-68614.json
github.com/librenms/librenms
Left out here: 96 versions and the rest of 2 source descriptions. The JSON record has them.