Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en OPA (CVE-2022-23628)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
09/02/2022
Última modificación:
17/02/2022

Descripción

OPA es un motor de políticas de propósito general y de código abierto. Bajo determinadas condiciones, la impresión bonita de un árbol de sintaxis abstracta (AST) que contiene nodos sintéticos podría cambiar la lógica de algunas sentencias al reordenar los literales del array. Un ejemplo de políticas afectadas son las que analizan y comparan las rutas web. **Todas estas** tres condiciones tienen que cumplirse para crear un efecto adverso: 1. Un AST de Rego tuvo que ser **creado programáticamente** de tal manera que termina conteniendo términos sin ubicación (como variables comodín). 2. El AST tuvo que ser **impreso** usando el paquete "github.com/open-policy-agent/opa/format". 3. El resultado de la impresión bonita tuvo que ser **analizado y evaluado de nuevo** por medio de una instancia OPA usando los paquetes, o los paquetes Golang. Si alguna de estas tres condiciones no es cumplida, no está afectado. En particular, las tres condiciones son cumplidas si son usados **paquetes optimizados**, es decir, paquetes creados con "opa build -O=1" o superior. En ese caso, el optimizador cumpliría la condición (1.), cuyo resultado sería impreso al escribir el bundle en el disco, cumpliendo (2.). Cuando es usado el paquete, se cumpliría (3.). Como medida de mitigación solución, los usuarios pueden deshabilitar la optimización cuando son creados los paquetes

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:openpolicyagent:open_policy_agent:*:*:*:*:*:*:*:* 0.33.1 (incluyendo) 0.37.0 (excluyendo)