Bug 2542793 (CVE-2026-84367)
| Summary: | CVE-2026-84367 joi: joi: Prototype pollution via dynamic key renaming | ||
|---|---|---|---|
| Product: | [Other] Security Response | Reporter: | OSIDB Bzimport <bzimport> |
| Component: | vulnerability | Assignee: | Product Security DevOps Team <prodsec-dev> |
| Status: | NEW --- | QA Contact: | |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | unspecified | CC: | akhatavk, aos-team-art-private, asdas, cdrage, dfreiber, dpaolell, drow, dymurray, gparvin, ibolton, jbalunas, jburrell, jdelft, jmatthew, jmontleo, jupierce, lchilton, lgarciaa, mbiarnes, pgaikwad, pjindal, ppalepu, ppostler, prdhamdh, rhaigner, rhel-process-autobot, rjohnson, rushinde, sdawley, sfeifer, sghai, sidsharm, slucidi, sseago, suppawar, tsze, vkumar, vlaad, watson-tool-maintainers |
| Target Milestone: | --- | Keywords: | Security |
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | --- | |
| Doc Text: |
A flaw was found in joi. A remote attacker can alter the prototype of an object returned by validation by submitting specially crafted input keys. When an application configures dynamic key renaming based on regular expression patterns, the validator fails to properly restrict sensitive internal property names. This vulnerability allows untrusted input to influence object properties and application logic, potentially leading to unexpected application behavior.
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | --- | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
joi is a schema description language and data validator for JavaScript. From 16.0.0 until 17.13.5 and 18.2.4, joi's lib/types/keys.js internals.rename() implementation used by object().rename() permits a schema that renames keys with a regular-expression source and a Joi.expression() or Joi.x() target that interpolates the pattern's own match data, combined with { multiple: true }, to derive a target from an attacker-controlled input key. An attacker can send x-__proto__ with an object value, causing the target to render as __proto__ and set the prototype of the object returned by validate() instead of creating an own key. The global Object.prototype is not modified, so the effect is confined to the object returned by that validation call. Static-string targets and schemas using the default { multiple: false } are not affected. This issue is fixed in versions 17.13.5 and 18.2.4.