CVE-2022-23628 Information
Description
OPA is an open source general-purpose policy engine. Under certain conditions pretty-printing an abstract syntax tree (AST) that contains synthetic nodes could change the logic of some statements by reordering array literals. Example of policies impacted are those that parse and compare web paths. All of these three conditions have to be met to create an adverse effect: 1. An AST of Rego had to be created programmatically such that it ends up containing terms without a location (such as wildcard variables). 2. The AST had to be pretty-printed using the github.com/open-policy-agent/opa/format package. 3. The result of the pretty-printing had to be parsed and evaluated again via an OPA instance using the bundles or the Golang packages. If any of these three conditions are not met you are not affected. Notably all three would be true if using optimized bundles i.e. bundles created with opa build -O=1 or higher. In that case the optimizer would fulfil condition (1.) the result of that would be pretty-printed when writing the bundle to disk fulfilling (2.). When the bundle was then used we’d satisfy (3.). As a workaround users may disable optimization when creating bundles.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Reference
https://github.com/open-policy-agent/opa/pull/3851 https://github.com/open-policy-agent/opa/security/advisories/GHSA-hcw3-j74m-qc58 https://github.com/open-policy-agent/opa/commit/bfd984ddf93ef2c4963a08d4fdadae0bcf1a3717 https://github.com/open-policy-agent/opa/commit/932e4ffc37a590ace79e9b75ca4340288c220239
Attack Complexity
LOW
Privileges Required
NONE
User Interaction Required
NONE
Scope
NONE
Confidentiality Impact
UNCHANGED
Integrity Impact
NONE
Availability Impact
LOW
Base Score
NONE
Base Severity
5.3
Share on: