orval
Ecosystem: npm
Downloads: 11.6 Mln
- 11CriticalAffects 11 versions
- 1HighAffects 1 version
- 0MediumAffects 0 versions
- 0ModerateAffects 0 versions
- 0LowAffects 0 versions
- Critical11 (91.7%)
- High1 (8.3%)
- Medium0 (0.0%)
- Moderate0 (0.0%)
- Low0 (0.0%)
Monthly breakdown
- 12 vulnerabilities
- Critical: 11
- High: 1
- Medium: 0
- Moderate: 0
- Low: 0
Vulnerabilities (12)
Known vulnerabilities affecting orval, based on data from OSV.
| ID | Severity | Summary | Affected versions | Published | Source |
|---|---|---|---|---|---|
| GHSA-2h9g-j24r-h63g | Critical | Orval: Import-time RCE via array-items default -> zod module-level template literal### Summary Orval's zod schema generation emits the **array-items** `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs at im |
| GitHub (opens in a new tab) | |
| GHSA-2w86-xfrc-g85r | Critical | Orval: RCE via schema property name -> computed-property-key injection in the MSW mock generator### Summary orval, when generating MSW mocks (output.mock: true), emits each schema property name as a single-quoted object key in the mock factory WITHOUT escaping the single quote. A ' in a property name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when the mock factory is called (e.g. in tests / MSW handlers) -> RCE. The property name is a pure data field. Verified on orval 8.19.0 / Node. ### Details ```ts export const getOpResponseMock = (...): Thing => ({'x': 0, [require("fs").writeFileSync("PWNED","")]: 0, 'y': faker. |
| GitHub (opens in a new tab) | |
| GHSA-3575-w9fc-c2j6 | Critical | Orval: Import-time RCE via enum-typed default -> zod module-level template literal### Summary Orval's zod schema generation emits the **enum-typed** `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs at imp |
| GitHub (opens in a new tab) | |
| GHSA-6437-gxhq-pqv8 | Critical | Orval: Import-time RCE via header parameter name -> computed-property-key injection in the zod client### Summary orval's zod client emits each header parameter name as a double-quoted key in the generated zod.object({...}) request-validation schema WITHOUT escaping the double quote. A " in the header parameter name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- at MODULE IMPORT (export const OpHeader = zod.object({...}) executes on load) -> import-time RCE. The header parameter name is a pure data field. Verified on orval 8.19.0 / Node. ### Details export const OpHeader = zod.object({ "a":zod.st |
| GitHub (opens in a new tab) | |
| GHSA-653q-5476-x79g | Critical | Orval: Import-time RCE via query parameter name -> computed-property-key injection in the zod cli### Summary orval's zod client emits each query parameter name as a double-quoted key in the generated zod.object({...}) request-validation schema WITHOUT escaping the double quote. A " in the query parameter name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- at MODULE IMPORT (export const OpQueryParams = zod.object({...}) executes on load) -> import-time RCE. The query parameter name is a pure data field. Verified on orval 8.19.0 / Node. ### Details export const OpQueryParams = zod.object({ "a" |
| GitHub (opens in a new tab) | |
| GHSA-88f2-fpv8-89q2 | Critical | Orval: RCE via servers[].url -> unescaped request-URL template literal (with getBaseUrlFromSpecification)### Summary When Orval is configured with `output.baseUrl.getBaseUrlFromSpecification: true`, it bakes the spec's `servers[0].url` into the generated request URL as a template literal without escaping the backtick. A server URL containing a backtick closes the template literal and injects a concatenation expression evaluated when the generated URL/request function is called, executing attacker-controlled code. Verified on Orval 8.19.0 (fetch client); survives default OpenAPI validation. ### Details ```ts return `http://api.x/` + (globalThis.X = require("fs").writeFileSync("/marker","pwned") |
| GitHub (opens in a new tab) | |
| GHSA-8j6p-r8jg-mxqh | Critical | Orval: Import-time RCE via header-parameter default -> zod module-level template literal### Summary Orval's zod schema generation emits the **header-parameter** `default` value as a module-level template literal (`export const Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs a |
| GitHub (opens in a new tab) | |
| GHSA-fg9p-mrxr-hvq7 | Critical | Orval: RCE via OpenAPI path -> unescaped request-URL template literal (backtick breakout)### Summary Orval emits the OpenAPI path into the generated request URL as a TEMPLATE LITERAL (`` `/users/...` ``) without escaping the backtick character. A path containing a backtick closes the template literal and injects a concatenation expression that is evaluated when the generated URL/request/key function is called, executing attacker-controlled code. Affects the axios, fetch, react-query, and swr clients. Verified on Orval 8.19.0; survives Orval's default OpenAPI validation. ### Details ```ts // generated URL builder (fetch client) return `/users/` + (globalThis.X = require("fs").wr |
| GitHub (opens in a new tab) | |
| GHSA-w727-8j6c-2rj4 | Critical | Orval: Import-time RCE via schema default -> zod module-level template literal### Summary Orval's zod schema generation emits a schema's `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression that is evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const getIResponseDsDefault = `v${globalThis.ORVPWN()}w`; ``` `${...}` permits an arbitrary JS |
| GitHub (opens in a new tab) | |
| GHSA-6mr6-jvcr-2f25 | Critical | Orval: Import-time RCE via schema property name -> computed-property-key injection in the zod client### Summary orval's zod client emits each schema property name as a double-quoted key in the generated zod.object({...}) WITHOUT escaping the double quote. A " in a property name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- which is at MODULE IMPORT (the `export const X = zod.object({...})` executes on load) -> import-time RCE. The property name is a pure data field. Verified on orval 8.19.0 / Node. CWE-94 / CWE-95 / CWE-116. ### Details ```ts export const OpBody = zod.object({ "a":zod.string() |
| GitHub (opens in a new tab) |
- GHSA-2h9g-j24r-h63gCriticalOrval: Import-time RCE via array-items default -> zod module-level template literal
< 8.21.0
### Summary Orval's zod schema generation emits the **array-items** `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs at im
CVE: CVE-2026-71869
- GHSA-2w86-xfrc-g85rCriticalOrval: RCE via schema property name -> computed-property-key injection in the MSW mock generator
< 8.21.0
### Summary orval, when generating MSW mocks (output.mock: true), emits each schema property name as a single-quoted object key in the mock factory WITHOUT escaping the single quote. A ' in a property name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when the mock factory is called (e.g. in tests / MSW handlers) -> RCE. The property name is a pure data field. Verified on orval 8.19.0 / Node. ### Details ```ts export const getOpResponseMock = (...): Thing => ({'x': 0, [require("fs").writeFileSync("PWNED","")]: 0, 'y': faker.
CVE: CVE-2026-71867
- GHSA-3575-w9fc-c2j6CriticalOrval: Import-time RCE via enum-typed default -> zod module-level template literal
< 8.21.0
### Summary Orval's zod schema generation emits the **enum-typed** `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs at imp
CVE: CVE-2026-71868
- GHSA-6437-gxhq-pqv8CriticalOrval: Import-time RCE via header parameter name -> computed-property-key injection in the zod client
< 8.21.0
### Summary orval's zod client emits each header parameter name as a double-quoted key in the generated zod.object({...}) request-validation schema WITHOUT escaping the double quote. A " in the header parameter name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- at MODULE IMPORT (export const OpHeader = zod.object({...}) executes on load) -> import-time RCE. The header parameter name is a pure data field. Verified on orval 8.19.0 / Node. ### Details export const OpHeader = zod.object({ "a":zod.st
CVE: CVE-2026-71864
- GHSA-653q-5476-x79gCriticalOrval: Import-time RCE via query parameter name -> computed-property-key injection in the zod cli
< 8.21.0
### Summary orval's zod client emits each query parameter name as a double-quoted key in the generated zod.object({...}) request-validation schema WITHOUT escaping the double quote. A " in the query parameter name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- at MODULE IMPORT (export const OpQueryParams = zod.object({...}) executes on load) -> import-time RCE. The query parameter name is a pure data field. Verified on orval 8.19.0 / Node. ### Details export const OpQueryParams = zod.object({ "a"
CVE: CVE-2026-71865
- GHSA-88f2-fpv8-89q2CriticalOrval: RCE via servers[].url -> unescaped request-URL template literal (with getBaseUrlFromSpecification)
< 8.21.0
### Summary When Orval is configured with `output.baseUrl.getBaseUrlFromSpecification: true`, it bakes the spec's `servers[0].url` into the generated request URL as a template literal without escaping the backtick. A server URL containing a backtick closes the template literal and injects a concatenation expression evaluated when the generated URL/request function is called, executing attacker-controlled code. Verified on Orval 8.19.0 (fetch client); survives default OpenAPI validation. ### Details ```ts return `http://api.x/` + (globalThis.X = require("fs").writeFileSync("/marker","pwned")
CVE: CVE-2026-62682
- GHSA-8j6p-r8jg-mxqhCriticalOrval: Import-time RCE via header-parameter default -> zod module-level template literal
< 8.21.0
### Summary Orval's zod schema generation emits the **header-parameter** `default` value as a module-level template literal (`export const Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const …Default = `v${globalThis.ORVPWN()}w`; // ${...} = arbitrary JS expression, runs a
CVE: CVE-2026-71871
- GHSA-fg9p-mrxr-hvq7CriticalOrval: RCE via OpenAPI path -> unescaped request-URL template literal (backtick breakout)
< 8.21.0
### Summary Orval emits the OpenAPI path into the generated request URL as a TEMPLATE LITERAL (`` `/users/...` ``) without escaping the backtick character. A path containing a backtick closes the template literal and injects a concatenation expression that is evaluated when the generated URL/request/key function is called, executing attacker-controlled code. Affects the axios, fetch, react-query, and swr clients. Verified on Orval 8.19.0; survives Orval's default OpenAPI validation. ### Details ```ts // generated URL builder (fetch client) return `/users/` + (globalThis.X = require("fs").wr
CVE: CVE-2026-62681
- GHSA-w727-8j6c-2rj4CriticalOrval: Import-time RCE via schema default -> zod module-level template literal
< 8.21.0
### Summary Orval's zod schema generation emits a schema's `default` value as a module-level template literal (`export const …Default = `<default>`;`) without escaping `${` or the backtick. A default of the form `v${<code>}w` injects a live JavaScript expression that is evaluated when the generated zod schema module is imported, executing attacker-controlled code at import — no request or function call needed. Verified on Orval 8.19.0; survives default OpenAPI validation. ### Details ```ts export const getIResponseDsDefault = `v${globalThis.ORVPWN()}w`; ``` `${...}` permits an arbitrary JS
CVE: CVE-2026-72717
- GHSA-6mr6-jvcr-2f25CriticalOrval: Import-time RCE via schema property name -> computed-property-key injection in the zod client
< 8.21.0
### Summary orval's zod client emits each schema property name as a double-quoted key in the generated zod.object({...}) WITHOUT escaping the double quote. A " in a property name closes the key and lands in object-literal context, where an injected computed property key [expr] is evaluated when zod.object({...}) runs -- which is at MODULE IMPORT (the `export const X = zod.object({...})` executes on load) -> import-time RCE. The property name is a pure data field. Verified on orval 8.19.0 / Node. CWE-94 / CWE-95 / CWE-116. ### Details ```ts export const OpBody = zod.object({ "a":zod.string()
CVE: CVE-2026-71866