Vai al contenuto principale
Blog Tanium

Come rimediare rapidamente alla vulnerabilità OpenSSH

La scorsa settimana, Qualys ha pubblicato un avviso di sicurezza  che segnalava la presenza di vulnerabilità (CVE-2016–0777 e 0778) nelle versioni da 5,4 a 7,1 del client OpenSSH. Se sfruttate, queste vulnerabilità possono comportare il furto delle chiavi private. Per eliminare la vulnerabilità, gli amministratori possono applicare la patch OpenSSH alla versione 7,1p2 oppure configurare i client SSH esistenti in modo da disabilitare la funzionalità vulnerabile.

L’individuazione di versioni vulnerabili di software come OpenSSH in un’azienda di qualsiasi dimensione rappresenta un grave problema, poiché la maggior parte delle aziende non dispone della capacità fondamentale di individuare tutti gli endpoint presenti all’interno della propria rete. Qualsiasi operazione che si desideri eseguire su un singolo sistema, come l’interruzione dei processi, la messa in quarantena dei sistemi o l’applicazione di patch, può risultare complessa se applicata a tutti gli endpoint; questo è uno dei motivi per cui Tanium rappresenta una risorsa preziosa.

Ricerca preliminare

Dopo aver letto il comunicato pubblicato su Qualys, abbiamo ritenuto necessario cercare ulteriori informazioni sulle soluzioni alternative, preferibilmente da parte di coloro che hanno fornito la patch. Theo de Raadt, un’autorità in materia, ha pubblicato una direttiva di configurazione non documentata UseRoaming no che impedisce al bug di manifestarsi. A prima vista, sembrava che la soluzione alternativa fosse banale: bastava semplicemente scrivere uno script di shell per aggiungere la voce al file di configurazione. In una discussione correlata  è stato giustamente osservato che l’aggiunta della configurazione al file di configurazione potrebbe non andare a buon fine qualora il file di configurazione definisca modelli di host. Pertanto, lo script deve aggiungere l'impostazione di configurazione per tutti gli host:

Comando dello script Shell per disabilitare la vulnerabilità relativa al roaming degli utenti SSH

Distribuzione rapida di uno script sui computer vulnerabili

La modifica in blocco dei file di configurazione attivi dovrebbe destare preoccupazione in qualsiasi amministratore razionale. Non è una cosa da fare senza una certa cautela e un piano di riserva. Se modifichiamo il file, come possiamo annullare rapidamente le modifiche su uno o su tutti i sistemi? Abbiamo iniziato eseguendo il backup della nostra configurazione esistente in un nuovo file e, successivamente, applicando la correzione UseRoaming no al file ssh_config:

Script Shell per il backup e l'applicazione delle patch alla configurazione SSH al fine di disabilitare il roaming degli utenti

Durante i primi test, abbiamo scoperto che l'opzione -e del comando echo non è disponibile su tutti i sistemi; pertanto, abbiamo deciso di utilizzare il costrutto $’’ per garantire la portabilità. Abbiamo quindi potenziato il comando con quanto segue:

Comando dello script Shell per applicare la correzione relativa a OpenSSH CVE-2016-0777 utilizzando il comando ` Tanium`

Abbiamo effettuato un nuovo test su un singolo sistema. Di seguito è riportata un'immagine che illustra le ultime righe del vecchio file, l'esecuzione manuale della correzione tramite la riga di comando e le ultime righe del file di configurazione modificato:

File di configurazione SSH che illustra le impostazioni per la correzione delle vulnerabilità di OpenSSH e la configurazione di XAuthorization

Abbiamo testato il caso limite dell'aggiunta ripetuta della correzione al file di configurazione e abbiamo constatato che il client SSH continua a funzionare nonostante la ridondanza. Dal punto di vista operativo, si tratta di una buona misura di sicurezza, ma abbiamo segnalato questo aspetto come elemento da sistemare in una fase successiva dello sviluppo.

Sicurezza in caso di guasto

La cosa più semplice da fare è sovrascrivere il file di configurazione con il file di backup. Idealmente, non dovremmo mai trovarci a doverlo fare, ma si tratta di una misura preventiva che potrebbe rivelarsi estremamente vantaggiosa e infondere ulteriore fiducia mentre procediamo rapidamente alla risoluzione dei problemi a livello aziendale.

Lo script è semplice:

Comando dello script Shell per il ripristino del backup della configurazione SSH

Determinare la portata della vulnerabilità di OpenSSH

