CVE-2021-32743
📋 TL;DR
Icinga 2 monitoring system exposes sensitive credentials (database, Redis, Elasticsearch passwords) through its API to authenticated users with read permissions. This allows attackers who obtain API access to impersonate Icinga and potentially modify or delete monitoring data. Affects Icinga 2 versions before 2.11.10 and 2.12.0 through 2.12.4.
💻 Affected Systems
- Icinga 2
📦 What is this software?
Icinga by Icinga
Icinga by Icinga
⚠️ Risk & Real-World Impact
Worst Case
Attacker gains full control over Icinga's backend databases (MySQL/PostgreSQL), Redis cache, and Elasticsearch monitoring data, allowing data destruction, service disruption, and lateral movement to other systems using those credentials.
Likely Case
Attacker with API access extracts credentials and modifies monitoring data, causing false alerts, hiding real issues, or disrupting monitoring operations.
If Mitigated
With proper API access controls and network segmentation, impact limited to credential exposure without ability to reach backend services.
🎯 Exploit Status
Exploitation requires authenticated API access with read permissions for affected object types. Simple API queries can extract credentials.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 2.11.10 or 2.12.5 and later
Vendor Advisory: https://github.com/Icinga/icinga2/security/advisories/GHSA-wrpw-pmr8-qgj7
Restart Required: Yes
Instructions:
1. Backup Icinga configuration and data. 2. Upgrade to Icinga 2.11.10+ or 2.12.5+ using package manager (apt/yum) or from source. 3. Restart Icinga 2 service: systemctl restart icinga2. 4. Verify API no longer exposes credentials.
🔧 Temporary Workarounds
Restrict API User Permissions
allLimit API user permissions to prevent querying affected object types (IdoMysqlConnection, IdoPgsqlConnection, IcingaDB, ElasticsearchWriter).
# Edit API user configuration in /etc/icinga2/conf.d/api-users.conf
# Add filter rules or explicitly list allowed object types
# Example: object_filter = "host.name == \"specific-host\""
🧯 If You Can't Patch
- Implement strict network segmentation to isolate Icinga API from backend services (databases, Redis, Elasticsearch).
- Rotate all exposed credentials (database, Redis, Elasticsearch passwords) immediately and monitor for unauthorized access.
🔍 How to Verify
Check if Vulnerable:
Check Icinga version: icinga2 --version. If version is <2.11.10 or between 2.12.0-2.12.4, system is vulnerable. Also verify if API users have read permissions for affected object types.
Check Version:
icinga2 --version | grep 'version'
Verify Fix Applied:
After patching, attempt to query credentials via API (e.g., using curl to query IdoMysqlConnection objects) and confirm passwords are not returned.
📡 Detection & Monitoring
Log Indicators:
- Unusual API queries for IdoMysqlConnection, IdoPgsqlConnection, IcingaDB, or ElasticsearchWriter objects
- Failed authentication attempts to backend services using Icinga credentials
Network Indicators:
- Unexpected connections from Icinga server IPs to database/Redis/Elasticsearch ports
- API traffic patterns showing credential extraction attempts
SIEM Query:
source="icinga2.log" AND ("IdoMysqlConnection" OR "IdoPgsqlConnection" OR "IcingaDB" OR "ElasticsearchWriter") AND "query"
🔗 References
- https://github.com/Icinga/icinga2/security/advisories/GHSA-wrpw-pmr8-qgj7
- https://icinga.com/blog/2021/07/15/releasing-icinga-2-12-5-and-2-11-10/
- https://lists.debian.org/debian-lts-announce/2021/11/msg00010.html
- https://github.com/Icinga/icinga2/security/advisories/GHSA-wrpw-pmr8-qgj7
- https://icinga.com/blog/2021/07/15/releasing-icinga-2-12-5-and-2-11-10/
- https://lists.debian.org/debian-lts-announce/2021/11/msg00010.html
- https://lists.debian.org/debian-lts-announce/2024/11/msg00010.html