¿El error Shellshock Bash afecta a ZSH?
¿La actualización de Bash es la única solución?
¿El error Shellshock Bash afecta a ZSH?
¿La actualización de Bash es la única solución?
Respuestas:
No, no afecta a ZSH.
Todavía DEBE actualizar bash como la mayor parte de los scripts del sistema están escritos para bash y vulnerables al error shellshock.
Para probar tu ZSH haz esto:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
¿Qué hace exactamente este código?
env x='() { :;}; echo vulnerable' crea una variable de entorno con error conocido usando el comando al final de la variablezsh -c 'echo hello'lanza el shell ZSH con un simple saludo (y evalúa todas las variables env, incluida x )Si ve salida:
vulnerable
hello
Entonces tu ZSH es vulnerable. El mío (5.0.2) no es:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bashes un mal hábito para las utilidades del sistema porque no se garantiza la instalación de bash; /bin/shes el shell estándar y se requiere que sea un intérprete de shell POSIX correcto.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
Desde este enlace :
Puede determinar si es vulnerable al problema original en CVE-2014-6271 ejecutando esta prueba:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Si ve la palabra vulnerable en la salida de ese comando, su bash es vulnerable y debería actualizarlo. A continuación se muestra una versión vulnerable de OS X 10.8.5:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
El siguiente resultado es un ejemplo de una versión bash no vulnerable.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
env X='() { (a)=>\' bash -c "echo date"en un bash parcheado ya pesar de arrojar muchos errores, producirá un archivo llamado echoque contiene la fecha. No quiero saber por qué.
zshno se usa bashen su núcleo. bashse llama explícitamente en tus ejemplos. No importa qué shell esté utilizando para ejecutar estas líneas. Esta vulnerabilidad afecta al shell bash recién iniciado, no al shell desde el que se ejecuta.
bashen los ejemplos por $SHELL.
No afecta zshcomo el ejecutable del shell, porque su código fuente nunca contuvo el error.
Hay muchas similitudes entre bashy zsh, pero se implementaron independientemente entre sí. La misma característica se implementa de dos maneras diferentes y, lo que es más importante en este contexto, generalmente con diferentes errores.
Indirectamente, afecta el trabajo interactivo con el zshshell en un terminal casi tanto como trabajar con él bash.
El uso de bashes tan común que difícilmente se puede evitar llamarlo.
zsh, pero que en realidad contienen bash. #!/bin/bashpara especificar bashcomo intérprete.muchos de los comandos que asume son binarios, pero son scripts de shell, algunos de los cuales usan bash.
en muchos lugares donde un shell se ejecuta explícitamente, bashse puede usar y posiblemente sea necesario.
xargscomandos complejos o gitalias que involucran argumentosNo, Shellshock no afecta a zsh directamente.
Sin embargo, muchos entornos que usan zsh como shell predeterminado también tienen instalado bash. Cualquier shell, incluido zsh, se puede utilizar para generar un shell bash comprometido:
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
Para defenderse de esto, debe parchear, desinstalar o deshabilitar cualquier versión redundante de bash. Puede deshabilitar la instalación de bash del sistema con chmod:
$ chmod a-x /bin/bash
Sin embargo, es común que los scripts llamen explícitamente a bash. Los scripts que hacen esto, y aquellos que usan funciones de scripting específicas de bash, fallarán si bash no está disponible. Parchear es la mejor solución.
importing function definition"? También probé con la inyección de servidor ssh: ssh testuser@localhost '() { :;}; echo "$SHELL"'donde configuré el testusershell de inicio de sesión /bin/zshy hace eco/bin/zsh