Ora che disponiamo di script per applicare e rimuovere la correzione, è giunto il momento di scrivere un altro script per determinarne l'applicabilità. Incorporeremo questo script in un sensore “ Tanium ” in modo da poter eseguire la query sull’intera rete di endpoint. Poiché diversi test hanno dimostrato che la soluzione alternativa ha avuto un impatto positivo, il metodo più semplice a nostra disposizione consiste nel verificare che il file ssh_config contenga l’output previsto dalla correzione.

Per garantire la portabilità, il metodo di implementazione che abbiamo scelto è stato una riga singola in awk, che visualizza le righe di un file che si trovano tra altre corrispondenze di espressioni regolari:

Script Shell per la verifica dello stato di risoluzione delle vulnerabilità di OpenSSH

Ciò si applica solo ai casi in cui la sequenza completa di correzione, composta da tre righe, sia stata scritta nel file. Abbiamo deciso di restituire la stringa “Potenzialmente vulnerabile” anziché “Vulnerabile” poiché la nostra soluzione funziona indipendentemente dalla versione di OpenSSH. Ampliando il campo d’azione, indipendentemente dalla versione, non sarà necessario aggiornare il nostro codice qualora i ricercatori continuassero a individuare ulteriori vulnerabilità relative alla stessa funzionalità Roaming di OpenSSH. (La funzione Roaming non risulta mai utile nella pratica, pertanto la sua disattivazione tramite configurazione rafforza la sicurezza senza incidere negativamente sulle operazioni.) Alcuni ricorderanno forse Shellshock, per cui sono stati necessari un paio di tentativi e aggiornamenti software prima che Community riuscisse a risolvere definitivamente il problema. Il nostro approccio garantisce la resilienza contro il ripetersi di tale situazione con il client SSH.

Ecco il risultato del nostro test effettuato su un file ssh_config predefinito:

Output del terminale che mostra i risultati della verifica della configurazione SSH e dell'individuazione delle vulnerabilità

E ora contro uno che avevamo appena sistemato:

Output del terminale che mostra la correzione riuscita della vulnerabilità di OpenSSH con conferma della verifica

Sembra ottimo! Abbiamo quindi integrato questi script in un sensore Tanium che chiameremo “Stato della soluzione alternativa alla fuga delle chiavi SSH”.

Configurazioni SSH specifiche per utente e perfezionamento dei contenuti

Nel corso delle nostre ricerche, non abbiamo trovato molti post nell’ Community che trattassero di macchine su cui gli utenti potessero aver definito i propri file ~/.ssh_config. Poiché queste impostazioni avrebbero la precedenza sulle configurazioni globali, è necessario applicare le correzioni in questa sede per risolvere la vulnerabilità. Ciò ci ha portato ad apportare ulteriori miglioramenti ai nostri contenuti, che ora includono anche le directory home. A causa delle differenze tra le piattaforme, ci siamo ritrovati con due versioni diverse degli script per supportare in modo equo sia OS X che le varianti *nix.

Inoltre, abbiamo migliorato la logica dei nostri script precedenti che applicavano la correzione, in modo da evitare di applicarla più volte e di appesantire i file di configurazione. Sono abbastanza lunghi da non poter più essere inseriti ordinatamente in un post del blog, ma ammontano comunque a poco più di 40 righe di codice e commenti.

Il risultato finale è una soluzione in grado di identificare in pochi secondi i sistemi “potenzialmente vulnerabili” su piattaforme *nix e OS X . Qualora i file di configurazione SSH presenti in locale non contengano la misura di mitigazione necessaria a garantire la sicurezza dell’azienda, gli utenti potranno applicare o annullare la correzione su uno o su tutti i sistemi dell’azienda in appena un paio di minuti.

Tanium la piattaforma

Tanium semplifica la gestione della vulnerabilità di OpenSSH poiché offre l’unica visibilità in tempo reale del settore sullo stato di tutti gli endpoint, indipendentemente dal numero di macchine. La piattaforma rappresenta il modo più rapido e semplice per implementare l’approccio descritto in questo articolo: si parte dai dati provenienti da una fonte attendibile, si sviluppano script, si effettuano test su larga scala e si perfeziona il tutto, per poi implementare pienamente quella che, in sostanza, diventa una nuova funzionalità della piattaforma.

Ci comunichi la Sua opinione oppure si rivolga al Suo Technical Account Manager qualora fosse interessato a implementare i contenuti nella Sua infrastruttura. Se non conosce ancora Tanium e desidera saperne di più, la preghiamo di contattarci all’indirizzo per richiedere una demo.

Rory Prendergast, Direttore senior
Peter Oelschlaeger, Direttore senior

Le interessa vedere “ Tanium ” in azione? Fissate un appuntamento con per una dimostrazione individuale oppure partecipate al nostro webinar settimanale. Si rivolga ai nostri esperti di “ Tanium” in occasione dei nostri prossimi eventi “ ”.