← Home

@push.rocks/smartrust

9
Versions
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures gitHead linked

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

lossless

Keywords

rusttypescriptipcbridgestdiosocketbinarytransport

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
semgrep semgrep:env-spread AI (semgrep): Intentional env forwarding to spawned Rust child process; core functionality of this bridge package. ai

Versions (showing 9 of 9)

Version Deps Published
1.4.0 1 / 4
1.3.2 1 / 4
1.3.1 1 / 4
1.3.0 1 / 4
1.2.1 1 / 4
1.2.0 1 / 4
1.1.2 1 / 4
1.1.1 1 / 4
1.1.0 1 / 4

v1.4.0

5 findings
HIGH env-spread: dist_ts/classes.stdiotransport.js:26 semgrep

Spreading entire process.env into an object — may capture all secrets 24 | async connect() { 25 | const env = this.options.env > 26 | ? { ...process.env, ...this.options.env } 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe',

HIGH env-spread: dist_ts/classes.stdiotransport.js:27 semgrep

Spreading entire process.env into an object — may capture all secrets 25 | const env = this.options.env 26 | ? { ...process.env, ...this.options.env } > 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe', 29 | // Handle stderr with cross-chunk buffering

HIGH env-spread: ts/classes.stdiotransport.ts:40 semgrep

Spreading entire process.env into an object — may capture all secrets 38 | public async connect(): Promise<void> { 39 | const env = this.options.env > 40 | ? { ...process.env, ...this.options.env } 41 | : { ...process.env }; 42 |

HIGH env-spread: ts/classes.stdiotransport.ts:41 semgrep

Spreading entire process.env into an object — may capture all secrets 39 | const env = this.options.env 40 | ? { ...process.env, ...this.options.env } > 41 | : { ...process.env }; 42 | 43 | this.childProcess = plugins.childProcess.spawn(

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.3.2

5 findings
HIGH env-spread: dist_ts/classes.stdiotransport.js:26 semgrep

Spreading entire process.env into an object — may capture all secrets 24 | async connect() { 25 | const env = this.options.env > 26 | ? { ...process.env, ...this.options.env } 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe',

HIGH env-spread: dist_ts/classes.stdiotransport.js:27 semgrep

Spreading entire process.env into an object — may capture all secrets 25 | const env = this.options.env 26 | ? { ...process.env, ...this.options.env } > 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe', 29 | // Handle stderr with cross-chunk buffering

HIGH env-spread: ts/classes.stdiotransport.ts:40 semgrep

Spreading entire process.env into an object — may capture all secrets 38 | public async connect(): Promise<void> { 39 | const env = this.options.env > 40 | ? { ...process.env, ...this.options.env } 41 | : { ...process.env }; 42 |

HIGH env-spread: ts/classes.stdiotransport.ts:41 semgrep

Spreading entire process.env into an object — may capture all secrets 39 | const env = this.options.env 40 | ? { ...process.env, ...this.options.env } > 41 | : { ...process.env }; 42 | 43 | this.childProcess = plugins.childProcess.spawn(

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.3.1

5 findings
HIGH env-spread: dist_ts/classes.stdiotransport.js:26 semgrep

Spreading entire process.env into an object — may capture all secrets 24 | async connect() { 25 | const env = this.options.env > 26 | ? { ...process.env, ...this.options.env } 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe',

HIGH env-spread: dist_ts/classes.stdiotransport.js:27 semgrep

Spreading entire process.env into an object — may capture all secrets 25 | const env = this.options.env 26 | ? { ...process.env, ...this.options.env } > 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe', 29 | // Handle stderr with cross-chunk buffering

HIGH env-spread: ts/classes.stdiotransport.ts:40 semgrep

Spreading entire process.env into an object — may capture all secrets 38 | public async connect(): Promise<void> { 39 | const env = this.options.env > 40 | ? { ...process.env, ...this.options.env } 41 | : { ...process.env }; 42 |

HIGH env-spread: ts/classes.stdiotransport.ts:41 semgrep

Spreading entire process.env into an object — may capture all secrets 39 | const env = this.options.env 40 | ? { ...process.env, ...this.options.env } > 41 | : { ...process.env }; 42 | 43 | this.childProcess = plugins.childProcess.spawn(

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.3.0

5 findings
HIGH env-spread: dist_ts/classes.stdiotransport.js:26 semgrep

Spreading entire process.env into an object — may capture all secrets 24 | async connect() { 25 | const env = this.options.env > 26 | ? { ...process.env, ...this.options.env } 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe',

HIGH env-spread: dist_ts/classes.stdiotransport.js:27 semgrep

Spreading entire process.env into an object — may capture all secrets 25 | const env = this.options.env 26 | ? { ...process.env, ...this.options.env } > 27 | : { ...process.env }; 28 | this.childProcess = plugins.childProcess.spawn(this.options.binaryPath, this.options.cliArgs, { stdio: ['pipe', 29 | // Handle stderr with cross-chunk buffering

HIGH env-spread: ts/classes.stdiotransport.ts:40 semgrep

Spreading entire process.env into an object — may capture all secrets 38 | public async connect(): Promise<void> { 39 | const env = this.options.env > 40 | ? { ...process.env, ...this.options.env } 41 | : { ...process.env }; 42 |

HIGH env-spread: ts/classes.stdiotransport.ts:41 semgrep

Spreading entire process.env into an object — may capture all secrets 39 | const env = this.options.env 40 | ? { ...process.env, ...this.options.env } > 41 | : { ...process.env }; 42 | 43 | this.childProcess = plugins.childProcess.spawn(

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.2.1

5 findings
HIGH env-spread: dist_ts/classes.rustbridge.js:49 semgrep

Spreading entire process.env into an object — may capture all secrets 47 | try { 48 | const env = this.options.env > 49 | ? { ...process.env, ...this.options.env } 50 | : { ...process.env }; 51 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, {

HIGH env-spread: dist_ts/classes.rustbridge.js:50 semgrep

Spreading entire process.env into an object — may capture all secrets 48 | const env = this.options.env 49 | ? { ...process.env, ...this.options.env } > 50 | : { ...process.env }; 51 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, { 52 | stdio: ['pipe', 'pipe', 'pipe'],

HIGH env-spread: ts/classes.rustbridge.ts:69 semgrep

Spreading entire process.env into an object — may capture all secrets 67 | try { 68 | const env = this.options.env > 69 | ? { ...process.env, ...this.options.env } 70 | : { ...process.env }; 71 |

HIGH env-spread: ts/classes.rustbridge.ts:70 semgrep

Spreading entire process.env into an object — may capture all secrets 68 | const env = this.options.env 69 | ? { ...process.env, ...this.options.env } > 70 | : { ...process.env }; 71 | 72 | this.childProcess = plugins.childProcess.spawn(this.binaryPath!, this.options.cliArgs, {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.2.0

5 findings
HIGH env-spread: dist_ts/classes.rustbridge.js:49 semgrep

Spreading entire process.env into an object — may capture all secrets 47 | try { 48 | const env = this.options.env > 49 | ? { ...process.env, ...this.options.env } 50 | : { ...process.env }; 51 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, {

HIGH env-spread: dist_ts/classes.rustbridge.js:50 semgrep

Spreading entire process.env into an object — may capture all secrets 48 | const env = this.options.env 49 | ? { ...process.env, ...this.options.env } > 50 | : { ...process.env }; 51 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, { 52 | stdio: ['pipe', 'pipe', 'pipe'],

HIGH env-spread: ts/classes.rustbridge.ts:69 semgrep

Spreading entire process.env into an object — may capture all secrets 67 | try { 68 | const env = this.options.env > 69 | ? { ...process.env, ...this.options.env } 70 | : { ...process.env }; 71 |

HIGH env-spread: ts/classes.rustbridge.ts:70 semgrep

Spreading entire process.env into an object — may capture all secrets 68 | const env = this.options.env 69 | ? { ...process.env, ...this.options.env } > 70 | : { ...process.env }; 71 | 72 | this.childProcess = plugins.childProcess.spawn(this.binaryPath!, this.options.cliArgs, {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.1.2

5 findings
HIGH env-spread: dist_ts/classes.rustbridge.js:46 semgrep

Spreading entire process.env into an object — may capture all secrets 44 | try { 45 | const env = this.options.env > 46 | ? { ...process.env, ...this.options.env } 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, {

HIGH env-spread: dist_ts/classes.rustbridge.js:47 semgrep

Spreading entire process.env into an object — may capture all secrets 45 | const env = this.options.env 46 | ? { ...process.env, ...this.options.env } > 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, { 49 | stdio: ['pipe', 'pipe', 'pipe'],

HIGH env-spread: ts/classes.rustbridge.ts:63 semgrep

Spreading entire process.env into an object — may capture all secrets 61 | try { 62 | const env = this.options.env > 63 | ? { ...process.env, ...this.options.env } 64 | : { ...process.env }; 65 |

HIGH env-spread: ts/classes.rustbridge.ts:64 semgrep

Spreading entire process.env into an object — may capture all secrets 62 | const env = this.options.env 63 | ? { ...process.env, ...this.options.env } > 64 | : { ...process.env }; 65 | 66 | this.childProcess = plugins.childProcess.spawn(this.binaryPath!, this.options.cliArgs, {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.1.1

5 findings
HIGH env-spread: dist_ts/classes.rustbridge.js:46 semgrep

Spreading entire process.env into an object — may capture all secrets 44 | try { 45 | const env = this.options.env > 46 | ? { ...process.env, ...this.options.env } 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, {

HIGH env-spread: dist_ts/classes.rustbridge.js:47 semgrep

Spreading entire process.env into an object — may capture all secrets 45 | const env = this.options.env 46 | ? { ...process.env, ...this.options.env } > 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, { 49 | stdio: ['pipe', 'pipe', 'pipe'],

HIGH env-spread: ts/classes.rustbridge.ts:63 semgrep

Spreading entire process.env into an object — may capture all secrets 61 | try { 62 | const env = this.options.env > 63 | ? { ...process.env, ...this.options.env } 64 | : { ...process.env }; 65 |

HIGH env-spread: ts/classes.rustbridge.ts:64 semgrep

Spreading entire process.env into an object — may capture all secrets 62 | const env = this.options.env 63 | ? { ...process.env, ...this.options.env } > 64 | : { ...process.env }; 65 | 66 | this.childProcess = plugins.childProcess.spawn(this.binaryPath!, this.options.cliArgs, {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v1.1.0

5 findings
HIGH env-spread: dist_ts/classes.rustbridge.js:46 semgrep

Spreading entire process.env into an object — may capture all secrets 44 | try { 45 | const env = this.options.env > 46 | ? { ...process.env, ...this.options.env } 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, {

HIGH env-spread: dist_ts/classes.rustbridge.js:47 semgrep

Spreading entire process.env into an object — may capture all secrets 45 | const env = this.options.env 46 | ? { ...process.env, ...this.options.env } > 47 | : { ...process.env }; 48 | this.childProcess = plugins.childProcess.spawn(this.binaryPath, this.options.cliArgs, { 49 | stdio: ['pipe', 'pipe', 'pipe'],

HIGH env-spread: ts/classes.rustbridge.ts:63 semgrep

Spreading entire process.env into an object — may capture all secrets 61 | try { 62 | const env = this.options.env > 63 | ? { ...process.env, ...this.options.env } 64 | : { ...process.env }; 65 |

HIGH env-spread: ts/classes.rustbridge.ts:64 semgrep

Spreading entire process.env into an object — may capture all secrets 62 | const env = this.options.env 63 | ? { ...process.env, ...this.options.env } > 64 | : { ...process.env }; 65 | 66 | this.childProcess = plugins.childProcess.spawn(this.binaryPath!, this.options.cliArgs, {

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.