← Home

patchright

21
Versions
License
No
Install Scripts
Verified
Provenance

Supply chain provenance

Status for the latest visible version.

SLSA provenance attestation npm registry signatures gitHead linked

Maintainers

vinyzu

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
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 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.60.1

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.60.0

2 findings
HIGH New file with network + code execution: lib/common/index.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

INFO Has SLSA provenance attestation provenance

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 findings
HIGH env-spread: lib/common/process.js:52 semgrep

Spreading 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__") {

HIGH env-spread: lib/plugins/webServerPlugin.js:89 semgrep

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,

HIGH env-spread: lib/runner/processHost.js:59 semgrep

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

HIGH env-spread: lib/runner/testRunner.js:79 semgrep

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) {

INFO Has SLSA provenance attestation provenance

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 findings
HIGH env-spread: lib/common/process.js:52 semgrep

Spreading 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__") {

HIGH env-spread: lib/plugins/webServerPlugin.js:89 semgrep

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,

HIGH env-spread: lib/runner/processHost.js:59 semgrep

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

HIGH env-spread: lib/runner/testRunner.js:79 semgrep

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) {

INFO Has SLSA provenance attestation provenance

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 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.59.0

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.57.0

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.56.1

4 findings
HIGH env-spread: lib/common/process.js:44 semgrep

Spreading 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__") {

HIGH env-spread: lib/plugins/webServerPlugin.js:88 semgrep

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,

HIGH env-spread: lib/runner/processHost.js:55 semgrep

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

INFO Has SLSA provenance attestation provenance

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 findings
HIGH New obfuscated file: lib/mcpBundleImpl.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

HIGH New file with network + code execution: lib/mcpBundleImpl.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

HIGH New obfuscated file: lib/mcp/program.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

INFO Has SLSA provenance attestation provenance

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 findings
HIGH New obfuscated file: lib/mcpBundleImpl.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

HIGH New file with network + code execution: lib/mcpBundleImpl.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

INFO Has SLSA provenance attestation provenance

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 findings
HIGH New obfuscated file: lib/mcpBundleImpl.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

HIGH New file with network + code execution: lib/mcpBundleImpl.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

INFO Has SLSA provenance attestation provenance

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 findings
HIGH New obfuscated file: lib/mcpBundleImpl.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

HIGH New file with network + code execution: lib/mcpBundleImpl.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

INFO Has SLSA provenance attestation provenance

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 findings
HIGH New obfuscated file: lib/mcpBundleImpl.js source-diff

Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.

HIGH New file with network + code execution: lib/mcpBundleImpl.js source-diff

Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.

INFO Has SLSA provenance attestation provenance

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 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.52.4

5 findings
HIGH env-spread: lib/common/configLoader.js:349 semgrep

Spreading 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"

HIGH env-spread: lib/common/process.js:49 semgrep

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__") {

HIGH env-spread: lib/plugins/webServerPlugin.js:86 semgrep

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,

HIGH env-spread: lib/runner/processHost.js:57 semgrep

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,

INFO Has SLSA provenance attestation provenance

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 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.52.2

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v1.52.1

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.