Un error crítico en SaltStack permite RCE y afecta a miles de centros de datos
El framework Salt de código abierto contiene vulnerabilidades de seguridad de alta gravedad que permiten ejecutar código arbitrario de forma remota con privilegios de root en servidores en centros de datos y entornos de nube. Se esperan ataques in-the-wild de forma inminente
El framework Salt de código abierto contiene vulnerabilidades de seguridad de alta gravedad que permiten la ejecución de código de forma remota como root en servidores en centros de datos y entornos de nube. Se esperan ataques in-the-wild de forma inminente.
Según los investigadores de F-Secure, el framework, creado por la empresa SaltStack pero utilizado también como herramienta de configuración para supervisar y actualizar el estado de los servidores, tiene un par de fallos en su protocolo de comunicaciones predeterminado, conocido como ZeroMQ.
Un fallo registrado como CVE-2020-11651 es un problema de desviación de la autenticación, mientras que CVE-2020-11652 es un fallo de desviación del directorio en el que la entrada no fiable (es decir, los parámetros en las solicitudes de red) no se limpian correctamente. Esto a su vez permite el acceso a todo el sistema de archivos del servidor, según los investigadores.
Los errores son especialmente peligrosos dada la topografía del framework.
«Cada servidor [gestionado por Salt] ejecuta un agente llamado ‘minion’, que se conecta a un ‘master’», explicó F-Secure, en un writeup el jueves. «Un master es una instalación de Salt que recopila informes de estado de los minions y publica mensajes de actualización sobre los que los minions pueden actuar».
Estos mensajes de actualización se utilizan generalmente para cambiar la configuración de una selección de servidores, pero también se pueden utilizar para enviar comandos a varios, o incluso a todos los sistemas gestionados, dijeron los investigadores. Así, un adversario puede comprometer al master para enviar comandos maliciosos a todos los demás servidores del clúster, todos al mismo tiempo.
Para comunicarse, el master utiliza dos canales ZeroMQ. Como explicó F-Secure, uno es un «servidor de solicitudes» donde los minions pueden conectarse para informar de su estado (o de la salida de los comandos). El otro es un «servidor de publicación» donde el master publica mensajes a los que los minions pueden conectarse y suscribirse.
La evasión de la autenticación puede lograrse porque la clase ClearFuncs procesa las peticiones no autenticadas y expone involuntariamente el «_send_pub()». Este es el método utilizado para poner en cola los mensajes del servidor de publicación master a los minions – y por lo tanto se puede utilizar para enviar comandos arbitrarios. Tales mensajes pueden ser usados para hacer que los minions ejecuten comandos arbitrarios como root.
Además, «la clase ClearFuncs también expone el método «_prep_auth_info()», que devuelve la clave de root usada para autentificar los comandos del usuario root local en el servidor master. Esta clave puede utilizarse entonces para llamar remotamente a los comandos administrativos en el servidor master. Esta exposición involuntaria proporciona a un atacante remoto no autenticado un acceso equivalente a root al servidor salt master«.
En cuanto a los directorios, el módulo «wheel» contiene comandos utilizados para leer y escribir archivos en rutas de directorios específicos.
«Las entradas de estas funciones se concatenan con el directorio de destino y la ruta resultante no se canoniza, lo que lleva a un escape de la restricción de la ruta pretendida», según el escrito. «El método get_token() de la clase sal.tokens.localfs (que se expone a peticiones no autenticadas de la clase ClearFuncs) no logra sanear el parámetro de entrada token que se utiliza como nombre de archivo, permitiendo… la lectura de archivos fuera del directorio previsto«.
El conjunto de estos errores permite a los atacantes «que pueden conectarse al puerto del servidor de peticiones para eludir todos los controles de autenticación y autorización y publicar mensajes de control arbitrarios, leer y escribir archivos en cualquier lugar del sistema de archivos del servidor maestro y robar la clave secreta utilizada para autenticarse en el maestro como root«, según la empresa.
Ataques en entornos reales
«Esperamos que cualquier hacker competente sea capaz de crear exploits 100% fiables en menos de 24 horas», dijeron los investigadores, citando la «fiabilidad y simplicidad» de la explotación.
Desafortunadamente, la firma también dijo que un análisis preliminar ha revelado más de 6.000 casos potencialmente vulnerables de Salt que han sido expuestos al público.
Los parches están disponibles en la versión 3000.2. Además, «añadir controles de seguridad de la red que restrinjan el acceso al maestro de la sal (siendo los puertos 4505 y 4506 los predeterminados) a los minions conocidos, también sería prudente, ya que los controles de autenticación y autorización proporcionados por Salt no son actualmente lo suficientemente robustos como para estar expuestos a redes hostiles», concluyó F-Secure.
Para detectar un compromiso, las cadenas ASCII «_prep_auth_info» o «_send_pub» aparecerán en los datos del puerto del servidor de solicitud (por defecto 4506).
También en el frente de detección, «los mensajes publicados a los minions se denominan ‘jobs‘ o trabajos, y se guardarán en el maestro (ruta por defecto /var/cache/salt/master/jobs/). Estos trabajos guardados pueden auditarse para detectar contenido malicioso o identificaciones de jobs (‘jids’) que parezcan fuera de lo normal», señaló F-Secure.
Más información:
Repositorio oficial
https://github.com/saltstack/salt
Protocolos de comunicación
https://docs.saltstack.com/en/getstarted/system/communication.html
Writeup de F-Secure
https://labs.f-secure.com/advisories/saltstack-authorization-bypass
CVEs en NVD
https://nvd.nist.gov/vuln/detail/CVE-2020-11651
https://nvd.nist.gov/vuln/detail/CVE-2020-11652
Noticias relacionadas en la red
https://threatpost.com/salt-bugs-full-rce-root-cloud-servers/155383/
Powered by WPeMatico