CVE-2021-41528: Redes Flexera/RISC — Esquema de autorización vulnerable

May 10 2022
Descripción CVE-2021-41528 describe la funcionalidad dentro del portal Flexera RISK Network que era vulnerable al acceso no autorizado. Se descubrió que esto era sistémico, ya que la aplicación dependía ampliamente de las verificaciones del lado del cliente en lugar de las verificaciones del lado del cliente y del servidor.

Descripción

CVE-2021-41528 describe la funcionalidad dentro del portal Flexera RISK Network que era vulnerable al acceso no autorizado. Se descubrió que esto era sistémico, ya que la aplicación dependía ampliamente de las verificaciones del lado del cliente en lugar de las verificaciones del lado del cliente y del servidor. A diferencia de la Autenticación, que confirma una identidad, la Autorización confirma que una identidad autenticada está autorizada para acceder a lo que se solicita. Tenga en cuenta que se notificó a Flexera y desde entonces ha aplicado una corrección oficial para esta vulnerabilidad.

En un ejemplo, la información confidencial se almacenó en el almacenamiento local de los navegadores (localStorage). localStorage permite que las aplicaciones guarden pares clave/valor en el navegador. Después de autenticarse en la aplicación, la lista de control de acceso del usuario se almacenó en localStorage en formato JSON. Un usuario con solo privilegios de "lectura" podría modificar los valores JSON de localStorage y obtener acceso no autorizado a la funcionalidad que anteriormente devolvía errores de tipo "no autorizado". Esto se puede ver en el escenario de ataque 1 a continuación.

Se identificaron otros controles de acceso solo del lado del cliente en la API, los archivos JavaScript y en la fuente HTML ( CVE-2021–41527 ). Aunque localStorage puede ser editado fácilmente por un atacante, los controles de acceso devueltos en las respuestas solicitadas requerían un proxy para modificar el cuerpo de la respuesta. Esto se puede lograr usando herramientas como Portswigger's Proxy> Match and Replace , y se ve en el Escenario de ataque 2 a continuación.

Gravedad

CVSS v3.1 vectorial: AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N/E:F/RL:O/RC:C

Escenario de ataque de autorización 1

El primer escenario de ataque mostrará la modificación de los controles de acceso almacenados en localStorage para obtener acceso no autorizado a las funciones de "Etiquetas de pila". Tenga en cuenta que lo siguiente es una muestra de lo que se identificó.

La primera figura muestra el intento de acceder a la función "Etiquetas apiladas" utilizando Navegación forzada, pero se devuelve un error de permisos según lo previsto.

Mensaje de permiso no autorizado: resultado previsto

La siguiente figura muestra el acceso al almacenamiento local de los navegadores y la recuperación del par clave/valor 'USER_PERMISSIONS'.

Permisos de usuario en el almacenamiento local del lado del cliente

A continuación, se analiza el valor localStorage y todos los permisos de "lectura" se reemplazan por "lectura", "escritura". Esto se puede ver en las siguientes dos figuras:

Permisos de solo lectura
Actualizado para leer, escribir

El valor localStorage 'USER_PERMISSIONS' se actualiza en el navegador con los nuevos valores de "lectura", "escritura", la página se actualiza y se logra el acceso no autorizado a las "Etiquetas de pila".

Acceso no autorizado

La cifra final para este escenario de ataque es una descarga no autorizada de un informe de error desde la misma página:

Descarga no autorizada

Escenario de ataque de autorización 2

Al igual que en el Escenario de ataque 1, algunos controles de acceso devueltos por las API se procesaron en el lado del cliente.

Las siguientes dos figuras son un ejemplo de una llamada API y los permisos devueltos al cliente. Tenga en cuenta que se han eliminado los valores de evaluación y sesión.

Petición:

GET /api/user-access/groups?assessment=[base64] HTTP/1.1
Host: portal.riscnetworks.com
Cookie: PHPSESSID=x; AWSELB=x; AWSELBCORS=x; fingerprint=x
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: */*
Referer: https://portal.riscnetworks.com/app/user-access/
Connection: close

Respuesta:
HTTP/1.1 200 OK
Date: Wed, 06 Oct 2021 21:25:52 GMT
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate
Content-Type: application/json
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Length: 365
Connection: close
{“success”:true,”result”:{“status”:”success”,”meta”:null,”result”:[{“id”:2,”title”:”read only”,”permission”:{“appliance”:[“read”],”cloudcost”:[“read”],”stack”:[“read”],”query”:[“read”],”rule”:[“read”],”scorecard”:[“read”],”assessment”:[“read”],”license”:[“read”],”migration”:[“read”],”location”:[“read”],”tag”:[“read”],”export”:[“read”],”user”:[“write”,”read”]}}]}}

En lugar de cambiar los valores en localStorage, Burp Proxy se usa para forzar respuestas de "escritura" y "lectura", y la aplicación proporciona acceso adicional no autorizado a la funcionalidad de la aplicación. El escenario completo de profundidad y ataque no se documentó aquí porque ya se logró un acceso no autorizado anterior. Para ver la coincidencia/reemplazo de Burp Proxy en acción con más detalles, consulte CVE-2021-41527: Flexera: omisión de autenticación de múltiples factores (MFA) .

Burp> Proxy> Opciones> Igualar y reemplazar

Referencias

Calculadora del sistema de puntuación de vulnerabilidad común:
https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N/E:F/RL:O/RC:C/CR:M/IR:X/AR:X/MAV:N/MAC:L/MPR:L/MUI:N/MS:C/MC:H/MI:L/MA:N&version=3.1

PortSwigger — Eructar: https://portswigger.net/burp/documentation/desktop/tools/proxy

Aviso de la plataforma RISC de Flexera: https://community.flexera.com/t5/Foundation-CloudScape-Release/RISC-Platform-Security-Related-Fixes/ba-p/224887

NIST-NVD:
https://nvd.nist.gov/vuln/detail/CVE-2021-41528

© Copyright 2021 - 2022 | unogogo.com | All Rights Reserved