CVE-2019-13132

9.8 CRITICAL

📋 TL;DR

A remote buffer overflow vulnerability in ZeroMQ's libzmq library allows unauthenticated attackers to execute arbitrary code on servers using CURVE encryption. This affects public-facing ZeroMQ applications with CURVE authentication enabled. The vulnerability has a CVSS score of 9.8, indicating critical severity.

💻 Affected Systems

Products:
  • ZeroMQ libzmq
Versions: libzmq before 4.0.9, 4.1.x before 4.1.7, and 4.2.x before 4.3.2
Operating Systems: All platforms running vulnerable libzmq versions
Default Config Vulnerable: ✅ No
Notes: Only affects configurations with CURVE encryption/authentication enabled on listening sockets. Default configurations without CURVE are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data theft, and lateral movement within the network.

🟠

Likely Case

Remote code execution allowing attackers to take control of vulnerable ZeroMQ servers and potentially pivot to other systems.

🟢

If Mitigated

Limited impact if servers are not internet-facing and have strict network segmentation, though internal exploitation remains possible.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires connecting to a vulnerable ZeroMQ server with CURVE enabled. No authentication is required.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: libzmq 4.0.9, 4.1.7, or 4.3.2

Vendor Advisory: https://github.com/zeromq/libzmq/issues/3558

Restart Required: Yes

Instructions:

1. Identify affected ZeroMQ installations. 2. Upgrade to libzmq 4.0.9, 4.1.7, or 4.3.2 or later. 3. Restart all ZeroMQ applications and services. 4. Verify the patch is applied correctly.

🔧 Temporary Workarounds

Disable CURVE authentication

all

Temporarily disable CURVE encryption/authentication on ZeroMQ sockets if not required for functionality.

Modify ZeroMQ application configuration to use PLAIN or NULL authentication instead of CURVE

Network isolation

linux

Restrict network access to ZeroMQ servers using firewalls or network segmentation.

iptables -A INPUT -p tcp --dport [ZEROMQ_PORT] -s [TRUSTED_IP] -j ACCEPT
iptables -A INPUT -p tcp --dport [ZEROMQ_PORT] -j DROP

🧯 If You Can't Patch

  • Disable CURVE authentication on all ZeroMQ sockets and use alternative authentication methods
  • Implement strict network controls to limit access to ZeroMQ servers only from trusted sources

🔍 How to Verify

Check if Vulnerable:

Check libzmq version and verify if CURVE authentication is enabled on listening sockets. Use: zeromq library version check and review application configuration.

Check Version:

On Linux: dpkg -l | grep libzmq or rpm -qa | grep zeromq; On Windows: Check installed programs or use zmq_version() in application code.

Verify Fix Applied:

Confirm libzmq version is 4.0.9, 4.1.7, 4.3.2 or later using: zmq_version() or package manager query.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected connection attempts to ZeroMQ ports
  • Crash logs from ZeroMQ applications
  • Stack trace errors indicating buffer overflow

Network Indicators:

  • Unusual traffic patterns to ZeroMQ ports from untrusted sources
  • Exploit attempt patterns in network traffic

SIEM Query:

source="*zeromq*" OR process="*zmq*" AND (event_type="crash" OR message="*overflow*" OR message="*segfault*")

🔗 References

📤 Share & Export