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

Vulnerabilidad en las peticiones HTTP en un endpoint en ORY Oathkeeper (CVE-2021-32701)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
22/06/2021
Última modificación:
30/06/2021

Descripción

ORY Oathkeeper es un Proxy de Identidad y Acceso (IAP) y una API de Decisión de Control de Acceso que autoriza peticiones HTTP basadas en conjuntos de Reglas de Acceso. Cuando se realiza una petición a un endpoint que requiere el ámbito "foo" usando un token de acceso concedido con ese ámbito "foo", la introspección será válida y ese token se almacenará en caché. El problema viene cuando se realiza una segunda petición a un endpoint que requiere el ámbito "bar" antes de que la caché haya expirado. Tanto si se concede el token como si no al ámbito "bar", la introspección será válida. Se publicará un parche con la versión "v0.38.12-beta.1". Por defecto, el almacenamiento en caché está desactivado para el autenticador "oauth2_introspection". Cuando el almacenamiento en caché está deshabilitado, esta vulnerabilidad no existe. La caché es comprobada en ["func (a *AuthenticatorOAuth2Introspection) Authenticate(...)"](https://github.com/ory/oathkeeper/blob/6a31df1c3779425e05db1c2a381166b087cb29a4/pipeline/authn/authenticator_oauth2_introspection.go#L152). De ["tokenFromCache()"](https://github.com/ory/oathkeeper/blob/6a31df1c3779425e05db1c2a381166b087cb29a4/pipeline/authn/authenticator_oauth2_introspection.go#L97) parece que sólo comprueba la fecha de caducidad del token, pero ignora si el token tiene o no los ámbitos adecuados. La vulnerabilidad fue introducida en PR #424. Durante la revisión, fallamos en requerir una cobertura de pruebas apropiada por parte del remitente, lo cual es la razón principal por la que la vulnerabilidad pasó el proceso de revisión

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:ory:oathkeeper:0.38.0:beta2:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.1:beta2:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.2:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.3:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.4:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.5:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.6:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.7:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.8:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.9:beta1:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.10:beta2:*:*:*:*:*:*
cpe:2.3:a:ory:oathkeeper:0.38.11:beta1:*:*:*:*:*:*