# Risk map — cypress-io/cypress

> Canonical page: https://codevetter.com/unpack/cypress/risk-map

# Risk map — cypress-io/cypress

Scanned commit 7d987f04740f8f5388ac3116e8ef7957373ead14 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

These are source observations and explicitly marked hypotheses, not confirmed vulnerabilities. Sensitive boundaries include configuration execution, privileged browser-to-server commands, filesystem access, GraphQL listeners, and CDP session control. Transport switching and V8 snapshot composition create substantial coupling. Runtime validation and broader test results remain unknown because this investigation executed no repository code.
- Configuration/plugin execution is a host-code boundary: ProjectConfigIpc inherits most process environment and forks with the user Node, while RunPlugins calls setupNodeEvents and later invokes registered handlers. — [packages/data-context/src/data/ProjectConfigIpc.ts#L308-324](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L308-L324) [packages/data-context/src/data/ProjectConfigIpc.ts#L410-416](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L410-L416) [packages/server/lib/plugins/child/run_plugins.ts#L113-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L113-L117) [packages/server/lib/plugins/child/run_plugins.ts#L181-184](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L181-L184)
- PrivilegedCommandsManager validates channel keys and command name/args for E2E requests before dispatching env, file, origin, and task operations; hasVerifiedCommand uses find() without removing the entry despite its removal comment. — [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L65-96](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L65-L96) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-L117)
- readFile/writeFile resolve caller paths against projectRoot without a containment check in those helpers; absolute paths or parent traversal can therefore address locations outside the project. Whether a caller is authorized depends on upstream command controls. — [packages/server/lib/files.ts#L4-20](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/files.ts#L4-L20) [packages/server/lib/files.ts#L51-59](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/files.ts#L51-L59) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L83-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L83-L117)
- Hypothesis for focused review: the Launchpad GraphQL listener supplies no explicit bind host and accepts requests without Origin; its CORS denial controls browser response visibility rather than being an authentication check. Actual reachability and exploitability were not tested. (inferred) — [packages/data-context/graphql/makeGraphQLServer.ts#L39-43](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/makeGraphQLServer.ts#L39-L43) [packages/data-context/graphql/makeGraphQLServer.ts#L119-128](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/makeGraphQLServer.ts#L119-L128) [packages/data-context/graphql/corsOriginDelegate.ts#L23-48](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/corsOriginDelegate.ts#L23-L48)
- Session probes expose live CDP URL and machine/user identity when the URL session ID matches; session identity is persisted under the cache. The project server binds loopback, and CLI probes additionally require matching identity and reachable CDP, making local record/endpoint access a sensitive boundary. — [packages/server/lib/routes.ts#L224-241](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/routes.ts#L224-L241) [packages/server/lib/cypress-sessions.ts#L45-61](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress-sessions.ts#L45-L61) [packages/server/lib/server-base.ts#L930-944](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L930-L944) [cli/lib/cypress-sessions/liveness.ts#L50-77](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/liveness.ts#L50-L77)
- Transport switching must preserve the same stubbing-state object and publish mode/runtime consistently; server comments identify broken intercept matching and disagreement with the still-running browser as failure modes. — [packages/server/lib/server-base.ts#L434-437](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L434-L437) [packages/server/lib/server-base.ts#L481-506](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L481-L506) [packages/server/lib/routes.ts#L35-42](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/routes.ts#L35-L42)
- cy.exec's server module remains imported solely for V8 snapshot composition and throws a Cypress 16 removal error; deleting this apparently obsolete stub has a documented mksnapshot failure risk. — [packages/server/lib/exec.ts#L1-6](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/exec.ts#L1-L6) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-L105)
- A successful production-build command alone does not prove type correctness: server build-prod and data-context build-prod explicitly tolerate tsc failure, while separate check-ts scripts enforce no-emit checks. — [packages/server/package.json#L7-8](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/package.json#L7-L8) [packages/data-context/package.json#L8-12](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/package.json#L8-L12)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
