# MAL-2026-3125: Malicious code in transform-regexp-constructors (npm)


- **Type:** Malicious package
- **Package:** `transform-regexp-constructors` (npm)
- **Published:** 16 Mar 2026

## What is MAL-2026-3125?

MAL-2026-3125 is a malicious package in transform-regexp-constructors, published on 16 Mar 2026. 

### Official description

The package 'transform-regexp-constructors' is part of the PhantomRaven supply chain attack campaign (Wave 3). It uses a Remote Dynamic Dependency (RDD) technique: the published package appears benign but includes a URL-based dependency in package.json pointing to an attacker-controlled C2 server (package.storeartifacts.com). During npm install, npm automatically fetches a malicious tarball from the C2. The tarball preinstall hook executes a 259-line payload that harvests developer emails from .gitconfig, .npmrc, and environment variables; collects CI/CD tokens from GitHub Actions, GitLab CI, Jenkins, and CircleCI; fingerprints the host system; and exfiltrates all data to http://package.storeartifacts.com/npm.php via redundant HTTP GET, POST, and WebSocket channels with no visible terminal output. The campaign was first disclosed by Koi Security in October 2025 (Wave 1) and extended across Waves 2-4 between November 2025 and February 2026. Full analysis: https://www.endorlabs.com/learn/return-of-phantomraven

Any developer or CI/CD system that installed this package should be considered compromised. All secrets, tokens, and credentials accessible from that environment should be rotated immediately from a separate, unaffected machine.

The package transform-regexp-constructors was found to contain malicious code.

## What should I do about MAL-2026-3125?

Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.

## Fix prompt for AI coding agents

```text
MAL-2026-3125 is a malicious package: transform-regexp-constructors (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-3125/ (Markdown: https://insights.sbomify.com/MAL-2026-3125/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/MAL-2026-3125

---
From sbomify Insights: https://insights.sbomify.com/MAL-2026-3125/
Summaries are generated and may contain mistakes; the official description above is the record.
