Daniel López Azaña

Tema

Social Media

Blog

GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Todavía sin solución la seria vulnerabilidad Shellshock en Bash que afecta a Linux, Unix y Mac OS X

GNU/Linux ,Noticias tecnología, Seguridad
Todavía sin solución la seria vulnerabilidad Shellshock en Bash que afecta a Linux, Unix y Mac OS X

Menos de dos días después de que fuera detectada una importante vulnerabilidad (CVE-2014-6271) que afecta a la shell Bash de Linux, Unix y Mac OS X, se ha publicado un parche que la soluciona sólo parcialmente, lo cual obligó a reportar una nueva vulnerabilidad (CVE-2014-7169), que es la que continúa pendiente de solución. Este fallo rápidamente ha cobrado un nombre más sencillo por el que se le recordará durante mucho tiempo: Shellshock , o también Shell Shock.

Antecedentes

El problema fue descubierto por Stephane Chazelas, un administrador de sistemas Unix y Linux de Akamai al detectar que introduciendo una cadena especialmente manipulada en la línea de comandos de la shell, en lugar de tratar dicha cadena como datos, Bash la interpreta erróneamente como un comando y ejecutará cualquier cosa que aparezca después de ella. Esto permite que cualquier asaltante pueda ejecutar comandos en nuestro servidor de forma arbitraria. Es cierto que no podrá hacerlo como root, pero hay muchas acciones nefastas que se pueden llevar a cabo sin privilegios de root.

Consecuencias

Veamos algunos de los ejemplos más críticos de vectores de ataque y sistemas que se pueden ver afectados:

  • Apache : los servidores Apache, que son los servidores web más extendidos de Internet, pueden verse afectados si usan mod_cgi o mod_cgid si alguno de esos scripts están escritos en Bash.
  • ForceCommand : esta vulnerabilidad también puede ser explotada para saltarse a ForceCommand en algunas configuraciones del demonio sshd. Se supone que ForceCommand limita la ejecución de código remoto, pero este fallo permite saltarse esta protección.
  • DHCP : el protocolo DHCP que permite que los ordenadores y dispositivos conectados a una red obtengan automáticamente su dirección IP y otra información necesaria para el correcto funcionamiento de dicha red, es otro servicio que se podría ver afectado según Red Hat, ya que como este protocolo permite al servidor DHCP pasar variables de entorno a sus clientes, un atacante podría conseguir que esas variables fueran interpretadas como comandos en lugar de como meros datos de configuración, lo cual permitiría atacar a cualquiera de los puestos de la red con sólo tomar el control del servidor, lo cual sería fatal en muchos casos, grandes empresas por ejemplo.
  • SSH : otro punto vulnerable a explotar es OpenSSH a través del uso de variables AcceptEnv, TERM y SSH_ORIGINAL_COMMAND. Una variable de entorno con nombre arbitrario puede incluir una función maligna capaz de explotar la vulnerabilidad y realizar un ataque a través de la red.
  • GIT : otros servicios como Git que ofrecen shells restringidas a sus usuarios podrían verse afectados por esta vulnerabilidad, que permitiría saltarse todas esas restricciones y tomar un completo control del servidor.

Teniendo en cuenta que Bash es uno de los intérpretes de comandos más extendidos, no hay duda de que más y más ejemplos de otros vectores de ataque irán surgiendo en los próximos días y semanas, por lo que aplicar una solución a este fallo cuanto antes se hace imprescindible para todos los administradores de sistemas afectados en todo el mundo.

Diagnóstico

Para comprobar si tu shell Bash es vulnerable a este problema ejecuta estos comandos:

~$ env x='() { :;}; echo vulnerable' bash -c "echo Test 1"
~$ env X='() { (a)=>\' sh -c "echo vulnerable"; bash -c "echo Test 2"

Si la salida de alguno de ellos (o de ambos) muestra la palabra vulnerable , efectivamente tu versión de Bash es vulnerable:

~$ env x='() { :;}; echo vulnerable' bash -c "echo Test 1"
vulnerable
Test 1
~$ env X='() { (a)=>\' sh -c "echo vulnerable"; bash -c "echo Test 2"
vulnerable
Test 2

El parche que soluciona este problema debe asegurarse de que no se permita ningún comando después del final de una función. Por tanto, si ejecutas el mismo comando en una versión parcheada de Bash deberías obtener una salida como la siguiente:

~$ env x='() { :;}; echo vulnerable'  bash -c "echo Test 1"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
Test 1

Solución

Si tu sistema es vulnerable la solución pasa por instalar la versión más reciente del paquete Bash, aunque como decía al principio, la solución publicada es sólo parcial. No obstante Red Hat aconseja aplicar el parche que soluciona la primera vulnerabilidad, ya que la segunda (CVE-2014-7169) no es tan seria:

Debian y Ubuntu
~# apt-get update && apt-get upgrade bash
Red Hat y CentOS
~# yum update bash

Enlaces de interés e información adicional

https://access.redhat.com/articles/1200223
https://access.redhat.com/articles/1212303
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169

Daniel López Azaña

Sobre el autor

Daniel López Azaña

Emprendedor tecnológico y arquitecto cloud con más de 20 años de experiencia transformando infraestructuras y automatizando procesos.

Especialista en integración de IA/LLM, desarrollo con Rust y Python, y arquitectura AWS & GCP. Mente inquieta, generador de ideas y apasionado por la innovación tecnológica y la IA.

Artículos relacionados

hot-button-ssh-command-widget-icon

Control remoto de Linux desde tu smartphone con botones y widgets SSH

En este artículo voy a hablar de una app para Android que es extremadamente útil para ejecutar comandos de forma remota en un ordenador Linux: Hot Button SSH Command Widget. Esta aplicación nos permitirá lanzar cómodamente cualquier comando que se nos ocurra en un ordenador remoto a través de SSH con sólo pulsar un botón en la pantalla de nuestro móvil o tablet, lo cual no sólo nos facilitará la automatización de tareas repetitivas, sino que además resulta muy interesante desde el punto de vista de la seguridad por los mismos motivos que expuse en mi artículo Desbloqueo automático de pantalla por proximidad de dispositivo Bluetooth, ya que nos permitirá por ejemplo bloquear y desbloquear la pantalla sin tener que escribir nuestra contraseña una y otra vez a la vista de otras personas.

15 de julio de 2017
Linux disk partition

La importancia de particionar correctamente un disco en Linux

Soy un firme defensor de la simplicidad y del principio de que menos es más, pero en cuanto a la seguridad y el rendimiento de los sistemas de información se refiere, debemos ser capaces de encontrar un equilibrio entre mantener las cosas sencillas y exponernos lo mínimo posible a potenciales amenazas al mismo tiempo que tratamos de obtener las máximas prestaciones de los elementos que configuran nuestro sistema.

15 de marzo de 2016
ASLR concept

Diferencias entre ASLR, KASLR y KARL

A raíz de la publicación de la noticia del lanzamiento del Kernel 4.12 de Linux, el cual trae por primera vez activada por defecto la característica KASLR, y casi simultáneamente la publicación de esta otra noticia sobre la implementación de una característica llamada KARL en OpenBSD me ha parecido que sería interesante aclarar las diferencias entre estas técnicas de seguridad, pues pienso que la combinación de ambas va a ser muy importante de cara al futuro de la seguridad de los sistemas, pues van a impedir explotar vulnerabilidades relacionadas con la corrupción de memoria (buffer-overflow).

7 de julio de 2017

Comentarios

Sé el primero en comentar

Enviar comentario