orval

Ecosystem: npm

Downloads: 11.6 Mln

Vulnerabilities from the last (months)
  • 11CriticalAffects 11 versions
  • 1HighAffects 1 version
  • 0MediumAffects 0 versions
  • 0ModerateAffects 0 versions
  • 0LowAffects 0 versions
Severity distribution (all time)
12vulnerabilities
  • 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.

Vulnerabilities affecting orval
IDSeveritySummaryAffected versionsPublishedSource
GHSA-2h9g-j24r-h63gCriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-2w86-xfrc-g85rCriticalOrval: 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.
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-3575-w9fc-c2j6CriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-6437-gxhq-pqv8CriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-653q-5476-x79gCriticalOrval: 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"
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-88f2-fpv8-89q2CriticalOrval: 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")
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-8j6p-r8jg-mxqhCriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-fg9p-mrxr-hvq7CriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-w727-8j6c-2rj4CriticalOrval: 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
  • < 8.21.0
GitHub (opens in a new tab)
GHSA-6mr6-jvcr-2f25CriticalOrval: 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()
  • < 8.21.0
GitHub (opens in a new tab)
  • GHSA-2h9g-j24r-h63gCritical
    Orval: 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-g85rCritical
    Orval: 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-c2j6Critical
    Orval: 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-pqv8Critical
    Orval: 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-x79gCritical
    Orval: 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-89q2Critical
    Orval: 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-mxqhCritical
    Orval: 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-hvq7Critical
    Orval: 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-2rj4Critical
    Orval: 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-2f25Critical
    Orval: 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

Showing 1-10 of 12 vulnerabilities