Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources, documents or advisories need attention: 268/272 feeds/APIs · 468/469 docs · 7/9 advisories · checked 06:40 UTC Customize Public modeDiscuss ChangeIntel on Discord

Malicious code in @beproduct/nestjs-auth (0.1.2 through 0.1.19) — Mini Shai-Hulud worm

Collected exploitation and prediction evidence

Risk source coverage

CISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.

No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.

cve-program · CVE-2026-46412

Published

@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `>=0.1.2 <=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes.

Source published
20 Jul 2026 14:31:53 UTC
Source modified
20 Jul 2026 15:32:29 UTC
Observed here
23 Oct 2026 15:48:27 UTC
Source terms
CVE Program Terms of Use

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

nvd · CVE-2026-46412

Published

@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `>=0.1.2 <=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes.

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Awaiting Analysis

Weakness classifications: CWE-506

Original publisher date fields

published: 2026-07-20T16:17:01.000

lastModified: 2026-10-24T20:10:00.137

Source published
20 Jul 2026 16:17:01 UTC
Source modified
24 Oct 2026 20:10:00 UTC
Observed here
25 Oct 2026 12:17:14 UTC
Source terms
NIST NVD usage terms; underlying source attribution retained

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · [email protected] · Secondary · 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

osv · GHSA-6xwp-cp5h-q856

Published

## Summary Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The packages contained payloads from the **Mini Shai-Hulud** npm supply-chain worm campaign described by [Aikido Security](https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised). npm Security removed the malicious versions from the registry shortly after publication, but anyone who ran `npm install @beproduct/nestjs-auth` resolving to any version in the affected range during that window executed the malicious postinstall script and is potentially compromised. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. ## Impact The postinstall payload attempted to harvest: - npm tokens (from `~/.npmrc`) - GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens - AWS credentials (from environment variables and `~/.aws/credentials`) - HashiCorp Vault tokens - Other secrets present in environment variables Exfiltration target: `https://filev2.getsession.org`. The worm also wrote persistence artefacts (`tanstack_runner.js`, `router_init.js`, `setup.mjs`, plus IDE-hook configurations in `.claude/` and `.vscode/`) into the developer's working tree where the malicious install ran. ## Indicators of compromise | Type | Value | |---|---| | File name (payload) | `tanstack_runner.js`, `router_init.js`, `router_runtime.js` | | SHA-256 (tanstack_runner.js) | `2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96` | | SHA-256 (router_init.js) | `ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c` | | Exfil endpoint | `filev2.getsession.org` | | Cloud metadata probe | `169.254.169.254/latest/meta-data/iam/security-credentials/` | | npm token endpoint | `registry.npmjs.org/-/npm/v1/tokens` | | Vault probe | `vault.svc.cluster.local:8200` | | IDE hook pattern | `.claude/settings.json` `SessionStart` hook + `.vscode/tasks.json` `runOn: "folderOpen"` running `node .claude/setup.mjs` or `node .vscode/setup.mjs` | ## Mitigation If you installed any version in the range `>=0.1.2 <=0.1.19`: 1. **Remove the package and clean the npm cache:** ```bash npm uninstall @beproduct/nestjs-auth npm cache clean --force ``` 2. **Install the clean version:** ```bash npm install @beproduct/[email protected] ``` 3. **Rotate every credential present in the install environment**, including: - All npm publish tokens (`https://www.npmjs.com/settings/<you>/tokens`) - All GitHub PATs and OAuth tokens (`https://github.com/settings/applications` + `https://github.com/settings/tokens`) - AWS access keys - HashiCorp Vault tokens - Any other secret that was in env vars or config files at install time 4. **Scan affected hosts** for the indicators of compromise above. If any are found, treat the host as compromised and reimage. 5. **Check committed repository history** for unexpected additions in `.claude/` or `.vscode/` directories — the worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes. ## Timeline (UTC) | Time | Event | |---|---| | 2026-05-11 20:19:43 | First malicious version (`0.1.2`) published | | 2026-05-11 22:56:39 | Final malicious version (`0.1.19`) published — 18 versions in 2h37m | | 2026-05-12 ~14:12 | npm Security removes the malicious versions from the registry | | 2026-05-13 | BeProduct discovers the incident via Aikido's public disclosure | | 2026-05-14 | Compromised npm publish token revoked; BeProduct GitHub OAuth credentials rotated | | 2026-05-14 | Clean release `0.1.20` published; this advisory filed | ## Root cause The compromised npm publish token was harvested by a Mini-Shai-Hulud-infected transitive dependency in an automated GitHub coding-agent runtime that had read access to the `NPM_TOKEN` GitHub Actions secret for an unrelated repository under the same npm publisher account. The publish itself was performed by the attacker against the public npm registry; the source repository for this package was not modified by the attacker. ## References - https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised - https://www.aikido.dev/blog/checklist-github-actions ```

Source published
19 May 2026 20:28:07 UTC
Source modified
10 Sep 2026 03:50:45 UTC
Observed here
24 Oct 2026 13:17:17 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Publisher rating · CRITICAL

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 27 Oct 06:40 UTC · 268 of 272 readable · 267 fully read · documentation 468/469 current