Come posso garantire che la mia installazione di Bash non sia più vulnerabile al bug ShellShock dopo gli aggiornamenti?
Come posso garantire che la mia installazione di Bash non sia più vulnerabile al bug ShellShock dopo gli aggiornamenti?
Risposte:
Per verificare la vulnerabilità CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
NON deve restituire la parola vulnerabile.
/tmp/echo
che è possibile eliminare dopo, ed è necessario eliminare prima di ripetere il test)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
dovrebbe dire la data data quindi lamentarsi con un messaggio come cat: echo: No such file or directory
. Se invece ti dice qual è il datetime corrente, allora il tuo sistema è vulnerabile.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
NON deve ripetere il testo 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"
NON deve ripetere il testo CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Un risultato positivo su questo è che riecheggia SOLO il testo testing CVE-2014-6277
. Se esegue perl o si lamenta che perl non è installato, si tratta sicuramente di un errore. Non sono sicuro su altre caratteristiche di errore in quanto non ho più sistemi senza patch.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Un passaggio per questo test è che dovrebbe ripetere SOLO il testo testing CVE-2014-6278
. Se il tuo risuona hi mom
ovunque, questo è sicuramente un fallimento.
foo='() { echo not patched; }' bash -c foo
a questo? Fino a quando le esportazioni di funzioni non vengono inserite in uno spazio dei nomi separato, non smetteremo di eseguire da un bug del parser al successivo.
Esporta una variabile d'ambiente appositamente predisposta che verrà valutata automaticamente dalle versioni vulnerabili di Bash:
$ export testbug='() { :;}; echo VULNERABLE'
Ora esegui una semplice eco per vedere se Bash valuterà il codice in $ testbug anche se non hai usato tu stesso quella variabile:
$ bash -c "echo Hello"
VULNERABLE
Hello
Se mostra la stringa "VULNERABLE", la risposta è ovvia. Altrimenti, non devi preoccuparti e la tua versione patchata di Bash è OK.
Si noti che sono state rilasciate più patch dalle principali distribuzioni Linux e talvolta non risolvono completamente la vulnerabilità. Continua a controllare gli avvisi di sicurezza e la voce CVE per questo errore.
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock è praticamente una congiunzione di più di una vulnerabilità di bash , e in questo momento esiste anche un malaware che sfrutta questa vulnerabilità , quindi ShellShock può essere un problema ancora aperto, c'è un thread con gli aggiornamenti di RedHat su questi problemi .
Redhat raccomanda quanto segue:
Esegui comando:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Se l'output è:
$ 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
non hai alcuna correzione.
Se l'output è:
$ 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
hai CVE-2014-6271
risolto
Se l'output è:
$ 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
non sei vulnerabile.
L'altra parte del controllo ShellShock è il controllo di vulnerabilità CVE-2014-7169 che assicura che il sistema sia protetto dal problema di creazione del file. Per verificare se la tua versione di Bash è vulnerabile a CVE-2014-7169, esegui il comando seguente:
$ 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 il sistema è vulnerabile, verranno visualizzate l'ora e la data e verrà creato / tmp / echo.
Se il tuo sistema non è vulnerabile, vedrai un output simile 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
Ho scritto un'utilità CLI chiamata ShellShocker per testare il tuo server web per le vulnerabilità sugli script CGI. Per testare il tuo sito, avresti eseguito:
python shellshocker.py <your-server-address>/<cgi-script-path>
vale a dire
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
EDIT: questa utility è stata rimossa, scusa: '(
Puoi inviare il tuo URL CGI a questo test online: