CVE-2026-23947 is a code injection flaw (CVSS 9.8) in Orval, the OpenAPI client generator for TypeScript. An untrusted OpenAPI spec can inject code into generated files through the x-enumDescriptions field. The advisory says to upgrade to Orval 8.0.2. Only generate clients from specs you trust.
What's affected
Orval versions covered by the advisory, which tells users to upgrade to Orval 8.0.2. The NVD text describes the range as prior to 7.19.0 until 8.0.2, and the advisory metadata lists 7.19.0 or later as patched. Because those statements are not worded the same way, read the advisory and pick a version at or above 8.0.2 if you can.
The issue sits in @orval/core, in the code that writes enum implementations. It is described as similar to CVE-2026-22785, which affected a different code path.
How to check if you're exposed
Find which Orval version your projects resolve:
npm ls orval @orval/core
pnpm why orval
yarn why orval
Then ask where your OpenAPI specs come from. If they are written by your own team and stored in your repository, the risk is low. If you generate clients from third-party or user-supplied specs, for example from a vendor URL, the risk is real.
What to do now
- Upgrade Orval to 8.0.2 or later in every project and in CI.
- Treat OpenAPI files from outside your organization as untrusted input. Review them before generating code, or pin and verify them.
- Review generated files in pull requests, especially after a spec changes.
- Run code generation in CI with limited credentials rather than on a developer machine that holds publishing tokens.
Why it matters
The record lists CWE-77, command injection, and CWE-94, code injection. A code generator turns data into source code. If a field is written into the output without escaping, the data can end up as code that runs wherever the generated client runs, which can include developer machines and build servers.
This is a supply chain angle that is easy to miss: specs are treated as documentation, but they act as input to a program. A second, related Orval issue, CVE-2026-24132, sits in the mock generation path. The record does not list this CVE as known exploited.
Reading the severity score
The record gives a CVSS base score of 9.8, published 2026-01-20. In the vector, the attacker works over the network, needs no account, and the attack is low in complexity. User interaction is not needed. Impact on confidentiality is high, on integrity high and on availability high.
A base score describes the flaw in general, not your risk. Weigh it against how exposed your instance is and what it can reach. The Gold page for the CVE keeps the score, weakness and references together.
Hardening beyond the patch
Treat code generators like build tools with real privileges. Run them in CI with a clean workspace, no publish tokens and a pinned toolchain. Commit the generated output and review the diff, so a spec change that alters generated code is visible. Where you can, vendor third party specs into your repository and review them like any other dependency, instead of fetching them at build time from a URL you do not control.
Find it across your own code
To see which of your packages are affected, the free in-browser dependency scan at gold.safeguard.sh/scan takes a manifest and lists known vulnerabilities. Reachability analysis then helps you judge whether your code calls the vulnerable path, so you can order the work.
Try it yourself
Click through it at your own pace, or open it full screen.
Quick check
Is this an attack on the running API?
No. It concerns the generated client code. The danger is that code is produced from untrusted input and then executed where the client is used.
Sources
Last reviewed: 19 October 2026.