GNU/Linux >> Linux Esercitazione >  >> Linux

Come risolvere Bash Shellshock CVE-2014-6271, CVE-2014-7169 su Linux

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

Linux
  1. Come cancellare la cronologia della riga di comando BASH in Linux

  2. Come cancellare la cronologia di Bash su Linux

  3. Come verificare se Bash ha una vulnerabilità Shellshock?

  4. Come controllare syslog in Bash su Linux?

  5. come installare silenziosamente anaconda / miniconda su Linux

Come utilizzare il comando Declare in Linux Bash Shell

Come utilizzare il comando echo negli script Bash in Linux

Verifica se il tuo sistema Linux è vulnerabile a Shellshock e correggilo

Come installare Linux Bash Shell su Windows 10

Come cancellare la cronologia di Bash in Linux e Mac

Come utilizzare Linux Bash Shell in Windows 10?