Malicious code in w-screenctl (npm)
w-screenctl npm package contained malicious code that exposed an unauthenticated HTTP server on 0.0.0.0:7000, allowing remote arbitrary JavaScript execution in a controlled Chrome instance and system-wide keyboard/mouse input, leading to potential host RCE.
- Disclosed
- Last updated
- Blast radius
- Any system with w-screenctl installed and invoked, with network access to the HTTP server on port 7000.
- Ecosystems
- Attack vectors
- Affected entities
- w-screenctlnpm package
The w-screenctl npm package contained intentionally malicious code that, when the WScreenctl() function is invoked (via bundled entry point or documented systemd/Task Scheduler service units), starts a Hapi HTTP server listening on all interfaces (0.0.0.0:7000) with CORS enabled and no authentication.\n\nThe exposed HTTP endpoints allow remote attackers to:\n- POST to /chrome/evaluate with arbitrary JavaScript that is passed directly to Playwright's page.evaluate, executing code within the controlled Chrome instance\n- POST to /keyboard/type, /keyboard/key, and /mouse/* endpoints to drive system-wide keyboard and mouse input via xdotool or w-mousekey/AHK\n\nBecause the server binds to all network interfaces without credential checks, any party with network reachability (LAN, adjacent VLAN, or internet-routable interface) can exploit these endpoints to execute arbitrary JavaScript in the browser and drive keystrokes/clicks on the operator's machine. This can be leveraged to open a terminal, type shell commands, and achieve full remote code execution on the host.\n\nThe malicious package was identified by the OpenSSF malicious-packages project.
Indicators of compromise
- Packages
- w-screenctl
Remediation
- Immediately uninstall w-screenctl from all systems
- Audit npm package.json and lock files for any w-screenctl dependencies
- Review system logs for any suspicious HTTP activity on port 7000 or unexpected keyboard/mouse input
- If the package was invoked, assume host compromise and perform full system forensics and remediation
- Update to a clean version of any legitimate replacement package if available
- Implement network segmentation and firewall rules to restrict outbound connections from development/build systems
Sources
- GitHub Advisory GHSA-38f4-gq4r-6vwp · GitHub Advisory Database
Cite this entry
"Malicious code in w-screenctl (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 7, 2026; last updated August 7, 2026. https://supplychainattack.org/incident/malicious-code-in-w-screenctl-npm-4rv32j
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malware in chlklib
Malware was discovered in the npm package chlklib, resulting in full system compromise of any computer with the package installed or running. All affected systems should be considered fully compromised and all secrets and keys rotated immediately from a different computer.
npmCompromised package - resolvedcritical
Malware in alphazone
The npm package alphazone contained malware that provided full system compromise to attackers. Any computer with the package installed or running should be considered fully compromised.
npmCompromised package - containedcritical
Malware in chai-as-deployer
Malware was discovered in the npm package chai-as-deployer, resulting in full system compromise for any computer with the package installed or running. All secrets and keys on affected systems should be rotated immediately from a different computer.
npmCompromised package - containedcritical
Malware in checkout-common-tokens
Malware was discovered in the npm package checkout-common-tokens. Systems with this package installed are considered fully compromised and require immediate remediation.
npmCompromised package