CVE-2025-53840
Executive Summary
CVE-2025-53840 is a low-severity authorization bypass vulnerability in Icinga DB Web, a graphical interface for Icinga monitoring. The flaw allows authenticated users with access to Dependency Views to see hosts and services that should be restricted by the filter/hosts and filter/services policies. While the names of restricted objects are not revealed, and full detail views are not accessible, the exposure of object existence on the dependency map violates intended access controls. The vulnerability affects versions 1.2.0 and 1.2.1, with version 1.2.2 applying the proper restrictions. The EPSS score is 0.0%, indicating a very low probability of exploitation in the wild. No public proof-of-concept or exploit code is available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) and does not involve a supply chain component. The affected component is a PHP-based web application distributed as part of the Icinga ecosystem.
CVSS Breakdown & Threat Level
- CVSS Score: 2.4 (Low)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (authenticated user with access to Dependency Views)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (existence of objects revealed)
- Integrity Impact: None
- Availability Impact: None
Threat Level: Low. The vulnerability requires authenticated access and only exposes the existence of restricted objects without revealing names or details. The EPSS score of 0.0% confirms minimal exploitation risk.
Deep Dive & Mechanics
The vulnerability resides in the Icinga DB Web module responsible for rendering dependency maps. In versions 1.2.0 and 1.2.1, the authorization checks for filter/hosts and filter/services are not applied when generating the dependency graph. This allows users who are restricted from viewing certain hosts or services to still see them as nodes on the dependency map.
The root cause is a missing or incomplete filter enforcement in the dependency map rendering logic. The filter/objects restriction works correctly, but the more granular filter/hosts and filter/services restrictions are bypassed. The dependency map is built by querying the Icinga DB for relationships between objects, and the authorization check is not performed on the results before rendering.
The fix in version 1.2.2 applies the same filtering logic used for filter/objects to the filter/hosts and filter/services restrictions, ensuring that restricted objects are not included in the dependency map data.
Vulnerable vs. Patched Code
The vulnerable code is in the dependency map data provider. The following is a conceptual representation of the vulnerable and patched logic.
Vulnerable Code (v1.2.0 - v1.2.1):
// In DependencyMapProvider.php
public function getDependencyData($userId) {
$restrictions = $this->getRestrictions($userId);
// Only applies filter/objects restriction
$objectFilter = $restrictions['filter/objects'] ?? null;
$query = $this->db->select()->from('icinga_dependency');
if ($objectFilter) {
$query->where($objectFilter);
}
// Missing: apply filter/hosts and filter/services
return $query->fetchAll();
}
Patched Code (v1.2.2):
// In DependencyMapProvider.php
public function getDependencyData($userId) {
$restrictions = $this->getRestrictions($userId);
$objectFilter = $restrictions['filter/objects'] ?? null;
$hostFilter = $restrictions['filter/hosts'] ?? null;
$serviceFilter = $restrictions['filter/services'] ?? null;
$query = $this->db->select()->from('icinga_dependency');
if ($objectFilter) {
$query->where($objectFilter);
}
if ($hostFilter) {
$query->where($hostFilter);
}
if ($serviceFilter) {
$query->where($serviceFilter);
}
return $query->fetchAll();
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to an Icinga DB Web instance (version 1.2.0 or 1.2.1)
- Valid user credentials with access to Dependency Views
- The user must have restrictions applied via
filter/hostsorfilter/services
Exploitation Steps:
- Log in to Icinga DB Web as a restricted user.
- Navigate to the Dependency Views section (e.g.,
/icingadb-web/dependency/map). - Observe that the dependency map displays hosts and services that should be hidden by the user's restrictions.
- The user can see the existence of these objects on the map but cannot click through to their detail views.
Proof of Concept:
# No public PoC available. The exploitation is manual and requires a browser.
# Steps:
# 1. Authenticate as a user with filter/hosts restriction.
# 2. Access the dependency map URL.
# 3. Observe unauthorized objects on the map.
Blue Team
Detection:
- Monitor access logs for unusual patterns in dependency map requests.
- Look for users accessing the dependency map who have restrictive filters applied.
- Check for discrepancies between the objects visible in the dependency map and the objects the user is authorized to see.
Hunting:
-- Query Icinga DB for users with filter/hosts or filter/services restrictions
SELECT username, restriction_type, restriction_value
FROM icinga_user_restriction
WHERE restriction_type IN ('filter/hosts', 'filter/services');
Lab Setup:
- Deploy Icinga DB Web version 1.2.0 or 1.2.1.
- Create a user with a restriction on
filter/hosts(e.g.,host_name=secret-server). - Create a host named
secret-serverand another host. - Create a dependency between the two hosts.
- Log in as the restricted user and navigate to the dependency map.
- Verify that
secret-serveris visible on the map despite the restriction.
Indicators of Compromise (IOCs)
- Log Entries: Access logs showing requests to
/icingadb-web/dependency/mapfrom users with restrictive filters. - Network Traffic: No specific network IOCs; the vulnerability is exploited through normal web traffic.
- File System: No file modifications; the vulnerability is in the application logic.
- Database: No database changes; the vulnerability is in the query logic.
Detection Engineering
YARA Rule
rule CVE_2025_53840_Icinga_DB_Web_Auth_Bypass {
meta:
description = "Detects vulnerable Icinga DB Web versions based on file hash"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-53840"
severity = "low"
strings:
$vulnerable_code = "filter/objects" ascii wide nocase
$missing_filter = "filter/hosts" ascii wide nocase
condition:
$vulnerable_code and not $missing_filter
}
Sigma Rule
title: Icinga DB Web Dependency Map Access by Restricted User
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects access to the dependency map by users with filter/hosts or filter/services restrictions
author: Valters IT
date: 2025-04-10
logsource:
category: application
product: icinga_db_web
detection:
selection:
http.url|contains: "/dependency/map"
user.restrictions|contains: "filter/hosts"
condition: selection
falsepositives:
- Legitimate access by users with broad restrictions
level: low
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-53840 Icinga DB Web Dependency Map Access";
flow:to_server,established;
content:"/dependency/map"; http_uri;
classtype:attempted-recon;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade Icinga DB Web to version 1.2.2 or later.
- If upgrade is not possible, downgrade to version 1.1.3 as a workaround.
Long-term Mitigations:
- Implement additional access control reviews for all Icinga DB Web modules.
- Regularly audit user restrictions and permissions.
- Monitor for any unauthorized access attempts to dependency views.
Patch Details:
- Upgrade to version 1.2.2 from the official Icinga repository.
- The patch applies proper filtering for
filter/hostsandfilter/servicesin the dependency map data provider.
Valters IT Signature This report was generated by Valters IT DevSecOps AI Assistant.