标签 OpenAPI 下的文章

Orval MCP Code Injection 逃逸导致 RCE 分析 漏洞描述

Orval 是一个可以从 OpenAPI v3 或 Swagger v2 规范生成类型安全 JavaScript 客户端(TypeScript)的工具。在 7.18.0 版本之前,MCP 服务器生成逻辑在处理 OpenAPI 规范中的 summary 字段时,没有进行适当的验证或转义,直接将其拼接到生成的代码中。 这使得攻击者可以通过精心构造的 OpenAPI 规范文件,在 summary 字段中注入恶意代码,"跳出"字符串字面量并执行任意 JavaScript 代码。 环境搭建

$ cd orval-7.17.2

$ yarn install


$ yarn build

$ node ./packages/orval/dist/bin/orval.js --version

漏洞复现 验证 Orval 版本 确保你的是漏洞版本

命令:

创建恶意 OpenAPI 规范 文件: poc/real-malicious.yaml

summary 字段包含恶意 payload 开头的单引号 ' 用于闭合前面的字符串字面量 + require('child_process').execSync(...) 是注入的恶意代码 结尾的 ' 开始新的字符串字面量 因为生成逻辑是一个拼接的过程

创建 Orval 配置 文件: poc/real-poc.config.mjs

文件生成

然后就会生成对应的文件

恶意文件是在 server.ts

成功的拼接并闭合了

修复版本生成文件 使用相同的恶意输入,修复版本 (7.18.0) 会生成:

区别: 所有单引号被转义为 \',注入被阻止。 恶意文件触发 只要 MCP 服务器加载脚本,就会立马触发 AI 写个代码

代码分析 OpenAPI 规范加载

Operation 对象提取

operation 对象包含 summarydescription 等字段

字段提取

generateServer 函数/文件拼接点

所以文件的内容如下

漏洞修复 修复方案 packages/mcp/src/index.ts 中引入 jsStringEscape 函数对所有用户控制的输入进行转义。 修复说明 修复 Commit: 80b5fe73b94f120a3a5561952d6d4b0f8d7e928d Orval 7.18.0 (已修复) - packages/mcp/src/index.ts:

jsStringEscape 函数实现 - packages/core/src/utils/string.ts:

如果存在这些字符,那么我们的内容就会被转义,就和防止 sql 注入一样

输入字符
转义后
'
\'
"
\"
\
\\
换行符
\n

参考资料 GHSA-mwr6-3gp8-9jmj 修复 Commit Orval 官方仓库 Model Context Protocol (MCP) 免责声明 本漏洞分析报告仅用于安全研究和教育目的。所有测试均在授权的环境中进行。 请勿将此信息用于任何非法目的。作者不对因滥用此信息而导致的任何损害负责。

这里简单介绍一下,这个平台相当于 老黄用自家的显卡,部署了这些模型,然后统一用 OpenAPI 接口来给大家造福利(bushi),但是也确实好用,虽然高峰期的时候会卡,但白嫖是吧
话不多说,让我们 勒死 go

一、从官网进行获取 api-key

起手先注册账户拿钥匙

二、怎么进行使用

1. openapi 格式使用

baseurl: https://integrate.api.nvidia.com/v1/chat/completions
API Key: 就是第一步申请的 key
这里以沉浸式翻译插件,使用 Kimi2-thinking 举例。


添加自定义服务

注意,这里选择 open-api

配置如下:moonshotai/kimi-k2-thinking



然后手动调试一下是否可用


这里打 即可。

tip:如果不知道哪个模型,可以到官网中进行查看,方法如下:



📌 转载信息
转载时间:
2026/1/14 10:39:49