# MAL-2026-12433: Malicious code in saas-f-lego-landings (npm)


- **Type:** Malicious package
- **Package:** `saas-f-lego-landings` (npm)
- **Published:** 5 Aug 2026

## What is MAL-2026-12433?

MAL-2026-12433 is a malicious package in saas-f-lego-landings, published on 5 Aug 2026. 

### Official description

saas-f-lego-landings@20.7.5 executes a native binary dropper as a side effect of loading the package. index.js unconditionally requires./_support.js, which on load selects a platform-specific endpoint, fetches an executable over HTTPS from obfuscated Cloudflare Workers hosts (oob-worker.cf10{0,1,2}-*.workers.dev) with a DNS TXT-record fallback to *.dl.well1.site, writes it to /tmp/.cache_* on Unix or %TEMP%/dotnet_diag_*.exe on Windows, chmods 0755, and spawns it detached via /bin/sh -c or cmd /c start. Destination hostnames are reconstructed at runtime via string-split.join() (e.g. ["oob","-worker.cf102-baf.workers.dev"].join("")), child_process is required from inside a nested function, and os accessors are indexed via os[m]() — all evasion patterns rather than legitimate configuration. The tarball also ships lib/telemetry.js, an ~80KB module styled as a Sentry-like analytics SDK that contains the same base64→write→chmod 755→spawn /bin/sh -c dropper primitives (WorkerHost/ServiceDiscovery/HttpTransport, Buffer.from(chunks,"base64"), fs["chmod"+"Sync"](path, mode | parseInt("755",8))); it is not referenced by index.js but corroborates the observability-SDK cover story. Deceptive filenames (dotnet_diag_*.exe,.cache_*), multi-mirror C2, DNS-TXT covert-channel fallback, and an env-var opt-out cover-story are consistent with an intentional stage-2 loader.

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

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-12433 is a malicious package: saas-f-lego-landings (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-12433/ (Markdown: https://insights.sbomify.com/MAL-2026-12433/index.md)
```

## Sources

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

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