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 echo
que contém a data. Eu não quero saber o porquê.
zsh
que não usar bash
em 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.
bash
nos exemplos por $SHELL
.
Não afeta zsh
como executável do shell, porque seu código-fonte nunca continha o erro.
Existem muitas semelhanças entre bash
e 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 zsh
shell 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/bash
para especificar bash
como 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, bash
pode ser usado e possivelmente necessário.
xargs
comandos complexos ou git
aliases 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