MAL-2026-14051 Malicious code in @velliajs/discord (npm)
Malicious package
Published
MAL-2026-14051 is a malicious package: @velliajs/discord (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-14051/ (Markdown: https://insights.sbomify.com/MAL-2026-14051/index.md)
- Package
- @velliajs/discord
- Registry
- npm
What is MAL-2026-14051?
MAL-2026-14051 is a malicious package in @velliajs/discord, published on 14 Aug 2026.
Official description
The package presents itself as a discord.js clone (
repository field points at the real github.com/discordjs/discord.js.git, README instructs import... from '@verylinh/discord') but ships two installer-relevant hostile mechanisms. First, package.json declares a runtime dependency sysframe resolved from git+https://[email protected]/navaLinh/node-ai.git — an unpinned (no commit SHA or tag), private, author-controlled GitHub repository, using an embedded live GitHub Personal Access Token. Every npm install uses the shipped token to fetch the current HEAD of that private repo into the installer's node_modules; the author can rewrite HEAD at any time to deliver arbitrary code, including lifecycle scripts, that will execute on subsequent installs. Second, Client.login() invokes an undocumented _verifyAuthorization routine that fetches an allow-list JSON from api.github.com/repos/Vellia-Elyvia/mydb/contents/db.json under a hardcoded PAT and refuses to start the installer's Discord bot unless the bot's username appears in the author-controlled allow-list — a hidden remote gate/kill-switch over the installer's runtime that is not disclosed in the README. Two live GitHub PATs are hardcoded in the shipped package (one in the git dependency URL, one as the default ghToken in _validateAuthOptions). The package name and metadata impersonate discord.js.What should I do about MAL-2026-14051?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.