# MAL-2026-6140: Malicious code in @httpactions/strict-uri-encode (npm)


- **Type:** Malicious package
- **Package:** `@httpactions/strict-uri-encode` (npm)
- **Published:** 18 Jun 2026

## What is MAL-2026-6140?

MAL-2026-6140 is a malicious package in @httpactions/strict-uri-encode, published on 18 Jun 2026. 

### Official description

@httpactions/strict-uri-encode impersonates the popular unscoped npm package 'strict-uri-encode' (~30M weekly downloads) by republishing the same name under a lookalike scope. The package ships no URI-encoding functionality; index.js is a heavily obfuscated dropper (obfuscator.io-style 110-entry rotating string array, base64-decoded module names for 'https', 'child_process', 'writeFileSync', 'exec', 'spawn', 'hostname', 'username') that executes immediately on require() and again every ~10 minutes via setInterval. The dropper assembles a hardcoded IP-based URL from base64 fragments (e.g. 'MC44Ni4x' → '0.86.117.x'), HTTPS-GETs a remote payload, writes it to disk via fs.writeFileSync, and executes it via child_process.exec/spawn — yielding arbitrary remote code execution on any machine that requires the module. In parallel, bt() POSTs {ts, type, hid, ss, cc} containing os.hostname() and os.userInfo().username to the same hardcoded IP, exfiltrating installer host identity unconditionally on import and on the 10-minute timer. Combination of typosquatted name, zero legitimate functionality, heavy obfuscation, hardcoded IP C2, host-identity exfiltration, and require-time fetch-and-execute is an unambiguous supply-chain attack.

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

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-6140 is a malicious package: @httpactions/strict-uri-encode (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-6140/ (Markdown: https://insights.sbomify.com/MAL-2026-6140/index.md)
```

## Sources

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

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