CVE-2018-16879
📋 TL;DR
Ansible Tower versions before 3.3.3 use insecure default RabbitMQ messaging channels for celery workers, allowing attackers to intercept sensitive data like passwords or delete critical files. This affects all Ansible Tower deployments using default configurations.
💻 Affected Systems
- Red Hat Ansible Tower
📦 What is this software?
⚠️ Risk & Real-World Impact
Worst Case
Complete compromise of Ansible Tower environment including credential theft, deletion of all projects/inventory files, and potential lateral movement to managed systems.
Likely Case
Data exfiltration of sensitive credentials and configuration files, leading to privilege escalation and system compromise.
If Mitigated
Minimal impact if proper network segmentation and secure channel configurations are already implemented.
🎯 Exploit Status
Exploitation requires network access to RabbitMQ messaging ports (default 5672). No authentication needed to intercept unencrypted traffic.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.3.3 and later
Vendor Advisory: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-16879
Restart Required: Yes
Instructions:
1. Backup Ansible Tower configuration and data. 2. Upgrade to Ansible Tower 3.3.3 or later. 3. Restart all Ansible Tower services. 4. Verify RabbitMQ is configured with SSL/TLS.
🔧 Temporary Workarounds
Configure RabbitMQ SSL/TLS
linuxManually configure RabbitMQ to use SSL/TLS for all communications
# Configure RabbitMQ SSL in /etc/rabbitmq/rabbitmq.config
# Set ssl_options for listeners and clients
# Restart rabbitmq-server service
Network Segmentation
linuxIsolate RabbitMQ messaging traffic to trusted network segments
# Configure firewall rules to restrict access to RabbitMQ ports
iptables -A INPUT -p tcp --dport 5672 -s trusted_network -j ACCEPT
iptables -A INPUT -p tcp --dport 5672 -j DROP
🧯 If You Can't Patch
- Implement strict network segmentation to isolate RabbitMQ traffic from untrusted networks
- Configure RabbitMQ with SSL/TLS encryption and certificate authentication
🔍 How to Verify
Check if Vulnerable:
Check Ansible Tower version: ansible-tower-service status | grep Version. If version < 3.3.3, check RabbitMQ configuration for SSL settings.
Check Version:
ansible-tower-service --version
Verify Fix Applied:
Verify version is 3.3.3+: ansible-tower-service --version. Check RabbitMQ is using SSL: rabbitmqctl status | grep ssl.
📡 Detection & Monitoring
Log Indicators:
- Unauthorized access attempts to RabbitMQ ports
- Unusual message patterns in RabbitMQ logs
- Failed SSL/TLS handshake attempts
Network Indicators:
- Unencrypted AMQP traffic on port 5672
- Network sniffing tools targeting RabbitMQ ports
SIEM Query:
source="rabbitmq.log" AND (event="connection_error" OR event="ssl_handshake_failed")