漏洞概述 该漏洞涉及在生成的模板字面量和对象键中转义由规范控制的字符串。具体来说,存在三个攻击面: 1. URL模板字面量:服务器路径和路径段被嵌入到生成的模板字面量中,没有转义反引号或 。恶意OpenAPI规范可以注入任意代码,当生成的客户端被调用时执行。 2. Zod模式默认值:模式默认值被作为反引号模板字面量发出,没有转义。恶意默认值如 会在导入时执行。 3. 计算属性键注入:模式属性/参数名称作为对象键发出,没有转义引号。 或 在名称中可以破坏并注入计算属性键,在导入时执行。 影响范围 URL模板字面量:影响 中的 和 方法。 Zod模式默认值:影响 中的 方法。 计算属性键注入:影响 中的 和 中的 方法。 修复方案 1. URL模板字面量: - :在参数处理之前转义原始OpenAPI路径。 - :在变量替换之后转义服务器URL。 - 还修复了 ,它传递了一个原始路径前缀给 ,绕过了 的转义。 2. Zod模式默认值: - 在 中使用 和 包装字符串和数组的默认值。 3. 计算属性键注入: - 键:使用 在5个站点转义 并用双引号包装。 - 键:使用 在 中转义 和 在单引号键中。 测试覆盖 反引号/ 注入在服务器URL、路径段、字符串默认值、数组默认值、枚举默认值。 Zod对象键中的双引号注入。 键中的单引号注入。 反引号/键内安全证明(无害的双引号字符串)。 所有现有测试通过(向后兼容的安全输入输出)。 依赖 添加 (^3.0.0)作为 和 的直接依赖。 后续(单独PR) / 转义合同已记录但未类型强制执行。后续PR将引入 品牌类型,以防止意外双重转义或绕过转义。 代码示例