# MAL-2026-10933: Malicious code in twilio-deploy (npm)


- **Type:** Malicious package
- **Package:** `twilio-deploy` (npm)
- **Published:** 20 Jul 2026

## What is MAL-2026-10933?

MAL-2026-10933 is a malicious package in twilio-deploy, published on 20 Jul 2026. 

### Official description

The twilio-deploy package is one of four byte-identical dependency-confusion squats of Twilio's npm namespace published by user 'yuva2210' (maintainer email charankumarj2004@gmail.com), all at the sentinel version 99.99.99 chosen to outrank any internal/private version and win resolution against a private registry. The npm description is empty and the package provides no legitimate functionality; the name mimics a plausible internal Twilio package so that a misconfigured resolver installs this public lookalike instead of the intended private dependency.

The package declares a postinstall hook ("node index.js") that executes automatically on a bare npm install with no consent gate. The bundled index.js payload (1,185 bytes, sha256 prefix c324d579006df4c5, identical across all four packages) performs environment reconnaissance: it collects the npm package name and version, os.hostname(), the OS username (os.userInfo().username), the home directory path (os.homedir()), the current working directory, os.platform(), os.arch(), NODE_ENV, and the CI flag. It serializes this to JSON and exfiltrates it via HTTPS POST to a hardcoded anonymous dead-drop at https://webhook.site/42ce0f0e-a0a0-41b5-b157-1c0f918e064f (the same collector UUID across all four packages). On request error the payload falls back to a redundant out-of-band callback to 2b22ede784d5.oast.fun over HTTP, ensuring the beacon lands even where HTTPS egress to webhook.site is blocked; errors on that path are swallowed.

The collected cwd/homedir/username/CI/NODE_ENV set is reconnaissance targeting internal build environments and their filesystem layout. All four packages (twilio-serverless, twilio-assets, twilio-deploy, twilio-internal) were published by the same maintainer with an identical payload and the same collector endpoint.

Package name typosquats 'twilio' and is published at version 99.99.99, the classic dependency-confusion shape used to intercept internal-package resolution. On npm install, the declared postinstall hook runs index.js, which collects host and user identifiers (os.hostname(), os.userInfo().username, os.homedir(), cwd, os.platform(), os.arch(), npm_package_name, npm_package_version, NODE_ENV, and CI environment variables) and POSTs them as JSON to a hardcoded https://webhook.site/42ce0f0e-a0a0-41b5-b157-1c0f918e064f collector, with a fallback GET to 2b22ede784d5.oast.fun as an out-of-band callback. The destination is not configured by the installer and is unrelated to the Twilio publisher; the effect is automatic reconnaissance beacon on any machine that installs the package.

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

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-10933 is a malicious package: twilio-deploy (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-10933/ (Markdown: https://insights.sbomify.com/MAL-2026-10933/index.md)
```

## Sources

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

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