Vai al contenuto

ShellShock: grave (?) vulnerabilità della shell bash


jeby

Messaggi Raccomandati:

Richiede, appunto, che vi sia un server HTTP accessibile dall'esterno.

Su openSSH il problema si pone quando questo è configurato con la direttiva "ForceCommand" per eseguire un comando arbitrario quando un utente si è già autenticato.

Immaginiamo questo scenario. Ho due utenti. Il primo è pippo, il secondo è pluto. Di pippo io mi fido, quindi lui con la sua password si può collegare al mio server con accesso alla shell (bash). Di pluto mi fido poco, ma mi serve che lui possa collegarsi per eseguire un singolo comando (per mancanza di fantasia diciamo che il comando è rsync) e per questo imposto, limitatamente a lui, la direttiva ForceCommand di sshd. Anche pluto ha ovviamente la sua password.

Se un achero riesce a compromettere l'account di pippo, del bug di bash non se ne fa nulla: ha già accesso libero alla shell.

Se un achero riesce a compromettere l'account di pluto, non ha accesso alla shell e, qualsiasi comando lui scriva sul terminale, viene eseguito solo rsync.

Scrive "W la figa", ma sshd esegue rsync. Scrive "Porca pupazza" e sshd riesegue rsync. Un po' frustrante. Ecco però che interviene il baco. Quando ssh esegue il comando specificato in "ForceCommand" lo fa con "bash -c" (vedi mio messaggio di sopra... vabbe', con $SHELL -c, ma se la shell è bash il risultato è quello). E fin qui non succederebbe nulla, se non fosse che il comando specificato dall'utente (o dall'achero) viene passato a bash -c attraverso una variabile d'ambiente ("$SSH_ORIGINAL_COMMAND"). Quindi se il tipo ha scritto qualcosa come '() { :;}; bash -l', ecco che, automagicamente, l'achero ottiene una shell di bash, di fatto bypassando la direttiva "ForceCommand" ed è pertanto libero di eseguire qualsiasi comando come pluto (salvo l'uso intelligente dei permessi dei file da parte del sysadmin).

Modificato da loric

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Sono riuscito a riprodurre il bug con una particolare configurazione di DHCPclient ed un DHCPACK farlocco. In altre parole senza aver neanche bisogno di accedere alla macchina via ssh. Considerando che detta macchina ha su Mandriva e Mandriva non è più supportato (chi faceva la distro è fallito), comincio ad essere un po' preoccupato.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Insomma basta il server web attivo

No, nel caso di cui ho scritto non c'era alcun server web attivo, il DHCP è quello che serve per dare l'indirizzo IP all'interfaccia di rete.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Bene, compilato ed installato bash 4.3 (patch level 25) anche su mandriva. Dovrei essere salvo :)

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Considerando che quanto scrivete per me è arabo, io uso Linux Ubuntu aggiornato puntualmente, rischio qualcosa?

Probabilmente no.

Apri un terminale, incolla i comandi postati da jeby all'inizio della discussione e vedi se il sistema è vulnerabile.

- - - - - - - - - - AGGIUNTA al messaggio già esistente - - - - - - - - - -

La patch di bash a quanto pare non è perfetta.


$ env -i X='() { (a)=<\' bash -c '/etc/passwd cat'

D'oh...

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Probabilmente no.

Apri un terminale, incolla i comandi postati da jeby all'inizio della discussione e vedi se il sistema è vulnerabile.

- - - - - - - - - - AGGIUNTA al messaggio già esistente - - - - - - - - - -

La patch di bash a quanto pare non è perfetta.


$ env -i X='() { (a)=<\' bash -c '/etc/passwd cat'

D'oh...

mi sa che c'è già in giro la patch della patch...

EDIT: su raspbian (Debian Wheezy) bash version version 4.2.37(1)-release-(arm-unknown-linux-gnueabihf) se faccio girare il comando che hai scritto tu dice:

env -i X='() { (a)=<\' bash -c '/etc/passwd cat'

bash: /etc/passwd: Permission denied

Modificato da jeby

Mazda MX-5 20th anniversary "barbone edition" - Tutto quello che scrivo è IMHO

k21x8z.png

Link al commento
Condividi su altri Social

Crea un account o accedi per lasciare un commento

Devi essere iscritto per commentare e visualizzare le sezioni protette!

Crea un account

Iscriviti nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
×
×
  • Crea Nuovo...

 

Stiamo sperimentando dei banner pubblicitari a minima invasività: fai una prova e poi facci sapere come va!

Per accedere al forum, disabilita l'AdBlock per questo sito e poi clicca su accetta: ci sarai di grande aiuto! Grazie!

Se non sai come si fa, puoi pensarci più avanti, cliccando su "ci penso" per continuare temporaneamente a navigare. Periodicamente ricomparità questo avviso come promemoria.