jueves, 21 de septiembre de 2017

Múltiples vulnerabilidades en Samba

Se han confirmado tres vulnerabilidades en las versiones de Samba anteriores a la 4.4.16, 4.5.14 y 4.6.8, que podrían permitir a un atacante remoto secuestrar una conexión samba y acceder a información sensible a través de ataques de hombre en el medio.




Samba es un software libre que permite acceder y utilizar archivos, impresoras y otros recursos compartidos en una intranet o en Internet utilizando el protocolo de Microsoft Windows. Está soportado por una gran variedad de sistemas operativos, como Linux, openVMS y OS/2. Está basado en los protocolos SMB (Server Message Block) y CIFS (Common Internet File System).

La primera vulnerabilidad, etiquetada con CVE-2017-12150, permitiría a un atacante remoto realizar ataques 'man in the middle' y obtener información sensible aprovechando que algunos mensajes 'SMB' se transmiten sin firmar:

  • En el cliente samba, cuando se utiliza el parámetro '-e' para cifrar la conexión con el servidor, no se asegura la negociación de la firma para los comandos 'smb2mount -e', 'smbcacls -e' y 'smbcquotas -e'. Este fallo tiene relación con la vulnerabilidad CVE-2015-5296, corregida de forma incompleta en las versiones de Samba posteriores a la 3.2.0 y 4.3.2.
  • El componente 'samba.samba3.libsmb_samba_internal' para la librería de Python no tiene en cuenta la opción 'client signing' del fichero de configuración 'smb.conf' y envía los mensajes sin firmar.
  • La librería 'libgpo' tampoco fuerza la firma cuando hace una consulta de las políticas de grupo.
  • Las herramientas 'smbclient', 'smbcacls' y 'smbcquotas' permiten conexiones anónimas en caso de fallo cuando se utiliza el parámetro '--use-ccache'.

El siguiente fallo (CVE-2017-12151) permitiría a un atacante remoto leer y alterar documentos a través de un ataque 'man in the middle' debido a que no se mantiene el cifrado cuando se realizan redirecciones 'DFS' (en un sistema de archivos distribuido) con conexiones de tipo 'SMB3'. Este error se ha corregido en las versiones 4.6.8, 4.5.14 y 4.4.16 de Samba.

La útima vulnerabilidad corregida (CVE-2017-12163) permitiría a un cliente con permisos de escritura volcar el contenido de la memoria del servidor en un fichero o en una impresora. Esto es debido a que no se comprueba correctamente el rango de datos que envía el cliente, lo que podría provocar que el servidor completara la operación de escritura con datos almacenados en la memoria. Estos fallos han sido corregidos en las versiones de Samba posteriores a la 4.6.8, 4.5.14 y 4.4.16.

Se han publicado parches para solucionar estas vulnerabilidades en
http://www.samba.org/samba/security/



Francisco Salido
fsalido@hispasec.com

Más información:

SMB1/2/3 connections may not require signing where they should
https://www.samba.org/samba/security/CVE-2017-12150.html

SMB3 connections don't keep encryption across DFS redirects
https://www.samba.org/samba/security/CVE-2017-12151.html

Server memory information leak over SMB1
https://www.samba.org/samba/security/CVE-2017-12163.html


miércoles, 20 de septiembre de 2017

¿Es OptionsBleed el nuevo HeartBleed?

El investigador independiente Hanno Böck ha descubierto una vulnerabilidad en los servidores web Apache que permite el filtrado de fragmentos de memoria arbitrarios. Un comportamiento que nos recuerda a HeartBleed, famosa vulnerabilidad en OpenSSL de 2014.


Imagen tomada de The Fuzzing Project

Precisamente por este parecido la vulnerabilidad ha sido bautizada como OptionsBleed, también en honor al método OPTIONS de HTTP. Este es utilizado por un cliente web para recibir información sobre los métodos soportados por el servidor. Una petición OPTIONS normal debería devolver una respuesta de la forma:


Respuesta de una petición OPTIONS.

Pero, durante una investigación sobre los sitios con mayor posición de Alexa, Böck descubrió algunas respuestas a OPTIONS bastante peculiares. Los métodos se repetían, aparecían vacíos, y en algunas cabeceras se devolvía algo parecido a una fuga de memoria:


Respuesta OPTIONS de un servidor vulnerable.

Este comportamiento le hizo sospechar. Aunque no conocía el software especifico que devolvía estas respuestas, encontró fugas con fragmentos de configuraciones que parecían pertenecer a servidores Apache, y se puso en contacto con el equipo de desarrollo, que 
finalmente confirmaron la vulnerabilidad. 

Este error ha sido identificado como CVE-2017-9798 y ya existen parches para la mayoría de las versiones de Apache Web Server en Linux.


Teoría y práctica


Explotar OptionsBleed en teoría es sencillo: solo hay que realizar una petición OPTIONS al servidor para disparar la vulnerabilidad. En la práctica, la vulnerabilidad no es determinista, es decir, no devuelve siempre el mismo resultado dados los mismos datos de entrada. Por ello su reproducción es difícil.

Se sabe con seguridad que la vulnerabilidad es causada por un fallo en la implementación de la directiva Limit. Los métodos disponibles en el servidor (aquellos que la respuesta de OPTIONS comunica) se pueden establecer a nivel global en la configuración. Usando Limit, además, se puede limitar su uso por recurso, usando un fichero .htaccess.


Sintaxis de una directiva Limit.

El problema ocurre cuando establecemos una directiva Limit sobre un método que no hemos registrado en la configuración global. Es más, en general cualquier método no valido sobre el que se define esta directiva directiva en un fichero .htaccess provoca la fuga de información.

Aun localizado el problema, se deben dar ciertas condiciones para su explotación, y los detalles son bastante vagos. Según Böck en el FAQ de la vulnerabilidad:

Debido a su naturaleza, el fallo no aparece de forma determinista. Parece que solo se da en servidores ocupados. A veces aparece tras varias peticiones.

OptionsBleed no es HeartBleed


Más allá del parecido en el comportamiento, hay varias diferencias que hacen a OptionsBleed bastante menos peligroso que HeartBleed, la famosa vulnerabilidad en OpenSSL aparecida en 2014 con la que se le está comparando.

Por un lado, la superficie de exposición es menor. OptionsBleed solo afecta a servidores Apache Web Server. Por su parte HeartBleed afectaba a todo servidor con versiones de OpenSSL vulnerables, sin distinción entre web, email, o VPN. 

Además, es necesario tener una cierta configuración y que el servidor se encuentre en condiciones específicas para la explotación. Hay que tener en cuenta que en el estudio se ha conseguido explotar la vulnerabilidad en solo 466 servidores entre el Top 1 millón de Alexa. Además, de ser explotada, OptionsBleed devuelve un fragmento de menor longitud que HeartBleed.

Sin embargo, tiene un riesgo añadido: en servidores Apache compartidos, un usuario puede incluir un fichero .htaccess manipulado para facilitar deliberadamente la explotación y descubrir secretos del resto de usuarios.

Pero hay algo que sí tiene en común: pasaron desapercibidos durante bastante tiempo.



Francisco López
@zisk0
flopez@hispasec.com

Más información:



OpenSSL afectada por una vulnerabilidad apodada HeartBleed