CVE-2026-23947
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedOrval generates type-safe JS clients (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification. Versions prior to 7.19.0 until 8.0.2 are vulnerable to arbitrary code execution in environments consuming generated clients. This issue is similar in nature to CVE-2026-22785, but affects a different code path in @orval/core that was not addressed by CVE-2026-22785's fix. The vulnerability allows untrusted OpenAPI specifications to inject arbitrary TypeScript/JavaScript code into generated clients via the x-enumDescriptions field, which is embedded without proper escaping in getEnumImplementation(). I have confirmed that the injection occurs during const enum generation and results in executable code within the generated schema files. Orval 7.19.0 and 8.0.2 contain a fix for the issue.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidenceOrval versions 7.19.0 through 8.0.2 have a code injection vulnerability in the getEnumImplementation() function. The x-enumDescriptions field from OpenAPI specifications is embedded without sanitization into generated TypeScript const enum code, allowing arbitrary JavaScript/TypeScript code execution in environments consuming the generated clients.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data< 7.19.0>= 8.0.0, < 8.0.2CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Network
- Complexity
- Low
- Privileges
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- High
- Availability
- High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify installed Orval versionRun 'npm list orval' or 'yarn list orval' to see the installed version, or check package.json for the orval dependency versionAffected if The version is < 7.19.0 or >= 8.0.0 but < 8.0.2
-
Locate OpenAPI specification files processed by OrvalSearch your project for .yaml or .json files containing the 'x-enumDescriptions' field, which is the attack vector for this vulnerabilityAffected if Any OpenAPI spec being processed by Orval contains an x-enumDescriptions field with unsanitized content
-
Inspect generated TypeScript enum codeExamine the generated TypeScript output files (look for .ts files with const enum definitions) produced by Orval, specifically looking for enum implementations that may contain raw content from x-enumDescriptionsAffected if The generated enum code contains unescaped or unescaped content from the x-enumDescriptions field that could represent injected code
A defender is affected if they are using Orval version 7.19.0 through 8.0.2 and processing OpenAPI specifications that contain the x-enumDescriptions field, resulting in generated code that embeds that field's content without sanitization.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scoped7.19.08.0.2
Upgrade Orval to version 7.19.0 or 8.0.2 or later which includes proper escaping of the x-enumDescriptions field. If immediate upgrading is not feasible, avoid processing untrusted OpenAPI specifications that contain x-enumDescriptions.
Orval 7.19.0 (7.x line) or 8.0.2 (8.x line)
- Identify the current Orval version in use by checking package.json or running 'npm list @orval/core'
- Upgrade to version 7.19.0 or higher for the 7.x release line, OR upgrade to version 8.0.2 or higher for the 8.x release line
- Run 'npm install @orval/[email protected]' or 'npm install @orval/[email protected]' (or appropriate version)
- Regenerate client code to ensure the fix is applied
- Verify the generated code no longer contains unsanitized content from x-enumDescriptions fields
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation2.0 h
- Implementation4.0 h
- Testing3.0 h
- Review / QA2.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $3,088.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2026-23947 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2026-23947 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data