CVE-2025-39665

5.3 MEDIUM

📋 TL;DR

CVE-2025-39665 is an information disclosure vulnerability in Nagvis' Checkmk MultisiteAuth plugin that allows unauthenticated attackers to enumerate valid Checkmk usernames. This affects organizations using Nagvis with Checkmk MultisiteAuth before version 1.9.48. The vulnerability enables reconnaissance that could facilitate credential attacks.

💻 Affected Systems

Products:
  • Nagvis with Checkmk MultisiteAuth plugin
Versions: All versions before 1.9.48
Operating Systems: Any OS running Nagvis
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects Nagvis installations using the Checkmk MultisiteAuth plugin for authentication.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers build complete username lists, enabling targeted brute-force attacks that could lead to account compromise and lateral movement within the monitoring infrastructure.

🟠

Likely Case

Attackers enumerate some valid usernames, increasing success rates for subsequent credential stuffing or phishing attacks against those users.

🟢

If Mitigated

With strong password policies, MFA, and rate limiting, the impact is limited to reconnaissance without direct access.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability involves sending crafted requests to the authentication endpoint and observing differences in responses between valid and invalid usernames.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.9.48

Vendor Advisory: https://www.nagvis.org/downloads/changelog/1.9.48

Restart Required: Yes

Instructions:

1. Backup current Nagvis configuration
2. Download Nagvis 1.9.48 or newer from nagvis.org
3. Follow Nagvis upgrade documentation for your platform
4. Verify the Checkmk MultisiteAuth plugin is updated
5. Restart Nagvis service

🔧 Temporary Workarounds

Network Access Restriction

linux

Restrict access to Nagvis authentication endpoints to trusted IP ranges only

# Use firewall rules to restrict access to Nagvis port (typically 80/443)
iptables -A INPUT -p tcp --dport 80 -s trusted_network -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

Web Server Rate Limiting

all

Implement rate limiting on authentication endpoints to prevent enumeration

# Apache example with mod_ratelimit
SetEnvIf Request_URI "^/nagvis/.*auth.*" RATELIMIT
BrowserMatch RATELIMIT ratelimit=10
# Nginx example
limit_req_zone $binary_remote_addr zone=auth:10m rate=10r/m;
location ~ /nagvis/.*auth.* { limit_req zone=auth burst=5; }

🧯 If You Can't Patch

  • Implement network segmentation to isolate Nagvis from untrusted networks
  • Enable detailed logging and monitoring for authentication attempts with alerting on suspicious patterns

🔍 How to Verify

Check if Vulnerable:

Check if Nagvis responds differently to valid vs invalid usernames at authentication endpoints. Test with curl: curl -X POST http://nagvis-server/nagvis/frontend/nagvis-js/index.php?mod=Auth&act=doLogon -d 'username=testuser' and observe response differences.

Check Version:

Check Nagvis version in web interface footer or config file: grep '\$version' /usr/local/nagvis/share/nagvis/includes/defines/global.inc.php

Verify Fix Applied:

After patching, repeat the test and verify that responses are identical for valid and invalid usernames (no information disclosure).

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed authentication attempts with different usernames from same source
  • Unusual pattern of authentication requests to Nagvis endpoints
  • Requests to authentication endpoints from unexpected IP ranges

Network Indicators:

  • High volume of POST requests to /nagvis/.../auth endpoints
  • Requests with sequential or dictionary-based usernames

SIEM Query:

source="nagvis_access.log" AND (uri_path="/nagvis/frontend/nagvis-js/index.php" AND uri_query="mod=Auth") | stats count by src_ip, username | where count > 10

🔗 References

📤 Share & Export