CVE-2016-10532
📋 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
- console-io
📦 What is this software?
Console Io by Console Io Project
⚠️ 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.
🎯 Exploit Status
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
linuxRestrict 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
linuxRun 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"])