@google/chrome-enterprise-premium-mcp
Chrome Enterprise Premium MCP server
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:silent-process-exec | AI (semgrep): Detached spawn used to open browser for OAuth flow; not a reverse shell or miner. | ai | |
| semgrep | semgrep:silent-process-exec-var | AI (semgrep): Same OAuth browser-open pattern; stable false positive for this package. | ai | |
| semgrep | semgrep:shady-links-raw-ip | AI (semgrep): Raw IP is 127.0.0.1 loopback for OAuth redirect server; legitimate and expected. | ai | |
| semgrep | semgrep:env-spread | AI (semgrep): Spreading process.env into a child process spawn is standard for MCP server launchers; not exfiltration. | ai | |
| phantom-deps | phantom-dep:@google-cloud/service-usage | AI (phantom-deps): Framework-scoped dependency loaded by convention; stable false positive for this package. | ai |
Versions (showing 12 of 12)
| Version | Deps | Published |
|---|---|---|
| 1.9.0 | 10 / 17 | |
| 1.8.0 | 10 / 17 | |
| 1.7.0 | 10 / 16 | |
| 1.6.0 | 9 / 16 | |
| 1.5.0 | 9 / 16 | |
| 1.4.0 | 9 / 16 | |
| 1.1.0 | 8 / 14 | |
| 0.1.5 | 9 / 17 | |
| 0.1.4 | 9 / 17 | |
| 0.1.2 | 8 / 18 | |
| 0.1.1 | 8 / 18 | |
| 0.1.0 | 8 / 17 |
v1.9.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.8.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.7.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.6.0
3 findingsSilent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/b47e5d788bbbd23034a44ddb048b28eb740fac35/lib/util/credential/oauth_flow.js#L51 49 | } 50 | return new Promise(resolve => { > 51 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 52 | child.on('error', () => resolve(false)) 53 | child.on('exit', code => resolve(code === 0))
Silent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/b47e5d788bbbd23034a44ddb048b28eb740fac35/lib/util/credential/oauth_flow.js#L51 49 | } 50 | return new Promise(resolve => { > 51 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 52 | child.on('error', () => resolve(false)) 53 | child.on('exit', code => resolve(code === 0))
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.5.0
3 findingsSilent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/4137cb989cac09bb7f786d931b7cad1f312378fa/lib/util/credential/oauth_flow.js#L51 49 | } 50 | return new Promise(resolve => { > 51 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 52 | child.on('error', () => resolve(false)) 53 | child.on('exit', code => resolve(code === 0))
Silent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/4137cb989cac09bb7f786d931b7cad1f312378fa/lib/util/credential/oauth_flow.js#L51 49 | } 50 | return new Promise(resolve => { > 51 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 52 | child.on('error', () => resolve(false)) 53 | child.on('exit', code => resolve(code === 0))
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.4.0
3 findingsSilent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/649e03b35c00903f77507752d2fd0df6d0b1a50b/lib/util/credential/oauth_flow.js#L56 54 | } 55 | return new Promise(resolve => { > 56 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 57 | child.on('error', () => resolve(false)) 58 | child.on('exit', code => resolve(code === 0))
Silent detached process — runs invisibly in the background (reverse shells, miners) Source: https://github.com/google/chrome-enterprise-premium-mcp/blob/649e03b35c00903f77507752d2fd0df6d0b1a50b/lib/util/credential/oauth_flow.js#L56 54 | } 55 | return new Promise(resolve => { > 56 | const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) 57 | child.on('error', () => resolve(false)) 58 | child.on('exit', code => resolve(code === 0))
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.1.5
2 findingsSpreading entire process.env into an object — may capture all secrets 38 | command: 'node', 39 | args: [MCP_SERVER_PATH], > 40 | env: { ...process.env, GCP_STDIO: 'true' }, 41 | cwd: PROJECT_ROOT, 42 | })
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.4
2 findingsSpreading entire process.env into an object — may capture all secrets 38 | command: 'node', 39 | args: [MCP_SERVER_PATH], > 40 | env: { ...process.env, GCP_STDIO: 'true' }, 41 | cwd: PROJECT_ROOT, 42 | })
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.2
2 findingsSpreading entire process.env into an object — may capture all secrets 38 | command: 'node', 39 | args: [MCP_SERVER_PATH], > 40 | env: { ...process.env, GCP_STDIO: 'true' }, 41 | cwd: PROJECT_ROOT, 42 | })
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.1
2 findingsSpreading entire process.env into an object — may capture all secrets 38 | command: 'node', 39 | args: [MCP_SERVER_PATH], > 40 | env: { ...process.env, GCP_STDIO: 'true' }, 41 | cwd: PROJECT_ROOT, 42 | })
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.0
2 findingsSpreading entire process.env into an object — may capture all secrets 38 | command: 'node', 39 | args: [MCP_SERVER_PATH], > 40 | env: { ...process.env, GCP_STDIO: 'true' }, 41 | cwd: PROJECT_ROOT, 42 | })
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.