OpenSSF/OSV advisory MAL-2026-14289 confirms this npm version as malicious. dist/index.js appends a heavily obfuscated obfuscator.io-style payload (string array _0x240a of length 303, decoder _0x4963, string-array rotation) after the clean TypeScript-compiled validation code. None of this obfuscated code is declared in dist/index.d.ts and it executes at top level on `import '@wizloft/harness-validation'`. Decoded string fragments include Ethereum RPC / block-explorer hostnames...
Source
OpenSSF Malicious Packages via OSV
Summary
Malicious code in @wizloft/harness-validation (npm)
Details
dist/index.js appends a heavily obfuscated obfuscator.io-style payload (string array _0x240a of length 303, decoder _0x4963, string-array rotation) after the clean TypeScript-compiled validation code. None of this obfuscated code is declared in dist/index.d.ts and it executes at top level on `import '@wizloft/harness-validation'`. Decoded string fragments include Ethereum RPC / block-explorer hostnames (`h.drpc.org`, `pc.io/eth`, `stapi.io`), a hardcoded attacker Ethereum address (`0xa322E5f3...`), Etherscan-style query parameters (`?module=account`, `filterby=from`), a spoofed browser User-Agent, and `application/json` / `content-encoding` request framing. The payload queries the block explorer for transactions from the hardcoded wallet, extracts a URL/payload from the transaction data, then fetches and executes the resolved content — a blockchain-based dead-drop that lets the publisher rotate the delivered code by posting a new transaction from that wallet, giving them a persistent mutable remote-code channel against every process that imports the library. Sibling packages in the @wizloft/* namespace (@wizloft/harness-evidence, @wizloft/harness-kernel) are declared dependencies at matching alpha versions and exhibit the same trojanized-library shape.
Decision reason
OpenSSF Malicious Packages via OSV confirms @wizloft/harness-validation@0.1.1-alpha.3 as malicious (MAL-2026-14289): Malicious code in @wizloft/harness-validation (npm)