¿Cuál es el problema?
El 9 de julio, SolarWinds publicó un aviso sobre una vulnerabilidad crítica en Serv-U (CVE-2021-35211) que les fue comunicada por Microsoft. Según Microsoft, en una entrada de blog del 13 de julio, el problema está siendo explotado activamente. La vulnerabilidad está presente en el componente SSH de Serv-U, que se utiliza para transferencias seguras mediante SCP.
SolarWinds ha publicado un hotfix para el problema, que está disponible para los clientes con licencia en su portal de soporte.
Un análisis de Internet
Censys puede ver más de 8.300 supuestos servicios SSH de SolarWinds expuestos a Internet, basados en una huella digital de banner SSH. Un buen número de ellos se encuentran en China y Estados Unidos:
En el momento de escribir estas líneas, varios servicios pertenecían también a gobiernos estatales y locales con sede en Estados Unidos.
Claves de cifrado compartidas para SSH
Mientras investigaba el problema, Censys descubrió otra rareza con los hosts Serv-U: Con frecuencia presentan la misma clave de host SSH. Al principio esto nos dejó perplejos, ya que los hosts están repartidos por un conjunto diverso de redes (sin puntos en común obvios). Cuando las claves de host se intercambian con múltiples entidades, son efectivamente públicas y permiten suplantar la identidad de los servidores. Un ataque realista es difícil de llevar a cabo, aunque en teoría alguien podría capturar y descifrar el tráfico SSH/SCP si se encuentra en un lugar privilegiado de la red y puede interponerse en una conexión.
Un informe de Censys de nuestra plataforma de búsqueda muestra que hay muchos hosts que comparten la misma clave de host que coincide con un banner SSH de Serv-U:
En el momento de escribir esto, 4.344 hosts en Internet comparten la misma clave de host SSH 53b8131ea00459671cf6ce1169a7c5bacec88ec76fa9b77fdc84bc26e8a1df2b. Esto es similar al problema de Western Digital sobre el que informó Censys con Dan Goodin de Ars: Los hosts que comparten el mismo material de cifrado son más fáciles de identificar y corren el riesgo de filtrar información por cable.
Investigar el motivo del uso compartido de claves
Para entender en este caso por qué ocurría esto, Censys descargó e instaló una versión de prueba de Serv-U, y echó un vistazo al contenido de la instalación. Resulta que hay un certificado por defecto y una clave privada que se incluye con el instalador y que parece que se utiliza en muchas instalaciones de todo el mundo. Podemos volcar la suma sha256 de la clave host del certificado por defecto y validarlo:
# pwd
/usr/local/Serv-U
# ls *.crt *.key
Serv-U-DefaultCertificate.crt Serv-U-DefaultCertificate.key
# ssh-keygen -l -f /dev/stdin <<< $(ssh-keygen -i -m PKCS8 -f /dev/stdin <<< $(openssl x509 -pubkey -noout -in Serv-U-DefaultCertificate.crt)) | awk '{print $2 "="}' | cut -c 8- | base64 -d | xxd -p | tr -d '\n' && echo
e9d8efd43200bf3780c3bff6e45601e69f05089c93a1ff36fc2e552a5da3b935
Podemos ver que la clave e9d8efd43200bf3780c3bff6e45601e69f05089c93a1ff36fc2e552a5da3b935 aparece como la segunda huella digital de clave de host reutilizada más popular en la tabla anterior. En el momento de escribir este artículo, Censys la búsqueda muestra 928 dispositivos que utilizan las claves de host de envío actuales (por huella digital) en el instalador de SolarWinds Serv-U. Aunque esto es principalmente un problema de configuración del usuario, SolarWinds tiene cierta responsabilidad, y puede aliviar esto mediante la generación de nuevos certificados en el arranque, o cuando se realiza una nueva instalación. Estos certificados son simplemente autofirmados.
Sin embargo, podemos ir un poco más allá y eliminar el componente de banner SSH mencionado anteriormente cuando busquemos hosts Serv-U expuestos. Si hacemos esto, y buscamos simplemente en la huella digital de la clave del host, acabaremos encontrando muchos más hosts. Esto significa que algunos hosts han ocultado Serv-U en su información de banner. Estos hosts suelen responder con un banner parecido a "SSH-2.0-2.0", en lugar de un banner parecido a "SSH-2.0-Serv-U_###" (donde ### es una versión). Comparando esta búsqueda con la anterior, encontramos 1.311 hosts que utilizaban las claves de host de envío, es decir, 383 hosts más de los que encontramos anteriormente cuando incluimos el filtro de banner SSH de Serv-U.
Es más que SSH
Mientras investigábamos las claves de host compartido, decidimos indagar un poco más en si había algún otro servicio compartido que también utilizara el certificado (archivo .crt). Si volcamos los detalles de este certificado, obtenemos información interesante:
$ openssl x509 -noout -text -in Serv-U-DefaultCertificate.crt -fingerprint -sha256
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = US, ST = WI, L = Helenville, O = "Rhino Software, Inc.", OU = Software Development, CN = ftp.Serv-U.com
Validity
Not Before: May 13 17:27:39 2020 GMT
Not After : May 11 17:27:39 2030 GMT
Subject: C = US, ST = WI, L = Helenville, O = "Rhino Software, Inc.", OU = Software Development, CN = ftp.Serv-U.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:b1:71:4f:17:61:bb:11:b2:91:94:24:96:6f:72:
89:8b:f5:eb:af:12:1a:a5:c1:35:d5:18:70:51:bc:
ae:6c:1c:71:8c:8e:3d:fb:71:e3:d2:c2:cc:79:52:
c6:05:2e:8a:aa:c8:a7:27:b9:ef:c6:93:ff:c1:53:
05:00:4a:2a:41:e1:36:8b:de:08:71:7b:aa:86:17:
f2:cd:27:92:a6:ac:69:ea:8c:f2:9c:92:b4:c3:7e:
ea:d3:d2:c7:20:0d:00:76:42:2f:66:8c:ae:ce:88:
51:6b:a4:d3:45:c5:e9:72:e9:d2:43:e7:dc:5e:15:
ad:6e:57:d9:54:ea:9e:df:ea:41:e7:5c:0f:64:c7:
9e:b5:62:48:48:4f:00:d6:bc:f3:93:3c:17:d8:c5:
3e:22:d5:a0:5e:66:74:be:9a:62:40:0a:a0:30:34:
04:c0:48:e8:c9:3d:76:81:87:f1:54:41:a3:d8:ba:
6d:5a:c6:b5:dc:ff:bb:46:04:1c:0d:df:35:d6:f1:
b9:c5:5b:a0:ee:4f:ca:3d:ef:0c:f2:fe:fe:f3:16:
0e:8e:a1:6f:f6:08:27:45:f3:5e:b6:16:52:b7:d7:
c8:0e:8a:d6:ec:48:b6:54:f7:d7:f9:b8:e2:f1:3f:
b5:77:d5:ab:00:04:45:7d:df:79:42:7b:31:7f:02:
3d:73
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
5b:75:e7:49:03:35:f6:03:94:fc:d5:9d:81:a6:f3:12:8f:81:
74:c8:89:7d:1f:f0:d2:ec:50:f2:b1:18:be:53:ea:68:9d:7f:
63:29:56:4f:f3:12:23:15:da:52:ae:0d:e0:c1:e5:5c:c3:c4:
56:df:4c:c0:56:5b:2b:02:b9:a5:93:bc:c3:7d:c9:74:1a:22:
61:c3:42:42:62:ea:91:bc:81:5f:ee:8c:fc:18:bb:1a:d2:ea:
06:9e:a7:e2:06:17:af:61:6e:57:7a:49:fd:a7:2b:38:b1:53:
26:d1:be:9d:e8:f5:26:3c:fa:18:c6:2b:35:ee:b8:f5:a5:d0:
97:86:cb:ff:17:40:38:9e:40:34:18:73:ff:7b:80:f9:69:64:
03:f6:07:b9:4d:76:48:a6:aa:07:f5:ce:fb:cd:0d:e5:d5:7a:
2c:94:8a:cf:b7:bc:0a:20:4c:da:72:db:a6:5b:ed:26:a0:c0:
d7:0c:21:1c:0f:3e:80:96:e2:30:80:dd:9f:2b:b2:e2:63:a1:
f4:83:02:b2:c6:4c:bd:58:a2:c0:55:68:99:26:c9:18:ab:79:
bf:10:1b:06:37:9f:eb:e2:1d:9e:3c:5c:67:18:8f:56:65:6d:
a3:fe:cd:fa:0d:7f:0d:69:67:ae:da:db:18:7b:58:49:5d:19:
5f:3c:37:f9
SHA256 Fingerprint=C2:AE:DB:13:CC:A1:37:9A:F5:7C:4E:09:A8:7F:20:ED:34:69:49:20:34:A6:B8:A0:FB:8E:26:D0:44:80:84:79
La huella digital única del certificado parece interesante. ¿Podemos encontrar otros servicios en Internet mediante la búsqueda en Censys que compartan esta huella digital? Resulta que sí. Buscando en la huella digital del certificado, podemos encontrar 3.293 hosts que utilizan este certificado en FTP, HTTP y SMTP. Estos son servicios adicionales que Serv-U utiliza para la transferencia, y todos ellos están igualmente en riesgo.
¿Qué importancia tiene?
Según Microsoft, "si el SSH de Serv-U se expone a Internet, una explotación exitosa daría a los atacantes [la] capacidad de ejecutar remotamente código arbitrario con privilegios, lo que les permitiría realizar acciones como instalar y ejecutar cargas útiles maliciosas, o ver y cambiar datos". Microsoft sigue atribuyendo la campaña de explotación activa a un grupo al que se refieren como DEV-0322, con base en China. Este grupo se ha dirigido principalmente a empresas estadounidenses de defensa y software, según la entrada de su blog.
Hay miles de hosts SolarWinds Serv-U expuestos a Internet. Estos hosts son fácilmente descubribles porque todos comparten características comunes (claves de host, así como banners). Además, el descubrimiento de las miles de claves SSH por defecto significa que miles de hosts Serv-U tienen un cifrado frágil. Como dijo HD Moore, "en ese punto es básicamente telnet". Está claro que el problema notificado por Microsoft tiene un impacto de gran alcance si nos basamos en el recuento de hosts Serv-U de cara al público. Inevitablemente aparecerá un exploit a medida que los investigadores difundan de forma binaria el parche para ver qué han solucionado los investigadores de SolarWinds. Es importante que las organizaciones parcheen rápidamente este problema para evitar una brecha, ya que los hosts Serv-U son fácilmente detectables.
¿Qué hago al respecto?
- Aplique 15.2.3 HF2 (hotfix 2) desde el portal de clientes de SolarWinds (o bloquee el acceso a Internet) para eliminar CVE-2021-35211.
- Cambie las claves de cifrado de Serv-U si utiliza el certificado predeterminado (no está relacionado con CVE-2021-35211, pero es una buena práctica si utiliza claves predeterminadas).
- Realice un análisis forense en cualquier host Serv-U que haya expuesto SSH a Internet.
- Censys ASM puede ayudarle a identificar fácilmente cualquier host que utilice el certificado Serv-U FTP/HTTPS/SMTP predeterminado y cerrarlo. Además, puede ver todos los hosts que ejecutan SSH en su entorno, identificar Serv-U y cerrar cualquier servicio Serv-U SSH/SCP expuesto. El inventario de software de Censys ASM también puede ayudarle a identificar fácilmente el software en su superficie de ataque.
Recursos