CVE-2016-10532

9.8 CRITICAL

📋 TL;DR

CVE-2016-10532 is an authentication bypass vulnerability in console-io module versions 2.2.13 and earlier that allows unauthenticated attackers to execute arbitrary system commands via websocket connections. This affects any application using vulnerable console-io versions with web console functionality exposed. Attackers gain the same privileges as the user running the console-io process.

💻 Affected Systems

Products:
  • console-io
Versions: 2.2.13 and earlier
Operating Systems: All platforms running Node.js
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications that have console-io web console functionality enabled and accessible. The vulnerability exists in the default configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with root-level access if console-io runs as root, allowing attackers to install malware, exfiltrate data, or pivot to other systems.

🟠

Likely Case

Unauthenticated remote code execution with the privileges of the console-io process user, potentially leading to data theft, service disruption, or lateral movement.

🟢

If Mitigated

Limited impact if console-io runs with minimal privileges and network access is restricted, though command execution would still be possible.

🌐 Internet-Facing: HIGH - The vulnerability requires only network access to the websocket endpoint with no authentication, making internet-facing instances extremely vulnerable.
🏢 Internal Only: HIGH - Even internally, any user with network access to the service can exploit this without credentials.

🎯 Exploit Status

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

Exploitation is straightforward - attackers simply connect to the websocket endpoint and send commands. No special tools or complex techniques required.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.2.14 and later

Vendor Advisory: https://nodesecurity.io/advisories/90

Restart Required: Yes

Instructions:

1. Update console-io to version 2.2.14 or later using npm update console-io. 2. Restart the application. 3. Verify the fix by checking the package.json version.

🔧 Temporary Workarounds

Network Access Restriction

linux

Restrict network access to console-io websocket endpoints using firewall rules or network segmentation.

iptables -A INPUT -p tcp --dport [console-io-port] -s [trusted-network] -j ACCEPT
iptables -A INPUT -p tcp --dport [console-io-port] -j DROP

Process Privilege Reduction

linux

Run console-io with minimal privileges using a non-root, restricted user account.

sudo -u [restricted-user] node [your-app.js]

🧯 If You Can't Patch

  • Disable or remove console-io functionality entirely from production applications
  • Implement application-level authentication before console-io endpoints and ensure socket.io requires authentication

🔍 How to Verify

Check if Vulnerable:

Check package.json or run 'npm list console-io' to see if version is 2.2.13 or earlier. Also verify if websocket endpoints are accessible without authentication.

Check Version:

npm list console-io | grep console-io

Verify Fix Applied:

Confirm console-io version is 2.2.14 or later using 'npm list console-io'. Test that websocket connections require authentication.

📡 Detection & Monitoring

Log Indicators:

  • Unauthenticated websocket connections to console-io endpoints
  • Unexpected command execution patterns from console-io process

Network Indicators:

  • Websocket traffic to console-io ports without preceding authentication
  • Unusual outbound connections from console-io process

SIEM Query:

source="console-io.log" AND (event="websocket_connection" AND user="anonymous") OR (event="command_execution" AND NOT user IN ["authorized_users"])

🔗 References

📤 Share & Export