@push.rocks/smartrust
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
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| 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 findingsSpreading 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',
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
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 |
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(
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.3.2
5 findingsSpreading 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',
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
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 |
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(
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.3.1
5 findingsSpreading 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',
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
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 |
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(
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.3.0
5 findingsSpreading 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',
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
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 |
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(
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.2.1
5 findingsSpreading 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, {
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'],
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 |
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, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.2.0
5 findingsSpreading 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, {
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'],
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 |
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, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.1.2
5 findingsSpreading 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, {
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'],
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 |
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, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.1.1
5 findingsSpreading 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, {
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'],
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 |
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, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.1.0
5 findingsSpreading 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, {
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'],
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 |
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, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.