CVE-2026-84367 in joi
摘要
由 VulDB • 2026-09-01
joi 是一种用于 JavaScript 的模式描述语言和数据验证器。在版本 16.0.0 至 17.13.5 以及 18.2.4 之间,joi 的 `lib/types/keys.js` 内部实现中由 `object().rename()` 调用的 `internals.rename()` 允许一种模式:该模式使用正则表达式作为源键名进行重命名,并使用通过插值匹配数据来生成目标键名的 `Joi.expression()` 或 `Joi.x()`,同时结合 `{ multiple: true }` 选项,从而从攻击者控制的输入键中推导出目标键。攻击者可以发送带有对象值的 `x-__proto__`,导致目标被渲染为 `__proto__`,并设置由 `validate()` 返回对象的原型(prototype),而不是创建自有属性(own key)。全局的 `Object.prototype` 未被修改,因此影响仅限于该次验证调用所返回的对象。使用静态字符串作为目标的模式以及默认配置 `{ multiple: false }` 的模式不受此问题影响。该漏洞已在版本 17.13.5 和 18.2.4 中修复。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.