MAL-2026-6723 Malicious code in electron-orbit (npm)
Malicious package
Published
MAL-2026-6723 is a malicious package: electron-orbit (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-6723/ (Markdown: https://insights.sbomify.com/MAL-2026-6723/index.md)
- Package
- electron-orbit
- Registry
- npm
What is MAL-2026-6723?
MAL-2026-6723 is a malicious package in electron-orbit, published on 1 Jul 2026.
Official description
On
require('electron-orbit'), the module unconditionally fires an auto-prefetch pipeline in Node contexts (when no document is present) that opens a raw node:net socket to electronorbit.blob.core.windows.net:443 and speaks a hand-written TLS 1.3 stack (custom ClientHello, HKDF key schedule, AES-128-GCM in aetherls.ts) rather than using https, bypassing standard TLS interception and static inspection. Every network-related string — the Azure hostname components, node:net, connect, ALPN http/1.1, HTTP request line, marker filename, and process.env enumeration keys — is XOR-obfuscated through a helper __s(key, arr). The postinstall script install.js writes an install marker to os.tmpdir()/electron_orbit_install_marker.txt containing process.env entries whose keys match path (PATH-family variables) plus process.cwd(), and separately stages os.hostname(), os.userInfo().username, process.version, platform and arch into a decoy file under bin/formatters/ prefixed with a fake native-binary magic byte. On require, index.ts reads the tmpdir marker, XORs it with the string electron-orbit, hex-encodes it, and appends the result as a query-string suffix to the Azure blob URL, so the storage account's HTTP request logs capture the installer's PATH-family environment and working directory. Activation is gated: the destination host is only populated when the SHA-256 of process.env.BuildType is a substring of a hardcoded 64-hex constant (0ceaa396…8295); otherwise the source is set to %TEMP% and the request fails to resolve, keeping the payload dormant on non-targeted installers and firing only when a specific env var is set (e.g., in a chosen CI environment). The advertised purpose (Electron-style runtime discovery) has no relationship to icon fetching or SVG rendering; the icon surface is a pretext — getRegisteredIcon returns a hardcoded empty <svg> regardless of the network response.What should I do about MAL-2026-6723?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.