CVE-2017-14478

9.8 CRITICAL

📋 TL;DR

CVE-2017-14478 is a critical command injection vulnerability in MySQL Multi-Master Replication Manager (MMM) agent that allows remote unauthenticated attackers to execute arbitrary commands with mmm_agentd process privileges. This affects Linux systems running mmm_agentd version 2.2.1. Attackers can exploit this by sending specially crafted MMM protocol messages over TCP.

💻 Affected Systems

Products:
  • MySQL Multi-Master Replication Manager (MMM)
Versions: 2.2.1
Operating Systems: Linux
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects mmm_agentd component. The vulnerability is in the clear_ip function when processing MMM protocol messages.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise leading to data theft, lateral movement, and persistent backdoor installation with root privileges if mmm_agentd runs as root.

🟠

Likely Case

Remote code execution allowing attackers to steal database credentials, modify replication settings, or disrupt database operations.

🟢

If Mitigated

Limited impact if mmm_agentd runs with minimal privileges and network access is restricted.

🌐 Internet-Facing: HIGH - The vulnerability requires only TCP connectivity and no authentication, making internet-exposed instances extremely vulnerable.
🏢 Internal Only: HIGH - Even internally, any attacker with network access to the agent port can exploit this vulnerability.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation is straightforward - requires sending a specially crafted TCP packet to the mmm_agentd port (default 9988). Proof-of-concept code is publicly available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.2.2 and later

Vendor Advisory: https://github.com/mysql-mmm/mysql-mmm

Restart Required: Yes

Instructions:

1. Stop mmm_agentd service. 2. Upgrade to MMM version 2.2.2 or later. 3. Restart mmm_agentd service. 4. Verify the service is running correctly.

🔧 Temporary Workarounds

Network Access Control

linux

Restrict network access to mmm_agentd port using firewall rules

iptables -A INPUT -p tcp --dport 9988 -s trusted_ip_range -j ACCEPT
iptables -A INPUT -p tcp --dport 9988 -j DROP

Service Isolation

linux

Run mmm_agentd with minimal privileges and in isolated environment

useradd -r -s /bin/false mmmagent
chown -R mmmagent:mmmagent /etc/mysql-mmm/
sed -i 's/^USER=.*/USER=mmmagent/' /etc/init.d/mmm_agentd

🧯 If You Can't Patch

  • Implement strict network segmentation and firewall rules to block all unauthorized access to port 9988
  • Monitor mmm_agentd process activity and network connections for suspicious behavior

🔍 How to Verify

Check if Vulnerable:

Check MMM version: mmm --version | grep '^mmm agent' and verify if it's 2.2.1

Check Version:

mmm --version | grep '^mmm agent'

Verify Fix Applied:

Verify version is 2.2.2 or later: mmm --version | grep '^mmm agent'

📡 Detection & Monitoring

Log Indicators:

  • Unusual command execution in mmm_agentd logs
  • Failed authentication attempts or protocol errors
  • Unexpected process spawns from mmm_agentd

Network Indicators:

  • TCP connections to port 9988 from unauthorized sources
  • Unusual network traffic patterns to mmm_agentd port

SIEM Query:

source="mmm_agentd.log" AND ("command injection" OR "unexpected command" OR "protocol error")

🔗 References

📤 Share & Export