OSV Malicious Advisory
scanned 1d ago · by OpenSSF/OSVOpenSSF/OSV advisory MAL-2026-10065 confirms this npm version as malicious. Package is published as `nodemon-gulp` but its contents are a verbatim copy of the upstream `nodemon` project: `package.json` declares `author: Remy Sharp`, `homepage: https://nodemon.io`, and `bin: { "nodemon": "./bin/nodemon.js" }`, so installing this package places a `nodemon` shim on the user's PATH supplied by an unrelated publisher. `package.json` also declares `"ts-webplug": "3.0.5"` as a runtime dependency,...
Advisory
MAL-2026-10065
Source
OpenSSF Malicious Packages via OSV
Summary
Malicious code in nodemon-gulp (npm)
Details
Package is published as `nodemon-gulp` but its contents are a verbatim copy of the upstream `nodemon` project: `package.json` declares `author: Remy Sharp`, `homepage: https://nodemon.io`, and `bin: { "nodemon": "./bin/nodemon.js" }`, so installing this package places a `nodemon` shim on the user's PATH supplied by an unrelated publisher. `package.json` also declares `"ts-webplug": "3.0.5"` as a runtime dependency, yet no file under lib/ or bin/ ever `require()`s `ts-webplug`. The only effect of declaring this dep is to silently pull `ts-webplug` into the installer's dependency tree on `npm install`, where its lifecycle and import-time code can execute. This is the canonical namespace-abuse + typosquat-loader shape: a clone of a well-known package, republished under a confusable name, used as a vehicle to deliver an otherwise-unjustified third-party dependency to anyone who installs it.
## Source: ghsa-malware (bf7d5e881aed308912128dc41892a1e12dbedfd29ced5195ff2078be80dc6302) Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.
Decision reason
No blocking static signals were detected.
Decision evidence
public snapshotBehavioral surface
ChildProcessDynamicRequireEnvironmentVarsFilesystemShell
UrlStrings
Source & flagged code
2 flagged · loading sourcebin/nodemon.jsView file
2L3: const cli = require('../lib/cli');
L4: const nodemon = require('../lib/');
Medium
Dynamic Require
Package source references dynamic require/import behavior.
bin/nodemon.jsView on unpkg · L2bin/windows-kill.exeView file
•path = bin/windows-kill.exe
kind = native_binary
sizeBytes = 80384
magicHex = [redacted]
Medium
Findings
4 Medium3 Low
MediumDynamic Requirebin/nodemon.js
MediumEnvironment Vars
MediumShips Native Binarybin/windows-kill.exe
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowUrl Strings