GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo reparar Bash Shellshock CVE-2014-6271, CVE-2014-7169 en Linux

CVE-2014-6271 es una solución crítica de alto impacto. Si está ejecutando un sistema Linux, debe corregir esta vulnerabilidad.

Esta vulnerabilidad CVE-2014-6271 (y CVE-2014-7169) también se denomina Shellshock.

Se encontró una falla en la forma en que Bash evaluó ciertas variables de entorno especialmente diseñadas. Un atacante podría usar esta falla para anular o eludir las restricciones del entorno para ejecutar comandos de shell. Ciertos servicios y aplicaciones permiten que atacantes remotos no autenticados proporcionen variables de entorno, lo que les permite aprovechar este problema.

Usando bash shell, esta vulnerabilidad permite que un atacante ejecute comandos de shell aleatorios en su entorno. La idea detrás de esto es que un atacante puede eludir la restricción de la variable de entorno, lo que le permite ejecutar comandos de shell.

Tenga en cuenta que algunos servicios (o aplicaciones) que se ejecutan en servidores Linux pueden permitir que atacantes no autenticados especifiquen algunas variables de entorno, lo que a su vez les permitirá explotar esta vulnerabilidad en la red sin ninguna autenticación.

Todo lo que tienes que hacer para arreglar esto es actualizar tu bash a la última versión. Por ejemplo, en RedHat o CentOS, haga lo siguiente para solucionar este problema:

yum update bash

¿Es su sistema vulnerable a CVE-2014-6271?

RedHat ha proporcionado el siguiente script para probar si su sistema es vulnerable o no.

Si ve la palabra "vulnerable" en el resultado, entonces su sistema es vulnerable.

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Tenga en cuenta que también puede ver algún mensaje de error junto con la palabra "vulnerable" en el resultado. Por ejemplo, el siguiente es el resultado de un sistema RedHat 5 y RedHat 6 (y CentOS 5 y 6) que es vulnerable.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

Versión de Bash antes de la corrección

Antes de solucionar el problema, verifique su versión actual de bash. En RedHat 5 (y CentOS 5), tenía la siguiente versión de bash antes de la corrección:

# rpm -qa | grep bash
bash-3.2-24.el5

En RedHat 6 (y CentOS 6), tenía la siguiente versión de bash antes de la corrección:

# rpm -qa | grep bash
bash-4.1.2-3.el6.x86_64

Corregir el CVE-2014-6271

Ahora, actualice bash usando yum (u otra utilidad de administración de paquetes para su distribución adecuada)

yum update bash

En RedHat 5 (y CentOS 5), la siguiente es la versión de bash después de la actualización, que corrigió la vulnerabilidad.

# rpm -qa | grep bash
bash-3.2-33.el5_11.4

En RedHat 6 (y CentOS 6), la siguiente es la versión de bash después de la actualización, que corrigió la vulnerabilidad.

# rpm -qa | grep bash
bash-4.1.2-15.el6_5.2.x86_64

Pruebe la vulnerabilidad CVE-2014-6271 después de la corrección

Después de que bash se actualice a la última versión, cuando ejecute la prueba, no verá la palabra "vulnerable" en el siguiente resultado del comando. Tenga en cuenta que la advertencia y el mensaje de error que se muestran a continuación están bien.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

¿Qué pasa con CVE-2014-7169?

Después de que se lanzó la corrección inicial, redhat descubrió que la corrección CVE-2014-6271 estaba incompleta, y bash aún permitía algunos caracteres que se pueden colocar en la variable de entorno en algunas circunstancias especiales.

Cuando realizó la actualización de yum bash del paso anterior, obtendrá automáticamente la última versión de bash, que también incluye la solución para CVE-2014-7169. Entonces, realmente no tienes que hacer nada específico para esta corrección.

Sin embargo, aún puede probar para asegurarse de que su sistema no sea vulnerable a este problema ejecutando lo siguiente en su sistema:

cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo

En un sistema que es vulnerable a CVE-2014-7169, notará que lo siguiente creó el archivo /tmp/echo, y mostrará el contenido del archivo.

Si ve el siguiente resultado, debe actualizar su bash a la última versión usando "yum update bash" (o use la utilidad de administración de paquetes adecuada para su distribución)

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 16:15:09 PDT 2014

Si su sistema no es vulnerable a CVE-2014-7169, verá el siguiente resultado, que no creará el archivo /tmp/echo.

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

Información adicional

  • Detalles sobre CVE-2014-6271, CVE-2014-7169 del sitio web de RedHat
  • Informe de RedHat (CentOS, Fedora) Bugzilla para CVE-2014-6271
  • Informe de RedHat (CentOS, Fedora) Bugzilla para CVE-2014-7169
  • Alerta de seguridad de Oracle para CVE-2014-7169:para Solaris u Oracle Enterprise Linux
  • Ubuntu CVE-2014-7169
  • Debian CVE-2014-7169

Linux
  1. Cómo borrar el historial de línea de comandos BASH en Linux

  2. Cómo borrar el historial de Bash en Linux

  3. ¿Cómo verificar si Bash tiene una vulnerabilidad de Shellshock?

  4. ¿Cómo verificar syslog en Bash en Linux?

  5. ¿Cómo obtener máscara de red de bash?

Cómo usar el comando Declare en Linux Bash Shell

Cómo usar el comando echo en Bash Scripts en Linux

Compruebe si su sistema Linux es vulnerable a Shellshock y arréglelo

Cómo instalar Linux Bash Shell en Windows 10

Cómo borrar el historial de Bash en Linux y Mac

¿Cómo usar Linux Bash Shell dentro de Windows 10?