O bug do Shellshock Bash afeta o ZSH?
A atualização do Bash é a única solução?
O bug do Shellshock Bash afeta o ZSH?
A atualização do Bash é a única solução?
Respostas:
Não, isso não afeta o ZSH.
Você ainda DEVE atualizar o bash, pois 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 o seguinte:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
O que exatamente esse código faz?
env x='() { :;}; echo vulnerable' cria uma variável de ambiente com erro conhecido usando o comando no final da variávelzsh -c 'echo hello'lança shell ZSH com hello simples (e avalia todas as variáveis env incluindo x )Se você vir a saída:
vulnerable
hello
Então seu ZSH está vulnerável. O meu (5.0.2) não é:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bashé um mau hábito para os utilitários de sistema, porque não é garantido que o bash esteja instalado; /bin/shé o shell padrão e é necessário que seja um interpretador de shell POSIX correto.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
A partir deste link :
Você pode determinar se você 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 está vulnerável e você deve 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 saída a seguir é um exemplo de uma versão do 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
env X='() { (a)=>\' bash -c "echo date"em uma festança corrigida e, apesar de gerar muitos erros, produzirá um arquivo chamado echoque contém a data. Eu não quero saber o porquê.
zshque não usar bashem seu núcleo. bashé explicitamente chamado em seus exemplos. Não importa qual shell você está usando para executar essas linhas. Essa vulnerabilidade afeta o shell bash recém-iniciado, não o shell do qual é executado.
bashnos exemplos por $SHELL.
Não afeta zshcomo executável do shell, porque seu código-fonte nunca continha o erro.
Existem muitas semelhanças entre bashe zsh, mas elas não foram implementadas independentemente uma da outra. O mesmo recurso é implementado de duas maneiras diferentes e - mais importante neste contexto - geralmente com erros diferentes.
Indiretamente, ele afeta o trabalho interativo com o zshshell em um terminal quase tanto quanto o trabalho com ele bash.
O uso de bashé tão comum que dificilmente se pode evitar chamá-lo.
zsh, mas que realmente contém bash. #!/bin/bashpara especificar bashcomo intérprete.muitos comandos que você assume serem binários, mas são scripts de shell, alguns deles usando bash.
em muitos lugares onde um shell é executado explicitamente, bashpode ser usado e possivelmente necessário.
xargscomandos complexos ou gitaliases envolvendo argumentosNão, o Shellshock não afeta o zsh diretamente.
No entanto, muitos ambientes que usam o zsh como shell padrão também possuem 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 do sistema bash com chmod:
$ chmod a-x /bin/bash
No entanto, é comum que os scripts chamem explicitamente bash. Os scripts que fazem isso e os que usam recursos de script específicos do bash falharão se o bash não estiver disponível. Patching é a melhor solução.
importing function definition"? Eu também testado com injeção ssh-server: ssh testuser@localhost '() { :;}; echo "$SHELL"'onde eu definir o testuser's shell de login para /bin/zsh, e ecos/bin/zsh