OpenSSF/OSV advisory MAL-2026-12410 confirms this npm version as malicious. On require of the package, index.js unconditionally loads _shim.js, which selects a payload path based on process.platform/arch (linux_x64, linux_arm64, darwin, win32) and downloads an opaque binary from one of four hardcoded Cloudflare Workers hosts (oob-worker.cf99-9b3.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf101-adf.workers.dev, oob-worker.cf102-baf.workers.dev)...
Source
OpenSSF Malicious Packages via OSV
Summary
Malicious code in pfp-block-mobile-steps (npm)
Details
On require of the package, index.js unconditionally loads _shim.js, which selects a payload path based on process.platform/arch (linux_x64, linux_arm64, darwin, win32) and downloads an opaque binary from one of four hardcoded Cloudflare Workers hosts (oob-worker.cf99-9b3.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf101-adf.workers.dev, oob-worker.cf102-baf.workers.dev). Endpoint hostnames are assembled at runtime from string fragments joined together to defeat static analysis. If HTTPS retrieval fails, a fallback path uses DNS TXT record lookups against *.dl.well1.site (reading a chunk count from c.<domain> then reassembling base64 payload from numbered TXT records) to deliver the same executable out-of-band. The fetched bytes are written to a temp path under a stealth filename (dotnet_diag_*.exe,.cache_*), chmod 0755 on Unix, and spawned detached via /bin/sh -c or cmd /c start /b with stderr silenced. No hash or signature verification is performed, and no build/runtime purpose in a 'platform adapter' package requires this. A run-once flag file and opt-out environment variables gate re-execution, consistent with anti-analysis behavior.
Decision reason
OpenSSF Malicious Packages via OSV confirms pfp-block-mobile-steps@20.9.3 as malicious (MAL-2026-12410): Malicious code in pfp-block-mobile-steps (npm)