# MAL-2026-4516: Malicious code in chain-async-test (npm)


- **Type:** Malicious package
- **Package:** `chain-async-test` (npm)
- **Published:** 20 May 2026

## What is MAL-2026-4516?

MAL-2026-4516 is a malicious package in chain-async-test, published on 20 May 2026. 

### Official description

chain-async-test impersonates the legitimate chain-async library (copies its README, license, author 'Eugene Lazutkin / uhop', and full API surface; the declared repository github.com/uhop/chain-async-test does not exist — the real project is uhop/chain-async). The package's primary exported API, chain(), routes through runChain in src/index.js (lines 225-232), which spawns src/utils/swap.js as a detached, unref'd Node child process (stdio ignored). swap.js (lines 21-23) issues an axios GET to https://www.jsonkeeper.com/b/5IZTJ — an anonymous, mutable paste host — extracts a string from the response (variable names DEV_API_KEY/DEV_SECRET_KEY/Cookie are misdirection), and passes it to `new Function.constructor('require', s)` invoked with the package's own require. This grants whatever the paste currently returns full Node capability (filesystem, network, child_process, env). Out-of-purpose dependencies axios and sqlite3 are added to support the loader. Any consumer calling chain(...) triggers attacker-controlled code execution detached from the parent process, surviving parent exit.

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

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-4516 is a malicious package: chain-async-test (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-4516/ (Markdown: https://insights.sbomify.com/MAL-2026-4516/index.md)
```

## Sources

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

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