Como garantir que minha instalação do Bash não fique mais vulnerável ao bug do ShellShock após as atualizações?
Como garantir que minha instalação do Bash não fique mais vulnerável ao bug do ShellShock após as atualizações?
Respostas:
Para verificar a vulnerabilidade CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
NÃO deve repetir a palavra vulnerável.
/tmp/echo
que você pode excluir depois e precisa excluir antes de testar novamente)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
deve dizer a palavra data e depois reclamar com uma mensagem como cat: echo: No such file or directory
. Se, em vez disso, indicar qual é a data e hora atual, seu sistema estará vulnerável.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
NÃO deve repetir o texto CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
NÃO deve repetir o texto CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Um resultado de aprovação neste é apenas o eco de volta ao texto testing CVE-2014-6277
. Se ele executa perl ou se ele reclama que o perl não está instalado, isso é definitivamente uma falha. Não tenho certeza de outras características de falha, pois não tenho mais nenhum sistema sem patch.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Uma aprovação para este teste é que ele deve apenas repetir o texto testing CVE-2014-6278
. Se o seu eco voltar para hi mom
qualquer lugar, isso é definitivamente um fracasso.
foo='() { echo not patched; }' bash -c foo
a isso? Até que as exportações de funções sejam colocadas em um espaço para nome separado, não deixaremos de executar um bug do analisador para o próximo.
Exporte uma variável de ambiente especialmente criada que será avaliada automaticamente por versões vulneráveis do Bash:
$ export testbug='() { :;}; echo VULNERABLE'
Agora execute um eco simples para ver se o Bash avaliará o código em $ testbug, mesmo que você não tenha usado essa variável:
$ bash -c "echo Hello"
VULNERABLE
Hello
Se mostrar a string "VULNERABLE", a resposta é óbvia. Caso contrário, você não precisa se preocupar e sua versão corrigida do Bash está OK.
Observe que vários patches foram lançados pelas principais distribuições Linux e, às vezes, eles não corrigem completamente a vulnerabilidade. Continue verificando os avisos de segurança e a entrada do CVE quanto a esse bug.
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
O ShellShock é praticamente uma conjunção de mais de uma vulnerabilidade do bash e , neste momento, também existe um malware que explora essa vulnerabilidade ; portanto, o ShellShock pode ser um problema que ainda está aberto, há um encadeamento com atualizações do RedHat sobre esses problemas .
A Redhat recomenda o seguinte:
Comando de execução:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Se a saída for:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
você não tem nenhuma correção.
Se a saída for:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
você tem CVE-2014-6271
conserto
Se sua saída for:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
você não é vulnerável.
A outra parte da verificação do ShellShock é a verificação de vulnerabilidade CVE-2014-7169, que garante a proteção do sistema contra o problema de criação de arquivo. Para testar se sua versão do Bash é vulnerável ao CVE-2014-7169, execute o seguinte comando:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
Se o seu sistema estiver vulnerável, a hora e a data serão exibidas e / tmp / echo será criado.
Se o seu sistema não estiver vulnerável, você verá resultados semelhantes a:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
Eu escrevi um utilitário de CLI chamado ShellShocker para testar seu servidor da Web quanto a vulnerabilidades em scripts CGI. Para testar seu site, você deve executar:
python shellshocker.py <your-server-address>/<cgi-script-path>
ie
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
EDIT: este utilitário foi retirado, desculpe: '(
Você pode enviar seu URL CGI para este teste online:
tipo env x = '() {:;}; ech vulnerável 'bash -c "echo isto é um teste" e se isso retornar vulnerável e este for um teste, significa que sua máquina OSX / Linux será afetada. O remédio é atualizar para a versão mais recente do bash.