@yinuo-ngm/process
Process execution and port management helpers for Yinuo NG Manager
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): Standard subprocess launcher pattern; spreading process.env is expected for a process execution helper. | ai | |
| semgrep | semgrep:silent-process-exec | AI (semgrep): spawnDetached is an explicit public API for background process management, not a hidden backdoor. | ai | |
| semgrep | semgrep:silent-process-exec-var | AI (semgrep): Same spawnDetached API; stable false positive for this process-management utility. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): child_process is required for kill-port functionality; expected in a process/port management library. | ai |
v0.1.3
6 findingsSpreading entire process.env into an object — may capture all secrets 8 | const spawnOpts = { 9 | cwd: opts.cwd, > 10 | env: { ...process.env, ...(opts.env || {}) }, 11 | shell: opts.shell ?? false, 12 | detached: !!opts.detached,
Silent detached process — runs invisibly in the background (reverse shells, miners) 23 | } 24 | async spawnDetached(command, args, opts) { > 25 | await this.spawn(command, args, { 26 | ...opts, 27 | detached: true,
Silent detached process — runs invisibly in the background (reverse shells, miners) 23 | } 24 | async spawnDetached(command, args, opts) { > 25 | await this.spawn(command, args, { 26 | ...opts, 27 | detached: true,
Spreading entire process.env into an object — may capture all secrets 39 | const windows_1 = require("./constants/windows"); 40 | function mergeEnv(env) { > 41 | return { ...process.env, ...(env || {}) }; 42 | } 43 | function quoteWin(arg) {
Spreading entire process.env into an object — may capture all secrets 17 | const child = (0, silent_spawn_1.silentSpawn)(options.command, args, { 18 | cwd: options.cwd, > 19 | env: { 20 | ...process.env, 21 | ...options.env,
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.1
5 findingsSpreading entire process.env into an object — may capture all secrets 7 | const child = (0, child_process_1.spawn)(command, args, { 8 | cwd: opts.cwd, > 9 | env: { ...process.env, ...(opts.env || {}) }, 10 | shell: opts.shell ?? false, 11 | windowsHide: true,
Silent detached process — runs invisibly in the background (reverse shells, miners) 23 | } 24 | async spawnDetached(command, args, opts) { > 25 | await this.spawn(command, args, { 26 | ...opts, 27 | detached: true,
Silent detached process — runs invisibly in the background (reverse shells, miners) 23 | } 24 | async spawnDetached(command, args, opts) { > 25 | await this.spawn(command, args, { 26 | ...opts, 27 | detached: true,
Spreading entire process.env into an object — may capture all secrets 37 | const pty = __importStar(require("node-pty")); 38 | function mergeEnv(env) { > 39 | return { ...process.env, ...(env || {}) }; 40 | } 41 | function quoteWin(arg) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.