De acordo com este post da 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
package0:4.1.2-15.el6_5.2
) - Arch Linux (
bash
pacote4.3.026-1
)
Eu especulo que é assim que a correção se destina a fazê-la se comportar, mas por algum motivo, os bash
patches iniciais do Ubuntu produziram o erro em vez de ignorar o código extra silenciosamente.
Os patches iniciais foram realmente destinados a produzir o erro quando uma definição de função inválida foi encontrada em uma variável de ambiente. Os patches atualizados só procuram em variáveis com prefixo especial, o que elimina a maior parte do risco do mundo real. Tente
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
- você 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