@kernlang/review-mcp
MCP server security scanner — static analysis for Model Context Protocol implementations
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): Security scanner spawning subprocesses with merged env is expected; not exfiltration. | ai | |
| semgrep | semgrep:base64-decode | AI (semgrep): Used only for input validation (printable-ASCII check), not payload decoding. Stable pattern for this security-scanner package. | ai |
Versions (showing 36 of 36)
| Version | Deps | Published |
|---|---|---|
| 3.5.8 | 3 / 0 | |
| 3.5.7 | 3 / 0 | |
| 3.5.6 | 3 / 0 | |
| 3.5.5 | 3 / 0 | |
| 3.5.4 | 3 / 0 | |
| 3.5.3 | 3 / 0 | |
| 3.5.2 | 3 / 0 | |
| 3.5.1 | 3 / 0 | |
| 3.5.0 | 3 / 0 | |
| 3.4.9 | 3 / 0 | |
| 3.4.8 | 3 / 0 | |
| 3.4.7 | 3 / 0 | |
| 3.4.6 | 3 / 0 | |
| 3.4.5 | 3 / 0 | |
| 3.4.4 | 3 / 0 | |
| 3.4.3 | 3 / 0 | |
| 3.4.2 | 3 / 0 | |
| 3.4.1 | 3 / 0 | |
| 3.4.0 | 3 / 0 | |
| 3.3.9 | 3 / 0 | |
| 3.3.8 | 3 / 0 | |
| 3.3.7 | 3 / 0 | |
| 3.3.6 | 3 / 0 | |
| 3.3.5 | 3 / 0 | |
| 3.3.4 | 3 / 0 | |
| 3.2.3 | 3 / 0 | |
| 3.1.9 | 3 / 0 | |
| 3.1.8 | 3 / 0 | |
| 3.1.7 | 3 / 0 | |
| 3.1.6 | 3 / 0 | |
| 3.1.5 | 3 / 0 | |
| 3.1.4 | 3 / 0 | |
| 3.1.3 | 3 / 0 | |
| 3.1.2 | 3 / 0 | |
| 3.1.1 | 3 / 0 | |
| 3.1.0 | 3 / 0 |
v3.5.8
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.7
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.6
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.5
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.4
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.3
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.2
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.1
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.5.0
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.9
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.8
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.7
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.6
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.5
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.4
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.3
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.2
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.1
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.0
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.9
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.8
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.7
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.6
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.5
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.4
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.2.3
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.9
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.8
2 findingsSpreading entire process.env into an object — may capture all secrets 311 | child = spawn(command, args, { 312 | stdio: ['pipe', 'pipe', 'pipe'], > 313 | env: { ...process.env, ...env }, 314 | timeout, 315 | });
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.7
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.6
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.5
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.4
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.3
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v3.1.2
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.1.1
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v3.1.0
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.