ACTUALIZACIÓN 13/03/2023 22:52 hora del Este: Después de hacer un inventario más detallado de los detalles del binario del servicio Veeam de nuestro socio para revisar el número de versión, descubrimos muchos más endpoints sin parchar y vulnerables. Estamos enviando informes de incidentes a todos los socios afectados y haciendo llamadas telefónicas directas cuando Veeam está expuesto públicamente en internet.
El 7 de marzo de 2023, Veeam publicó un artículo de la base de conocimientos que describe CVE-2023-27532, una vulnerabilidad en el componente Veeam Backup & Replication que permitía a un usuario no autenticado recuperar credenciales de endpoints almacenadas en la base de datos de configuración.
Esta debilidad podría finalmente permitir que un atacante obtenga acceso a endpoints y dispositivos administrados por el servidor de Veeam Backup. Con acceso al puerto TCP abierto 9401, cualquier persona podía obtener credenciales y potencialmente moverse lateralmente por la red con los nombres de usuario y contraseñas recién expuestos. Cualquier versión de Veeam Backup & Replication anterior a V12 (compilación 12.0.0.1420 P20230223) y V11a (compilación 11.0.1.1261 P20230227) es vulnerable.
Con una calificación de severidad alta y una puntuación CVSS de 7.5, esta vulnerabilidad apareció en titulares, medios de noticias y recibió un mayor escrutinio por parte de investigadores de seguridad.
Si no conoces tu versión de Veeam ni el número de compilación, las siguientes líneas de PowerShell lo mostrarán.
Si el resultado no coincide con ninguno de los números de compilación mencionados anteriormente, [.underline]necesitas parchar[.underline].
$CoreDllPath = (Get-ItemProperty -Path "HKLM:\Software\Veeam\Veeam Backup and Replication\" | Select-Object -ExpandProperty CorePath) + "Veeam.Backup.Core.dll"$CoreDll = Get-Item -Path $CoreDllPath$CoreDll.VersionInfo.ProductVersion + " - " + $CoreDll.VersionInfo.Comments
Contacto
El equipo de Huntress identificó proactivamente a los socios que ejecutaban versiones vulnerables del software Veeam en servidores con un agente de Huntress y envió informes de incidentes con nombres de endpoints específicos e IDs de agente de Huntress. Si recibiste un informe por correo electrónico o integración con PSA, te recomendamos encarecidamente parchar y actualizar a la última versión disponible de Veeam lo antes posible.
Si no tienes un agente de Huntress instalado en todos los endpoints y no pudimos detectar tu instancia de Veeam, de todas formas te recomendamos parchar.
Los socios de Huntress con una instancia de Veeam expuesta públicamente y el puerto TCP 9401 abierto a internet recibieron una llamada telefónica directa para parchar urgentemente o bloquear las conexiones externas desde el firewall. (Francamente, fueron casos de un solo dígito.)
De nuestra base de instalación de 2 millones, descubrimos más de 7.500 endpoints con una versión vulnerable del servicio Veeam Backup & Replication presente.
Investigación
Tras el aviso inicial de esta nueva vulnerabilidad de Veeam, aún no existía un exploit de prueba de concepto disponible públicamente o estandarizado. Al momento de escribir esto, Huntress no ha observado ninguna explotación en el mundo real.
Sin embargo, el 9 de marzo, los investigadores de Huntress se enteraron de una publicación en Twitter de Code White GmbH.
CVE-2023-27532 in Veeam Backup & Replication is serious, expect exploitation attempts soon. Our teammate @mwulftange was able to develop an exploit just by using the exposed API. pic.twitter.com/86EmYT5zjP
— CODE WHITE GmbH (@codewhitesec) March 9, 2023
CVE-2023-27532 in Veeam Backup & Replication is serious, expect exploitation attempts soon. Our teammate @mwulftange was able to develop an exploit just by using the exposed API. pic.twitter.com/86EmYT5zjP
Markus Wulftange, un investigador con quien ya hemos trabajado antes, había creado un exploit de prueba de concepto para demostrar tanto la simplicidad del vector de ataque como el impacto potencial. Los nombres de usuario y contraseñas se obtuvieron y descifraron fácilmente, y esta técnica solo requería acceso a la API expuesta del componente Veeam Backup & Replication (Veeam.Backup.Service.exe).
Al ver el impacto tangible, los investigadores de Huntress se pusieron a trabajar para recrear la prueba de concepto y evaluar cómo esto podría afectar a nuestros socios. Nos pusimos en contacto con Code White GmbH para conversar más a fondo y siempre agradecemos su transparencia y apoyo al compartir información. Logramos recrear con éxito la prueba de concepto y pudimos extraer credenciales de inicio de sesión.
Detalles técnicos
La explotación se logra al interrogar la API local, servida en el puerto 9401 y escuchando en todas las interfaces (0.0.0.0) de forma predeterminada.
La implementación de esta API es específica del servidor Veeam Backup & Replication. Después de configurar un cliente para comunicarse con esta API, consultar las credenciales es trivial. Las credenciales están inicialmente cifradas, pero una llamada separada a la API puede descifrarlas fácilmente a su valor original en texto plano. No se crean procesos secundarios, ni quedan artefactos en el sistema de archivos o el registro.
Con la configuración predeterminada del servidor Veeam Backup & Replication, no quedan registros relacionados con este ataque. Los registros específicos para la API se pueden configurar con los cambios de registro que se explican en la sección Indicadores de compromiso más abajo.
Nuestra prueba de concepto
El investigador de Huntress Caleb Stewart recreó la prueba de concepto para demostrar cómo recuperar credenciales de una instancia vulnerable del servidor Veeam Backup & Replication. Todas nuestras pruebas de la vulnerabilidad y la explotación se realizaron contra la instalación provista por el archivo ISO VeeamBackupReplication_11.0.1.1261_20211123.iso (SHA256: 0dcebe370ec61bd817ebeadcc827f7aadac3e5011f7a4e5967c50df85380074c)
El siguiente video muestra el trabajo de Caleb para filtrar y descifrar credenciales mediante CVE-2023-27532:
Con esta prueba de concepto, el equipo de Huntress pudo detectar y verificar de forma segura y rápida instancias vulnerables expuestas públicamente, sin necesidad de explotarlas. Esto nos permitió generar informes más precisos para los socios y determinar con qué urgencia debían reaccionar y responder.
Además, el equipo de Huntress descubrió otras posibles llamadas a la API que podrían usarse como arma. Pudimos ampliar aún más nuestra prueba de concepto para lograr ejecución arbitraria de código.
Si bien el volcado de credenciales sin autenticación actúa como un vector para movimiento lateral o posexplotación, la vulnerabilidad en cuestión también puede usarse para ejecución remota de código sin autenticación, convirtiendo la instancia vulnerable de Veeam en un vector para acceso inicial o mayor compromiso.
El parche resuelve ambos problemas: el volcado de credenciales sin autenticación y la ejecución remota de código.
El siguiente video muestra una demostración de un servidor de Veeam Backup & Replication explotado para ejecutar comandos arbitrarios:
Dado que aún no se ha compartido públicamente ninguna prueba de concepto en línea y no se ha observado explotación activa, estamos reteniendo los detalles técnicos específicos que podrían permitir a los adversarios o actores de amenazas crear estas técnicas.
Validación del parche
El parche oficial y la actualización de seguridad de Veeam corrigen con éxito CVE-2023-27532 y otros vectores de ataque sin autenticación contra la API.
Las versiones del servicio Veeam Backup & Replication V12.0.0.1420 P20230223 y V11.0.1.1261 P20230227 realizan cambios en el código base subyacente para exigir un token de autenticación en todas las solicitudes a la API.
Esto se logra con un JSON Web Token (JWT) firmado con un certificado único específico de la instalación de Veeam Backup & Replication. Los tokens vacíos o inválidos provocan una excepción de acceso y no permiten obtener información ni realizar cambios.
Indicadores de compromiso
Si bien no se crean procesos secundarios tras la explotación, se generan registros en C:\ProgramData\Veeam\Backup\Svc.VeeamBackup.log. Sin embargo, por defecto, el registro no está configurado para incluir llamadas a la API.
Sin cambiar manualmente el nivel de registro, el archivo Svc.VeeamBackup.log no mostrará ninguna entrada relacionada con la técnica de ataque.
Por defecto, el valor del registro de Windows HKLM\Software\Veeam\Veeam Backup and Replication\LoggingLevel está configurado con el valor DWORD de 4. Para observar las llamadas a la API, este valor debe configurarse en 7.
Los siguientes comandos, ejecutados desde una ventana de PowerShell como administrador, configurarán el registro para capturar las llamadas a la API:
Sin compartir los métodos específicos de la API, las entradas de registro pertinentes se ven así después de nuestra explotación de prueba de concepto:
El aviso oficial de la base de conocimientos de Veeam explica que estas credenciales están cifradas, lo cual es cierto: el administrador de la base de datos no devuelve credenciales en texto plano, pero sí devuelve valores cifrados y el UUID de cada cuenta.
Una vez obtenidos los identificadores de cuenta, se pueden hacer más llamadas a la API para descifrar las credenciales y obtener una simple codificación en Base64 del valor original en texto plano.