O bug do Shellshock afeta o ZSH?

38

O bug do Bash de Shellshock afeta o ZSH?

A atualização da solução Bash é a única?

    
por marflar 25.09.2014 / 14:27

4 respostas

36

Não, isso não afeta o ZSH.

Você ainda DEVE atualizar o bash, já que a maioria dos scripts do sistema são escritos para o bash e vulneráveis ao bug do shellshock.

Para testar seu ZSH faça isso:

env x='() { :;}; echo vulnerable' zsh -c 'echo hello'

O que exatamente esse código faz?

  1. env x='() { :;}; echo vulnerable' cria uma variável de ambiente com bug conhecido usando o comando no final da variável
  2. zsh -c 'echo hello' lança o shell ZSH com um simples olá (e avaliando todas as variáveis de env, incluindo x )

Se você vir a saída:

vulnerable
hello

Então o seu ZSH é vulnerável. O meu (5.0.2) não é:

$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
    
por 25.09.2014 / 15:15
6

De este link :

Você pode determinar se está vulnerável ao problema original no CVE-2014-6271 executando este teste:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Se você vir a palavra vulnerável na saída desse comando, seu bash estará vulnerável e você deverá atualizar. Abaixo está uma versão vulnerável do OS X 10.8.5:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello

A seguinte saída é um exemplo de uma versão bash não vulnerável.

$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'x'
hello
    
por 25.09.2014 / 14:54
6

O binário não é afetado

Ele não afeta zsh como o executável do shell, porque o código-fonte nunca continha o erro.
Existem muitas similaridades entre bash e zsh , mas elas foram implementadas independentemente uma da outra. O mesmo recurso é implementado de duas maneiras diferentes e - mais importante neste contexto - geralmente com erros diferentes.

Mas o uso interativo é

Indiretamente afeta o trabalho interativamente com o shell zsh em um terminal quase tanto quanto trabalhando com bash .

O uso de bash é tão comum que dificilmente se pode evitá-lo.

Muitos usos para evitar

  • scripts que você conhece e espera usar zsh , mas na verdade contêm bash .
  • vários scripts de shell que usam #!/bin/bash para especificar bash como o interpretador.
  • Muitos comandos que você considera serem binários, mas são scripts de shell, alguns deles usando bash .

  • em muitos lugares onde um shell é executado explicitamente, bash pode ser usado e possivelmente necessário.

    • como comandos complexos xargs ou git aliases envolvendo argumentos
    • camadas padrão de emuladores de terminal
    • shell de usuários que você suou para
    • etc.
por 26.09.2014 / 13:42
4

Não, o Shellshock não afeta diretamente o zsh.

No entanto, muitos ambientes que usam zsh como o shell padrão também têm o bash instalado. Qualquer shell, incluindo zsh, pode ser usado para gerar um 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 se defender, você deve corrigir, desinstalar ou desativar qualquer versão redundante do bash. Você pode desativar a instalação bash do sistema com chmod :

$ chmod a-x /bin/bash

No entanto, é comum que os scripts chamem explicitamente o bash. Scripts que fazem isso e aqueles que usam recursos de script específicos do bash falharão se o bash não estiver disponível. O patch é a melhor solução.

    
por 26.09.2014 / 13:06