Protegiendo nuestro servidor de la vulnerabilidad Shellshock
El pasado día 24 de septiembre, fue descubierta una vulnerabilidad en el Bash conocida como Shellshock. No vengo a daros la noticia porque me he hartado a leerla en distintos blogs, sino a ayudaros a arreglar este problema. Esta brecha de seguridad permitiría ejecutar código de manera remota en aquellos dispositivos que hagan uso de Bash. No pensemos únicamente en ordenadores o servidores. Bash se utiliza en muchísimos dispositivos, desde videocámaras hasta routers, pasando por muchos teléfonos móviles, hecho que hace este problema incluso más peligroso que Heartbleed. Podéis encontrar más información (en inglés) sobre este bug en CVE-2014-6217 y CVE-2014-7169.
En Geeky Theory nos toca de cerca, ya que utilizamos un servidor Debian VPS autoadministrado (yo me lo guiso y yo me lo como), por lo que hemos tenido que solucionar el fallo. No queremos dejaros sin blog.
Cómo saber si somos vulnerables
Para hacer la prueba utilizaré una máquina virtual con un disco que tenía por casa de Kali Linux (basado en Debian) sin actualizar, así que será vulnerable.
Introduciremos el siguiente comando en la terminal:
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
Podemos obtener dos salidas:
- Si nuestro equipo es vulnerable veremos:
Bash is vulnerable! Bash Test
- Si nuestro equipo no es vulnerable:
bash: warning: VAR: ignoring function definition attempt bash: error importing function definition for `VAR' Bash Test
Esto es lo que obtengo al hacer la prueba en la máquina virtual no actualizada:
Si no eres vulnerable, genial. ¡Te has librado! Pero, si lo eres, sigue leyendo para actualizar tu versión de Bash.
Soy vulnerable ¡¿Qué hago?!
Más fácil imposible. Al tener servidores dando un servicio (valga la redundancia), en este caso un blog y servidor de correo electrónico, además de varias aplicaciones, debemos hacer la actualización con sumo cuidado ya que cualquier error podría hacernos caer. Es por esto que únicamente actualizaremos Bash.
- Ubuntu y Debian
sudo apt-get update && sudo apt-get install --only-upgrade bash
- CentOS, Red Hat y Fedora
sudo yum update bash
Esto es lo que obtengo al parchear el error en la máquina virtual. Todo funcionando correctamente:
Espero que os haya servido de ayuda. Por cierto, Bash es open source. ¿El fallo es debido a su condición de código abierto o el fallo ha sido descubierto gracias a su condición de código abierto? Ahí dejo la reflexión.
¡Saludos!