CVE Vulnerabilities

CVE-2022-39353

Improper Validation of Consistency within Input

Published: Nov 02, 2022 | Modified: Mar 01, 2023
CVSS 3.x
9.8
CRITICAL
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2.x
RedHat/V2
RedHat/V3
9.4 IMPORTANT
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
Ubuntu
MEDIUM

xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. xmldom parses XML that is not well-formed because it contains multiple top level elements, and adds all root nodes to the childNodes collection of the Document, without reporting any error or throwing. This breaks the assumption that there is only a single root node in the tree, which led to issuance of CVE-2022-39299 as it is a potential issue for dependents. Update to @xmldom/xmldom@~0.7.7, @xmldom/xmldom@~0.8.4 (dist-tag latest) or @xmldom/xmldom@>=0.9.0-beta.4 (dist-tag next). As a workaround, please one of the following approaches depending on your use case: instead of searching for elements in the whole DOM, only search in the documentElementor reject a document with a document that has more then 1 childNode.

Weakness

The product receives a complex input with multiple elements or fields that must be consistent with each other, but it does not validate or incorrectly validates that the input is actually consistent.

Affected Software

Name Vendor Start Version End Version
Xmldom Xmldom_project * 0.6.0 (excluding)
Xmldom Xmldom_project 0.7.0 (including) 0.7.7 (excluding)
Xmldom Xmldom_project 0.8.0 (including) 0.8.4 (excluding)
Xmldom Xmldom_project 0.9.0-beta1 (including) 0.9.0-beta1 (including)
Xmldom Xmldom_project 0.9.0-beta2 (including) 0.9.0-beta2 (including)
Xmldom Xmldom_project 0.9.0-beta3 (including) 0.9.0-beta3 (including)
Node-xmldom Ubuntu focal *
Node-xmldom Ubuntu jammy *
Node-xmldom Ubuntu kinetic *
Node-xmldom Ubuntu mantic *
Node-xmldom Ubuntu trusty *
Node-xmldom Ubuntu xenial *

Extended Description

Some input data can be structured with multiple elements or fields that must be consistent with each other, e.g. a number-of-items field that is followed by the expected number of elements. When such complex inputs are inconsistent, attackers could trigger unexpected errors, cause incorrect actions to take place, or exploit latent vulnerabilities.

Potential Mitigations

  • Assume all input is malicious. Use an “accept known good” input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.
  • When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, “boat” may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as “red” or “blue.”
  • Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code’s environment changes. This can give attackers enough room to bypass the intended validation. However, denylists can be useful for detecting potential attacks or determining which inputs are so malformed that they should be rejected outright.

References