CVE-2014-6271 è una correzione critica ad alto impatto. Se stai utilizzando un sistema Linux, dovresti correggere questa vulnerabilità.
Questa vulnerabilità CVE-2014-6271 (e CVE-2014-7169) è anche chiamata Shellshock.
È stato riscontrato un difetto nel modo in cui Bash ha valutato alcune variabili di ambiente appositamente predisposte. Un utente malintenzionato potrebbe utilizzare questo difetto per ignorare o aggirare le restrizioni dell'ambiente per eseguire i comandi della shell. Alcuni servizi e applicazioni consentono agli aggressori remoti non autenticati di fornire variabili di ambiente, consentendo loro di sfruttare questo problema.
Utilizzando la shell bash, questa vulnerabilità consente a un utente malintenzionato di eseguire comandi shell casuali nell'ambiente. L'idea alla base di questo è che un utente malintenzionato può aggirare la restrizione della variabile d'ambiente, che gli consente di eseguire comandi della shell.
Tieni presente che alcuni servizi (o applicazioni) in esecuzione su server Linux potrebbero consentire ad aggressori non autenticati di specificare alcune variabili di ambiente, che a loro volta consentiranno loro di sfruttare questa vulnerabilità sulla rete senza alcuna autenticazione.
Tutto quello che devi fare per risolvere questo problema è aggiornare il tuo bash all'ultima versione. Ad esempio, su RedHat o CentOS, procedi come segue per risolvere questo problema:
yum update bash
Il tuo sistema è vulnerabile a CVE-2014-6271?
RedHat ha fornito il seguente script per verificare se il tuo sistema è vulnerabile o meno.
Se vedi la parola "vulnerabile" nell'output, il tuo sistema è vulnerabile.
env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Tieni presente che potresti anche visualizzare alcuni messaggi di errore insieme alla parola "vulnerabile" nell'output. Ad esempio, quello che segue è l'output su un sistema RedHat 5 e RedHat 6 (e CentOS 5 e 6) che è vulnerabile.
# 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
Versione Bash prima della correzione
Prima di risolvere il problema, controlla la tua versione attuale di bash. Su RedHat 5 (e CentOS 5), avevo la seguente versione bash prima della correzione:
# rpm -qa | grep bash bash-3.2-24.el5
Su RedHat 6 (e CentOS 6), avevo la seguente versione bash prima della correzione:
# rpm -qa | grep bash bash-4.1.2-3.el6.x86_64
Riparare il CVE-2014-6271
Ora aggiorna bash usando yum (o un'altra utilità di gestione dei pacchetti per la tua distribuzione appropriata)
yum update bash
Su RedHat 5 (e CentOS 5), la seguente è la versione bash dopo l'aggiornamento, che ha risolto la vulnerabilità.
# rpm -qa | grep bash bash-3.2-33.el5_11.4
Su RedHat 6 (e CentOS 6), la seguente è la versione bash dopo l'aggiornamento, che ha risolto la vulnerabilità.
# rpm -qa | grep bash bash-4.1.2-15.el6_5.2.x86_64
Verifica la vulnerabilità CVE-2014-6271 dopo la correzione
Dopo che bash è stato aggiornato all'ultima versione, quando esegui il test, non vedrai la parola "vulnerabile" nel seguente output del comando. Tieni presente che l'avviso e il messaggio di errore mostrati di seguito sono ok.
# 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
E CVE-2014-7169?
Dopo il rilascio della correzione iniziale, Redhat ha scoperto che la correzione CVE-2014-6271 era incompleta e bash consentiva ancora pochi caratteri che possono essere inseriti nella variabile di ambiente in alcune circostanze speciali.
Quando hai eseguito l'aggiornamento yum bash dal passaggio precedente, otterrà automaticamente l'ultima versione di bash, che include anche la correzione per CVE-2014-7169. Quindi, non devi fare nulla di specifico per questa correzione.
Tuttavia, puoi comunque verificare che il tuo sistema non sia vulnerabile a questo problema eseguendo quanto segue sul tuo sistema:
cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
Su un sistema vulnerabile a CVE-2014-7169, noterai che quanto segue ha creato il file /tmp/echo e visualizzerà il contenuto del file.
Se vedi il seguente output, dovresti aggiornare la tua bash all'ultima versione usando "yum update bash" (o usa l'utilità di gestione dei pacchetti appropriata per la tua distribuzione)
# 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 16:15:09 PDT 2014
Se il tuo sistema non è vulnerabile a CVE-2014-7169, vedrai il seguente output, che non creerà il file /tmp/echo.
# 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
Informazioni aggiuntive
- Dettagli su CVE-2014-6271, CVE-2014-7169 dal sito Web RedHat
- Rapporto di RedHat (CentOS, Fedora) Bugzilla per CVE-2014-6271
- Rapporto di RedHat (CentOS, Fedora) Bugzilla per CVE-2014-7169
- Avviso di sicurezza Oracle per CVE-2014-7169 – Per Solaris o Oracle Enterprise Linux
- Ubuntu CVE-2014-7169
- Debian CVE-2014-7169