patchright
Supply chain provenance
Status for the latest visible version.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| source-diff | obfuscated-file:lib/mcp/program.js | AI (source-diff): Readable esbuild CJS output, not obfuscated; long lines from bundling. | ai | |
| source-diff | obfuscated-file:lib/mcpBundleImpl.js | AI (source-diff): Bundled MCP implementation; minified output is standard for this Playwright-fork package. | ai | |
| source-diff | net-exec-file:lib/mcpBundleImpl.js | AI (source-diff): Bundle contains network + exec patterns inherent to browser automation; not malicious. | ai | |
| semgrep | semgrep:child-process-spawn | AI (semgrep): Spawning browser processes is core functionality. | ai | |
| semgrep | semgrep:new-function-constructor | AI (semgrep): Bundled MCP code; common in bundled libraries. | ai | |
| source-diff | net-exec-file:lib/common/index.js | AI (source-diff): Bundled Playwright test runner code; network+exec patterns are inherent to browser automation. | ai | |
| semgrep | semgrep:env-spread | AI (semgrep): Playwright subprocess env-tracking pattern; stable across versions. | ai | |
| semgrep | semgrep:dynamic-require | AI (semgrep): Bundled expect code; not arbitrary module loading. | ai | |
| semgrep | semgrep:env-bulk-read | AI (semgrep): Same subprocess env-diff pattern; not exfiltration. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): Browser binary installation; expected for browser automation packages. | ai | |
| semgrep | semgrep:eval-usage | AI (semgrep): Dynamic ESM import via eval is standard Playwright transform pattern. | ai | |
| semgrep | semgrep:base64-decode | AI (semgrep): Decodes test attachment bodies; benign Playwright internals. | ai | |
| semgrep | semgrep:api-obfuscation-reflect | AI (semgrep): Reflect.get in bundled expect library; standard JS pattern. | ai |
Versions (showing 21 of 21)
| Version | Deps | Published |
|---|---|---|
| 1.60.2 | 1 / 0 | |
| 1.60.1 | 1 / 0 | |
| 1.60.0 | 1 / 0 | |
| 1.59.4 | 1 / 0 | |
| 1.59.3 | 1 / 0 | |
| 1.59.2 | 1 / 0 | |
| 1.59.1 | 1 / 0 | |
| 1.59.0 | 1 / 0 | |
| 1.58.2 | 1 / 0 | |
| 1.57.0 | 1 / 0 | |
| 1.56.1 | 1 / 0 | |
| 1.56.0 | 1 / 0 | |
| 1.55.3 | 1 / 0 | |
| 1.55.2 | 1 / 0 | |
| 1.55.1 | 1 / 0 | |
| 1.55.0 | 1 / 0 | |
| 1.52.5 | 1 / 0 | |
| 1.52.4 | 1 / 0 | |
| 1.52.3 | 1 / 0 | |
| 1.52.2 | 1 / 0 | |
| 1.52.1 | 1 / 0 |
v1.60.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.60.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.60.0
2 findingsNewly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.59.3
5 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/common/process.js#L52 50 | let processRunner; 51 | let processName; > 52 | const startingEnv = { ...process.env }; 53 | process.on("message", async (message) => { 54 | if (message.method === "__init__") {
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/plugins/webServerPlugin.js#L89 87 | const { launchedProcess, gracefullyClose } = await (0, import_utils.launchProcess)({ 88 | command: this._options.command, > 89 | env: { 90 | ...DEFAULT_ENVIRONMENT_VARIABLES, 91 | ...process.env,
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/runner/processHost.js#L59 57 | // Otherwise user can end up with a bunch of workers stuck in a busy loop without self-destructing. 58 | detached: false, > 59 | env: { 60 | ...process.env, 61 | ...this._extraEnv
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/runner/testRunner.js#L79 77 | this._watchTestDirs = !!params.watchTestDirs; 78 | this._populateDependenciesOnList = !!params.populateDependenciesOnList; > 79 | this._startingEnv = { ...process.env }; 80 | } 81 | resizeTerminal(params) {
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.59.2
5 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/common/process.js#L52 50 | let processRunner; 51 | let processName; > 52 | const startingEnv = { ...process.env }; 53 | process.on("message", async (message) => { 54 | if (message.method === "__init__") {
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/plugins/webServerPlugin.js#L89 87 | const { launchedProcess, gracefullyClose } = await (0, import_utils.launchProcess)({ 88 | command: this._options.command, > 89 | env: { 90 | ...DEFAULT_ENVIRONMENT_VARIABLES, 91 | ...process.env,
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/runner/processHost.js#L59 57 | // Otherwise user can end up with a bunch of workers stuck in a busy loop without self-destructing. 58 | detached: false, > 59 | env: { 60 | ...process.env, 61 | ...this._extraEnv
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/d466ac5358cae058cdc75d2ae3ab3ad220042730/lib/runner/testRunner.js#L79 77 | this._watchTestDirs = !!params.watchTestDirs; 78 | this._populateDependenciesOnList = !!params.populateDependenciesOnList; > 79 | this._startingEnv = { ...process.env }; 80 | } 81 | resizeTerminal(params) {
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.59.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.59.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.57.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.56.1
4 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/54c711571a37de525377e6f3d3608c3e029b1829/lib/common/process.js#L44 42 | let processRunner; 43 | let processName; > 44 | const startingEnv = { ...process.env }; 45 | process.on("message", async (message) => { 46 | if (message.method === "__init__") {
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/54c711571a37de525377e6f3d3608c3e029b1829/lib/plugins/webServerPlugin.js#L88 86 | const { launchedProcess, gracefullyClose } = await (0, import_utils.launchProcess)({ 87 | command: this._options.command, > 88 | env: { 89 | ...DEFAULT_ENVIRONMENT_VARIABLES, 90 | ...process.env,
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/54c711571a37de525377e6f3d3608c3e029b1829/lib/runner/processHost.js#L55 53 | this.process = import_child_process.default.fork(require.resolve("../common/process"), { 54 | detached: false, > 55 | env: { 56 | ...process.env, 57 | ...this._extraEnv
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.56.0
4 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.55.3
3 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.55.2
3 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.55.1
3 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.55.0
3 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.52.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.52.4
5 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/471930b1ceae03c9e66e0eb80c1364a1a788e7db/lib/common/configLoader.js#L349 347 | return false; 348 | const innerProcess = require("child_process").fork(require.resolve("../../cli"), process.argv.slice(2), { > 349 | env: { 350 | ...process.env, 351 | PW_TS_ESM_LEGACY_LOADER_ON: "1"
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/471930b1ceae03c9e66e0eb80c1364a1a788e7db/lib/common/process.js#L49 47 | let processRunner; 48 | let processName; > 49 | const startingEnv = { ...process.env }; 50 | process.on("message", async (message) => { 51 | if (message.method === "__init__") {
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/471930b1ceae03c9e66e0eb80c1364a1a788e7db/lib/plugins/webServerPlugin.js#L86 84 | const { launchedProcess, gracefullyClose } = await (0, import_utils.launchProcess)({ 85 | command: this._options.command, > 86 | env: { 87 | ...DEFAULT_ENVIRONMENT_VARIABLES, 88 | ...process.env,
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/blob/471930b1ceae03c9e66e0eb80c1364a1a788e7db/lib/runner/processHost.js#L57 55 | this.process = import_child_process.default.fork(require.resolve("../common/process"), { 56 | detached: false, > 57 | env: { 58 | ...process.env, 59 | ...this._extraEnv,
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.52.3
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.52.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.52.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.