文章总结: CVE-2026-71868是Orval代码生成工具中的严重代码注入漏洞,CVSS9.3。攻击者可通过恶意OpenAPI文档注入JavaScript,在生成模块被导入时触发RCE,影响开发供应链和CI/CD环境。受影响版本低于8.21.0,建议立即升级、审查第三方OpenAPI文件、隔离代码生成环境并审计已有生成代码。 综合评分: 88 文章分类: 漏洞分析,供应链安全,代码审计,安全工具
Orval曝CVSS 9.3代码注入漏洞(CVE-2026-71868),恶意OpenAPI可导致RCE
原创
tuto tuto
杂杂咱谈
2026年9月5日 00:03 福建
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
一、漏洞概述
CVE-2026-71868是存在于开源代码生成工具Orval中的严重代码注入漏洞。
Orval是一款基于OpenAPI v3和Swagger v2规范生成TypeScript/JavaScript类型安全API客户端的开发工具,广泛应用于前端项目、API SDK自动生成以及CI/CD构建流程。
漏洞位于Orval的Zod Schema生成模块,具体涉及:
packages/zod/src/index.ts└── formatDefaultValue()
当Orval处理包含enum类型属性及default默认值的OpenAPI文档时,没有正确转义模板字符串中的特殊字符,攻击者可以将恶意JavaScript表达式注入生成的代码中。
当生成的Zod模块被导入时,恶意表达式即可被自动执行,从而造成远程代码执行。
二、漏洞基本信息
| 项目 | 信息 | | — | — | | 漏洞编号 | CVE-2026-71868 | | 漏洞类型 | 代码注入 / 导入时RCE | | CWE | CWE-94、CWE-1336 | | 严重等级 | Critical | | CVSS v4.0 | 9.3 | | 攻击向量 | Network | | 攻击复杂度 | Low | | 所需权限 | None | | 用户交互 | None | | 受影响软件 | Orval | | 受影响版本 | < 8.21.0 | | 修复版本 | 8.21.0 |
三、漏洞原理
1. OpenAPI规范进入Orval
Orval的基本工作流程是:
OpenAPI/Swagger规范 ↓ Orval ↓ 解析API Schema ↓生成TypeScript/Zod代码 ↓ 项目导入生成代码
问题出现在从OpenAPI数据生成Zod Schema代码的过程中。
对于enum类型属性,如果OpenAPI文档中存在default值,Orval会将该值嵌入JavaScript模板字符串。
正常情况下,默认值应该作为普通字符串处理。
但漏洞版本没有正确转义:
${ ... }
以及反引号等模板字符串特殊字符。
2. 恶意默认值突破字符串边界
攻击者可以构造包含恶意模板表达式的OpenAPI文档。
例如:
default: "v${恶意JavaScript表达式}w"
由于${…}没有被正确转义,生成代码时可能变成一个真正的JavaScript模板表达式。
最终形成:
生成代码 ↓模板字符串 ↓${恶意表达式} ↓模块被import ↓JavaScript表达式自动执行 ↓ RCE
该漏洞最大的特点是: 代码执行发生在生成模块被加载/导入时,而不是必须等待某个HTTP请求或函数调用。
四、为什么这个漏洞危险?
该漏洞并不是传统意义上的”运行中的Web服务直接被攻击”,而是攻击开发、构建和代码生成供应链。
攻击链可以概括为:
攻击者 ↓构造恶意OpenAPI文档 ↓受害者获取/处理该API规范 ↓Orval生成Zod代码 ↓恶意表达式进入生成代码 ↓开发者/CI导入生成模块 ↓JavaScript自动执行 ↓开发环境/CI Runner遭到控制
由于Orval经常被用于开发和CI/CD构建流程,恶意OpenAPI规范一旦进入可信的代码生成流程,攻击影响可能扩大到开发者工作站、CI/CD Runner以及构建环境。
五、OpenAPI验证也可能无法阻止攻击
该漏洞还有一个值得关注的特点:
恶意内容可以表现为合法的字符串值。
也就是说,攻击者并不一定需要破坏OpenAPI文档结构。
恶意内容位于default字段时,OpenAPI验证器可能仍然认为它只是一个普通字符串:
OpenAPI Validator ↓认为是合法字符串 ↓ Orval继续处理 ↓生成JavaScript代码 ↓ 特殊字符未被转义 ↓ 代码注入
因此,单纯依赖OpenAPI Schema验证,并不能完全解决这一问题。
六、影响范围
官方CVE记录显示Orval < 8.21.0均属于受影响版本。
也就是说:
Orval 8.20.xOrval 8.19.xOrval 8.18.x…… ↓ 存在风险 Orval 8.21.0+ ↓ 已修复
官方8.21.0发布说明明确包含安全修复,用于转义由OpenAPI specification控制的字符串以及生成模板字符串中的对象键。
七、实际影响
成功利用CVE-2026-71868后,攻击者可能在生成代码被导入的环境中执行任意JavaScript。
潜在影响包括:
- 开发者工作站被入侵
- CI/CD Runner遭到控制
- 源代码窃取
- API Key、Token、环境变量等敏感信息泄露
- 构建凭据泄露
- 恶意代码进入生成的客户端
- 进一步实施供应链攻击
- 访问内部网络资源
- 以 CI/CD 环境权限执行后续攻击
因此,该漏洞的真正风险在于:
攻击者不一定需要直接攻击生产服务器,只需要让恶意OpenAPI规范进入可信的代码生成流程,就可能攻击整个软件开发供应链。
八、修复与缓解建议
1. 立即升级Orval
官方修复版本为Orval >= 8.21.0
建议直接升级到当前受支持版本,而不是停留在最低修复版本。官方仓库目前已有比8.21.0更高的版本发布。
2. 检查当前版本
可以检查项目中安装的Orval版本: npm list orval
如果版本低于: 8.21.0建议立即升级。
3. 严格审查第三方OpenAPI文件
- 第三方 API 文档
- 外部供应商提供的 OpenAPI 文件
- 从互联网下载的 Swagger 文件
- 自动更新的 API Schema
- CI/CD 中自动拉取的 OpenAPI 定义
不要默认认为OpenAPI文档是可信输入。
4. 隔离代码生成环境
如果必须处理不可信OpenAPI文件,建议:
不可信OpenAPI ↓ 隔离环境 ↓ Orval ↓ 代码安全检查 ↓进入开发/生产环境
尤其避免直接在具有大量Secrets、生产凭据和内部网络访问权限的CI Runner中处理未知来源的API规范。对处理不可信规范的Orval环境进行隔离或沙箱化。
5. 审计已有生成代码
如果此前使用过受影响版本处理来自不可信来源的OpenAPI文件,建议:
- 重新生成 API 客户端
- 审查生成的 Zod Schema
- 检查近期新增的异常 JavaScript 代码
- 检查 CI/CD 环境变量和 Token
- 检查异常网络连接
- 检查源码仓库是否出现异常修改
九、值得注意:Orval近期存在多个代码生成RCE问题
这也是此次漏洞特别值得关注的地方。
Orval官方安全公告列表中,在2026年7月同期公开了多项Critical级别的代码生成/RCE问题,包括:
- Header 参数名注入
- Query 参数名注入
- Schema 属性名注入
- MSW Mock Generator RCE
- Schema 默认值注入
- Array Items 默认值注入
- Header/Query 参数默认值注入
- servers[].url模板字符串注入等。
这意味着此次CVE-2026-71868并不是孤立的代码生成安全问题,而是Orval代码生成过程中”外部规范数据 → 生成JavaScript/TypeScript代码”这一信任边界暴露出的系列风险之一。
十、总结
CVE-2026-71868的核心问题可以概括为:
Orval在将OpenAPI默认值转换为Zod模板字符串时未正确转义特殊字符,攻击者可通过恶意OpenAPI规范注入JavaScript,并在生成模块被导入时触发代码执行。
其危险性主要体现在开发供应链和CI/CD环境:
恶意OpenAPI ↓Orval代码生成 ↓JavaScript注入 ↓Zod模块Import ↓ 代码执行 ↓开发机/CI Runner ↓凭据窃取/源码泄露/供应链攻击
建议使用Orval的开发团队立即检查版本,并重点审计近期处理过的第三方OpenAPI/Swagger规范及CI/CD环境。
CVE-2026-71868 #Orval #OpenAPI
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:杂杂咱谈 tuto tuto《Orval曝CVSS 9.3代码注入漏洞(CVE-2026-71868),恶意OpenAPI可导致RCE》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论