@saltcorn/plugins-loader
Saltcorn plugin loader
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): Passing process.env to a child npm install process is standard; no exfiltration path. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): Plugin loader legitimately uses child_process to run npm install; expected for this package. | ai | |
| semgrep | semgrep:dynamic-require | AI (semgrep): Dynamic require is the core mechanism for loading installed plugins; stable pattern for this package. | ai |
Versions (showing 18 of 18)
| Version | Deps | Published |
|---|---|---|
| 1.5.7 | 4 / 0 | |
| 1.5.6 | 4 / 0 | |
| 1.5.5 | 4 / 0 | |
| 1.5.4 | 4 / 0 | |
| 1.5.3 | 4 / 0 | |
| 1.5.2 | 4 / 0 | |
| 1.5.1 | 4 / 0 | |
| 1.5.0 | 4 / 0 | |
| 1.4.6 | 4 / 0 | |
| 1.4.5 | 4 / 0 | |
| 1.4.4 | 4 / 0 | |
| 1.4.3 | 4 / 0 | |
| 1.4.2 | 4 / 0 | |
| 1.4.1 | 4 / 0 | |
| 1.4.0 | 4 / 0 | |
| 1.3.1 | 4 / 0 | |
| 1.3.0 | 4 / 0 | |
| 1.2.0 | 4 / 0 |
v1.5.7
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/67bc65255f14e15c3d5c543b6bdb41eea52c76ad/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.6
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/f9d5efcf835f47d4cc29943a374e05b2350b0a10/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.5
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/8d017eecbb1413b051e4b5bdb0cca36bf5f57364/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.4
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/df70c1150e9ad993ac98e9c32909648e5565e13f/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.3
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/6ad7246ffc90f6043f7d53c7a83e8d301dae71bb/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.2
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/4be74dac2a3f1c3decac87441b10f59e416180ef/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.1
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/4be74dac2a3f1c3decac87441b10f59e416180ef/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.5.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/785b3bf06227a077b9d0880744e5da5bea4cd5c1/plugin_installer.js#L336 334 | const child = spawn("npm", ["install"], { 335 | cwd: this.tempDir, > 336 | env: { ...process.env, ...this.envVars }, 337 | ...(isWindows ? { shell: true } : {}), 338 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.6
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/e2477a8b2acedbc019e1f98eba8d2fdfc57a052d/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.5
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/7c945ca00b95cfe6ba65c5551e4509c220d64791/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.4
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/4df1b89077e701322c4e48f54034c9069db76617/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.3
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/2852a9f2e1b9d3d12cbe98ed2e1c4aec055bc918/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.2
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/0285606e60be79b7f499282fc90379ea4cceacca/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.1
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/b0cfaf62d001b152ff771466d37d14c26e969a9a/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.4.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/3105ec1b231bf37cd152f491375cfcc61ad74676/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.3.1
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/a0048b84fce32fc35fc66ae9271de91410376c98/plugin_installer.js#L316 314 | const child = spawn("npm", ["install"], { 315 | cwd: this.tempDir, > 316 | env: { ...process.env, ...this.envVars }, 317 | ...(isWindows ? { shell: true } : {}), 318 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.3.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/4c4594fc57e358519cd304fca6ccd1d7e2d1b04d/plugin_installer.js#L311 309 | const child = spawn("npm", ["install"], { 310 | cwd: this.tempDir, > 311 | env: { ...process.env, ...this.envVars }, 312 | ...(isWindows ? { shell: true } : {}), 313 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.2.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/saltcorn/saltcorn/blob/ec4cf8eec0e79c5a76f8b3e63b4c81e5c0263996/plugin_installer.js#L311 309 | const child = spawn("npm", ["install"], { 310 | cwd: this.tempDir, > 311 | env: { ...process.env, ...this.envVars }, 312 | ...(isWindows ? { shell: true } : {}), 313 | });
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.