Skip to content

Come si aggiorna bash sulle versioni EOL di Ubuntu?

Questo team di specialisti, dopo alcuni giorni di lavoro e raccolta di informazioni, trova i dati necessari, vogliamo che questo articolo sia molto utile per il tuo piano.

Soluzione:

Dal momento che si vuole continuare a utilizzare una versione ufficialmente non supportato l'unica possibilità è quella di supportarla da soli.

Consiglierei di ottenere i sorgenti per la versione specifica su Ubuntu (che sia 11.0, 12.0 o 13.10) e poi applicare le stesse patch che sono state applicate ai pacchetti ufficiali; come riferimento, vedere:

  • http://www.ubuntu.com/usn/usn-2362-1
  • http://www.ubuntu.com/usn/usn-2363-1
  • http://www.ubuntu.com/usn/usn-2363-2

Si noti che, sebbene la vulnerabilità di Bash sia quella che ha avuto la migliore copertura mediatica, ci sono molte altre vulnerabilità - quasi ogni giorno - e si dovrebbe prendere seriamente in considerazione la sottoscrizione di almeno ubuntu-security-announce in modo da esserne costantemente informati. Questo è particolarmente importante nel vostro caso, dato che state usando una release non supportata.

Costruire bash dai sorgenti è abbastanza semplice, è necessario un ambiente di sviluppo C valido (gcc, binutils, ecc.) e il file termcap e le intestazioni (predefinite, ma si possono usare le librerie curses al suo posto).

Si dovrebbe almeno avere un backup del vostro attuale bash prima di completare questa operazione, e idealmente un backup completo o un disco di ripristino. A seconda del sistema operativo, bash potrebbe essere una parte fondamentale dei vostri script di avvio! Le nuove versioni a volte contengono cambiamenti di comportamento non retroattivi.

La stessa sequenza di passi dovrebbe funzionare per tutte le versioni di bash-2.05b fino a bash-4.3, basta sostituire "4.3" come appropriato, in modo da poter rimanere con la stessa versione se necessario. A meno che non si stia usando la piuttosto antica bash-2.05b, che è vulnerabile ma non è disponibile una patch ufficiale, AFAICT La correzione è stata riportata anche alla versione 2.05b.

Dovreste ricontrollare sul sito ufficiale l'attuale livello di patch, nel caso in cui abbiate trovato un mirror non aggiornato.

mkdir -p /usr/local/src/dist && cd /usr/local/src/dist
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz.sig
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz
wget http://tiswww.case.edu/php/chet/gpgkey.asc
gpg --import gpgkey.asc
gpg --verify bash-4.3.tar.gz.sig
cd ..
tar xzvf dist/bash-4.3.tar.gz
cd bash-4.3
mkdir patches && cd patches 
wget -r --no-parent --accept "bash43-*" -nH -nd  
  ftp.heanet.ie/mirrors/gnu/bash/bash-4.3-patches/     # Use a local mirror
echo *sig | xargs -n 1 gpg --verify --quiet            # see note 2

cd ..
echo patches/bash43-0?? | xargs -n 1 patch -p0 -i      # see note 3 below

./configure --prefix=/usr  --bindir=/bin              
        --docdir=/usr/share/doc/bash-4.3 
        --without-bash-malloc            
        --with-installed-readline

 make
 make test && make install   # see note 6

Note:

  1. Utilizzate un mirror locale per le patch, ftpmirror.gnu.org restituisce un reindirizzamento a uno di essi, ma questo non funziona con il file -r per scaricare l'intera directory
  2. (per i cappelli di carta stagnola) gpg non imposta un codice di errore utile e non si lamenta molto rumorosamente se la verifica fallisce, cercate la stringa "BAD" nel (copioso) output
  3. Attualmente ci sono 2527 30 patch per bash-4.3, 25-30 riguardano CVE-2014-6271 e altri problemi correlati. Potrebbero esserci ancora altre patch per risolvere questo problema! È possibile ricevere patch avvertimenti come "Ignorare il nome del file potenzialmente pericoloso ../bash-4.3/patchlevel.h", questi dovrebbero essere innocui, verificare che patchlevel.h contenga la riga #define PATCHLEVEL ... con il livello di patch previsto.
  4. il configure modificano l'impostazione predefinita di /usr/local/questo significa che make install dovrebbe sovrascrivere il vostro attuale bash
  5. --without-bash-malloc seleziona la malloc di libc, piuttosto che un'implementazione interna più veloce (leggermente più dispendiosa). Questo potrebbe avere un impatto se si usano moduli bash caricabili, in quanto può causare un'incompatibilità, ma non molte persone usano questa caratteristica. Il pacchetto per questo si chiama probabilmente bash-builtins.
  6. make test richiederà un po' di tempo. È necessario essere root per completare make install (è spesso considerata una cattiva pratica compilare il software come root)
  7. Ubuntu, essendo derivato da Debian, probabilmente usa le stesse patch extra di Debian, vedi qui per esempio. Queste patch possono contenere funzioni che voi utilizzate. Se si applica la patch all'albero dei sorgenti di bash, vedere il file debian/README per maggiori dettagli.
  8. Un'altra trappola per orsi: potreste avere anche un binario static-bash, che dovreste ricostruire. Per farlo, riavviate dal file "./configure ...", aggiungendo --enable-static-link.

Si veda anche il passo bash in Linux From Scratch.
L'elenco OSS-SEC è un buon posto per controllare le patch e lo stato attuale.

Risposta breve per quantal (Ubuntu 12.10): Scaricare e installare il pacchetto bash dal repository preciso.

Passaggio a piedi

Per quantal (Ubuntu 12.10), ho cercato i pacchetti bash dai repository vicini. Ho scaricato i pacchetti per raring e precise.

Prima di iniziare, ho fatto un backup del mio pacchetto bash esistente, in modo da poter sperare di recuperare il mio sistema se la nuova installazione fallisse. (Richiede il pacchetto dpkg-repack).

$ dpkg-repack bash

Anche se probabilmente avrei dovuto semplicemente copiare l'eseguibile /bin/bash a /root/bash.vulnerable, poiché sarebbe stato più facile da ripristinare in caso di emergenza.

Raring

Per prima cosa ho provato il da raring:

$ dpkg -i bash_4.2-5ubuntu3_i386.deb

Ma è stato testato come ancora vulnerabile!

Preciso

Quindi ho provato il da precise:

$ dpkg -i bash_4.2-2ubuntu2.6_i386.deb

Questo è stato testato come sicuro utilizzando lo script bashcheck.

Testing /bin/bash ...
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)

Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Not vulnerable to CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)

Ma vorrei davvero aver installato una versione LTS. Ho ancora intenzione di fare un aggiornamento quando avrò tempo...

Se ritieni che questo post sia stato utile, ti saremmo grati se lo condividessi con altri appassionati di programmazione in questo modo ci aiuterai ad estendere i nostri contenuti.



Utilizzate il nostro motore di ricerca

Ricerca
Generic filters

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.