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