Malicious code in kordyn (npm)
The npm package kordyn contained malicious code: a base64-encoded Windows PE64 executable embedded in its main entry point (index.mjs). When imported in a Linux WSL environment, the module writes the binary to the Windows Startup folder, achieving persistence and code execution on the developer's Windows host.
- Disclosed
- Last updated
- Blast radius
- Developers using kordyn in WSL environments on Windows systems; Windows host machines of affected developers
- Ecosystems
- Attack vectors
- Affected entities
- kordynnpm package containing embedded Windows PE64 executable
The npm package kordyn was found to contain malicious code disguised as a 'dependency-free streak counting utility'. The package's main entry file (index.mjs) contains a chunked base64 blob that decodes to a Windows PE64 executable, confirmed by the presence of MZ/PE headers and the DOS mode stub.\n\nThe malicious behavior is triggered at import time when the module detects a WSL (Windows Subsystem for Linux) environment by checking for the existence of /mnt/c. Upon detection, it writes the embedded binary to /mnt/c/Users/[user]/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/vite-native-helper.exe. This placement in the Windows Startup folder ensures the executable runs automatically on the next Windows login of the developer.\n\nThe package's documentation (package.json and README) does not disclose the PE payload or the WSL persistence mechanism. The filename 'vite-native-helper.exe' appears to be a cover-story name unrelated to the package's stated purpose, further obscuring the malicious intent.\n\nThe incident was identified by the OpenSSF's malicious-packages project and reported via GitHub Security Advisory GHSA-4mhx-3hm9-cfpf.
Indicators of compromise
- Packages
- kordyn
Remediation
- Immediately uninstall the kordyn package from all systems
- Audit npm package.json and lock files for any kordyn dependency
- Scan Windows systems for the presence of vite-native-helper.exe in Startup folders and remove if found
- Review Windows event logs and system activity for unauthorized execution on affected machines
- Consider using npm audit and supply chain security tools to detect similar malicious packages
- Verify the integrity of other dependencies in affected projects
Sources
- GitHub Advisory GHSA-4mhx-3hm9-cfpf · GitHub Advisory Database
Cite this entry
"Malicious code in kordyn (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed July 28, 2026; last updated July 28, 2026. https://supplychainattack.org/incident/malicious-code-in-kordyn-npm-14ea4b
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 fetch-runtime
Malware was discovered in the npm package fetch-runtime. Any system with this package installed or running should be considered fully compromised. All secrets and keys must be rotated immediately from a different computer.
npmCompromised package - resolvedcritical
Malicious code in ghazaly (npm)
The npm package ghazaly version 99.9.0 contained malicious code that executed a postinstall hook to collect system information (hostname, current user, IP addresses) and exfiltrate it to a Burp Collaborator domain. The package exhibited dependency-confusion characteristics with a high version number and nonsense dependencies.
npmCompromised packageDependency confusion - containedcritical
Malicious code in base65-13x (npm)
base65-13x@5.0.2 on npm contains malicious obfuscated code disguised as a legitimate base-x library. The decode() function executes a ~123KB VM-style payload with dynamic code construction and network I/O capabilities.
npmCompromised package - containedcritical
Malicious code in kit-vim-map (npm)
The npm package kit-vim-map contained malicious code that executes a remote-controlled Linux ELF binary on installation, providing the attacker with arbitrary RCE, persistence, and file exfiltration capabilities. The binary beacons to C2 server 217.60.77.63 and establishes persistence via systemd user units.
npmCompromised packageMalicious commit