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

Vulnerabilidad en un elemento URI "#fragment" en Envoy (CVE-2021-32779)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
24/08/2021
Última modificación:
25/10/2022

Descripción

Envoy es un proxy L7 de código abierto y un bus de comunicación diseñado para grandes arquitecturas modernas orientadas a servicios. En las versiones afectadas, Envoy manejaba inapropiadamente un elemento URI "#fragment" como parte del elemento path. Envoy está configurado con un filtro RBAC para la autorización o un mecanismo similar con un caso explícito de un elemento de ruta final "/admin", o está usando una aserción negativa con un elemento de ruta final de "/admin". El cliente envía la petición a "/app1/admin#foo". En Envoy versiones anteriores a 1.18.0, o 1.18.0+ configurado con path_normalization=false. Envoy trata el fragmento como un sufijo de la cadena de consulta cuando está presente, o como un sufijo de la ruta cuando la cadena de consulta está ausente, por lo que evalúa el elemento final de la ruta como "/admin#foo" y no coincide con el elemento configurado de la ruta "/admin". En Envoy 1.18.0+ configurado con path_normalization=true. Envoy transforma esto en /app1/admin%23foo y no coincide con el prefijo /admin configurado. El URI resultante es enviado al siguiente agente-servidor con el fragmento "#foo" que viola la RFC3986 o con el texto sin sentido "%23foo" añadido. Una petición específicamente construida con un URI que contiene el elemento "#fragment" entregado por un cliente no confiable en presencia de una autorización de petición basada en la ruta de acceso, resultando en una escalada de Privilegios cuando las extensiones de autorización de peticiones son basadas en la ruta de acceso. Envoy versiones 1.19.1, 1.18.4, 1.17.4 y 1.16.5, contienen correcciones que eliminan el fragmento de la ruta URI en las peticiones entrantes.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:* 1.16.0 (incluyendo) 1.16.5 (excluyendo)
cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:* 1.17.0 (incluyendo) 1.17.4 (excluyendo)
cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:* 1.18.0 (incluyendo) 1.18.4 (excluyendo)
cpe:2.3:a:envoyproxy:envoy:1.19.0:*:*:*:*:*:*:*