Mucho se está hablando desde hace un par de días de Shellshock, una grave vulnerabilidad en Bash. No obstante, la mayoría de usuarios no han oído hablar nunca de Bash ni saben cómo se usa o qué implicaciones tiene este fallo en los sistemas que usan a diario.
Es por eso que hemos preparado este post, para tratar de responder a las preguntas que muchos usuarios se estarán haciendo en estos momentos y empezando por lo más básico.
¿Qué es Bash?
Bash es el intérprete de comandos más utilizado en GNU/Linux y muchos otros sistemas basados en UNIX como Android y Mac OS X. Su tarea consiste en interpretar los comandos que un usuario ejecuta, iniciando y deteniendo procesos, por ejemplo. Así es como los administradores de sistemas manejan habitualmente sus servidores, aunque sin dejar de lado a la siempre cómoda interfaz gráfica a base de ventanas.
No obstante, Bash es mucho más que un simple intérprete de comandos. También permite ejecutar operaciones en un servidor GNU/Linux que podríamos considerar como críticas, operaciones que van desde la planificación de tareas a las siempre necesarias actualizaciones del sistema y sus aplicaciones.
¿Que dispositivos utilizan Bash?
Como parte de muchos sistemas basados en UNIX, Bash está presente en una gran cantidad de dispositivos que utilizamos a diario, no solamente servidores y ordenadores de escritorio o portátiles (ya utilicen alguna distribución de GNU/Linux o Mac OSX). Pensemos por ejemplo en los millones de dispositivos Android. También se puede usar un intérprete de comandos en ellos aunque es algo que pocos usuarios hacen.
Si tenemos en cuenta otros dispositivos como los routers o todo tipo de dispositivos que conforman el conocido como “Internet de las cosas”, el número de estos aumenta hasta una cantidad muy elevada. Sistemas de entretenimiento, Smart TVs, electrodomésticos como neveras o incluso sistemas domóticos suelen incorporar como sistema operativo alguna variante de UNIX que normalmente contiene Bash.
¿En qué consiste la vulnerabilidad Shellshock?
Primero vamos a aclarar que el nombre oficial de esta vulnerabilidad es GNU Bash Remote Code Execution Vulnerability (CVE-2014-6271) y está considerada como grave, tal y como sucedió con Heartbleed, ya que permitiría la ejecución remota de código y así obtener el control de un ordenador.
El problema con esta vulnerabilidad se viene produciendo porque Bash permite declarar funciones (algo que tampoco es extraño y entra dentro de lo normal) pero estas no se validan de forma correcta cuando se almacenan en una variable. Traducido para gente profana en la materia: Bash se pasa de la raya, extralimita sus funciones y sigue ejecutando código a pesar de haber finalizado de procesar la función.
¿Se puede utilizar esta vulnerabilidad con fines maliciosos?
Todas las vulnerabilidades pueden usarse con fines maliciosos en mayor o menor medida. En estos momentos nos encontramos en la fase de averiguar qué puede romperse con Shellshock. Ya sabemos que aquellos scripts CGI corriendo en Apache pueden verse afectados, pero en teoría también pueden crearse muchos otros exploits que podrían ser aprovechados por atacantes y ser incluidos en kits de exploits.
Desde Alien Vault han empezado a observar ataques que intentan aprovechar esta vulnerabilidad, principalmente ataques que intentan detectar si un sistema es vulnerable lanzado un comando ping y esperando la respuesta. No obstante, también han observado que algunos atacantes están usando Shellshock para instalar dos tipos de código malicioso en los sistemas vulnerables.
Estas primeras muestras de malware se centran en recopilar información de los sistemas infectados pero también los conectan a un centro de mando y control en poder de los atacantes, permitiéndoles lanzar comandos remotos y probar un ataque de fuerza bruta contra las contraseñas de usuarios con privilegios y obtener así el control del sistema.
Este es solo un ejemplo de ataques que ya se están produciendo, pero solo son la punta del iceberg de lo que podríamos ver en las próximas semanas si no se toman las medidas adecuadas.
¿Cómo se soluciona este problema?
Una vez conocida la vulnerabilidad y sus consecuencias, muchos usuarios estarán preguntándose cómo les afecta a ellos. Por si aún queda algún despistado que se lo pregunta, Windows no se ve afectado, pero esto no es excusa para bajar la guardia puesto que es muy probable que utilicemos algún otro dispositivo que sea vulnerable como routers, móviles Android u otro tipo de dispositivos conectados a Internet y de los cuales desconozcamos su sistema operativo aunque muy probablemente sea una variación de GNU/Linux o esté directamente basado en UNIX.
La mayoría de distribuciones importantes de GNU/Linux han lanzado o están a punto de lanzar actualizaciones tanto para sistemas de escritorio como servidores que solucionan el problema, por lo que, si nos encargamos de tener nuestros sistemas actualizados, no deberíamos tener mayores dificultades.
El verdadero problema radica en aquellos sistemas que no se actualizan, bien porque no hay nadie que los mantenga o porque se trata de sistemas incrustados en dispositivos que no están preparados para recibir actualizaciones o el fabricante ha dejado de publicarlas para ciertos modelos.
La mayoría de estos equipos están y seguirán estando conectados a Internet durante un buen tiempo, lo que les convierte en un objetivo muy atractivo para los delincuentes. En ese caso, como usuarios poco podemos hacer a menos que queramos dedicar horas de esfuerzo a revisar el firmware de nuestro router, por ejemplo, e instalar uno alternativo que sea compatible.
Conclusión
La publicación de esta vulnerabilidad ha servido para que una gran cantidad de usuarios cierren una puerta de entrada a los atacantes que llevaba mucho tiempo abierta. No obstante, queda aún por resolver la problemática sobre cómo actualizar los millones de dispositivos que conforman el “Internet de las cosas” y que seguirán siendo vulnerables durante mucho más tiempo.
ACTUALIZACIÓN (30/09/2014)
Apple ha liberado un parche para Bash contra Shellshock en OS X. El parche puede variar dependiendo de la versión de OS X que dispongas . Estos son los enlaces oficiales: