La línea de productos NAS son los Seagate Business Storage, específicamente diseñados para su uso tanto en hogares como en pequeñas empresas y oficinas y que ahora se han visto afectados por un grave fallo de seguridad en su firmware que permitiría a un atacante remoto la ejecución de código sin necesidad de autenticación en el dispositivo.
Firmware y software afectados
Los productos de esta línea que tienen hasta la versión
2014.00319 (inclusive) tienen una serie de fallos que los hacen vulnerables a
estos ataques de ejecución de código remoto. Los Seagate NAS incorporan un menú
web desde donde podremos administrar y gestionar todos los aspectos del
servidor NAS, podremos incorporar nuevos usuarios, aplicar políticas de control
de acceso, gestionar ficheros y muchas otras acciones. El menú web está
compuesto por lo siguiente:
- PHP version 5.2.13 (Released 25th February 2010)
- CodeIgniter 2.1.0 (Released 23rd November 2011)
- Lighttpd 1.4.28 (Released 22nd August 2010)
Todas estas versiones que Seagate NAS utiliza están
actualmente muy desactualizadas y vulnerables a una gran cantidad de ataques
que se han ido conociendo a lo largo del tiempo. A las vulnerabilidades
localizadas en los Seagate NAS se les ha identificado con los siguientes CVE:
- CVE-2014-8684
- CVE-2014-8686
- CVE-2014-8687
La aplicación web que da acceso a la administración no
mantiene la información de la sesión en el propio servidor web, de esta forma
toda la información relevante como por ejemplo la sesión del usuario es
almacenada en una cookie que se cifra y se envía directamente al navegador.
Esta cookie contiene una gran cantidad de clave/valor incluyendo las
siguientes:
- username: El nombre de usuario de la sesión actual.
- is_admin: Booleano indicando si el usuario anteriormente mencionado es administrador del NAS o si no lo es.
- language: Idioma que tiene el menú web actualmente.
El hecho de que la llave de cifrado sea estática para las
sesiones, hace que si un usuario tiene una cookie de sesión válida, podría
aplicar esta cookie a cualquier sesión y conseguir privilegios de
administrador. El parámetro “language” es usado para generar una ruta a fichero
que se referencia en la aplicación PHP a través de la llamada a la función
include(), manipular este parámetro permitiría a un atacante la explotación de
una vulnerabilidad de inclusión de archivo local. Finalmente, la aplicación web
de los Seagate NAS funciona a través de una instancia de Lighttpd que se
ejecuta bajo el usuario root, por lo que cualquier explotación del servidor web
nos daría acceso al sistema a través de root.
Exploits disponibles
Actualmente ya se encuentran disponibles diferentes exploits
para la ejecución de código como usuario root, de hecho ya se ha incorporado
esta funcionalidad en Metasploit y también se ha hecho un script en Python para
automatizar todo el proceso.
- Módulo Metasplout en Github. https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/seagate_nas_php_exec_noauth.rb
- Script en Python en Exploit DB. http://www.exploit-db.com/exploits/36202/
Recomendación
- Actualmente Seagate no ha lanzado una actualización de su sistema operativo para solucionar estos errores, por tanto las acciones que deberá hacer el usuario para protegerse son:
- Deshabilitar el acceso remoto a la administración del NAS a través de Internet.
- Configurar un firewall o crear una ACL para permitir que sólo direcciones IP de confianza puedan hacer login al equipo.
- Os recomendamos acceder a Beyond Binary donde conoceréis los detalles técnicos para explotar esta vulnerabilidad e información adicional sobre los fallos de seguridad.