Acabei de atualizar o Ubuntu a partir de um pop-up de atualização. Conheço o Shellshock, então prossigai rapidamente com a instalação. Agora, quando tento correr
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Não recebo a saída (que estava recebendo antes)
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
conforme descrito emO que é a vulnerabilidade bash CVE-2014-6271 (Shellshock) e como posso corrigi-la?
Em vez disso, agora recebo apenas um 'olá'. É seguro presumir que as atualizações que instalei ocultam essas mensagens de erro? Depois de revisar o Centro de Software, vejo as seguintes atualizações que instalei:
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
Mais especificamente, 4.3-7ubuntu1.4 oculta a mensagem de erro de tentativa de definição de função? Desculpe pela suspeita, mas depois de pesquisar no Google, ainda não encontrei um problema semelhante. Qualquer clareza será muito apreciada. Obrigado!
Responder1
De acordo comesta postagem da Revista Fedora:
env x='() { :;}; echo OOPS' bash -c :
Isso imprimirá “OOPS” em um sistema vulnerável, mas sairá silenciosamente se o bash tiver sido corrigido.
Este é o comportamento visto em:
- Debian
squeeze
(bash
pacote4.1-3+deb6u2
) - CentOS 6.5 (
bash
pacote0:4.1.2-15.el6_5.2
) - Arch Linux (
bash
pacote4.3.026-1
)
Eu especulo que é assim que a correção pretende fazer com que ele se comporte, mas por algum motivo, bash
os patches iniciais do Ubuntu produziram o erro em vez de ignorar o código extra silenciosamente.
Os patches iniciais foram na verdadepretendidopara produzir o erro quando uma definição de função incorreta foi encontrada em uma variável de ambiente. Os patches atualizados apenas aparecem em variáveis com prefixos especiais, o que elimina quase todos os riscos do mundo real. Tente
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
– você deverá ver um erro.
Eu verifiquei isso:
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4