Ricerca nel sito web

Come risolvere la vulnerabilità SambaCry (CVE-2017-7494) nei sistemi Linux


Samba è da tempo lo standard per fornire servizi di file e stampa condivisi ai client Windows su sistemi *nix. Utilizzato da utenti domestici, aziende di medie dimensioni e grandi aziende, si distingue come la soluzione ideale negli ambienti in cui coesistono diversi sistemi operativi.

Come purtroppo accade con gli strumenti più diffusi, la maggior parte delle installazioni di Samba sono a rischio di un attacco che potrebbe sfruttare una vulnerabilità nota, che non era considerata grave fino a quando l'attacco ransomware WannaCry non ha fatto notizia troppo molto tempo fa.

In questo articolo spiegheremo cos'è questa vulnerabilità di Samba e come proteggere da essa i sistemi di cui sei responsabile. A seconda del tipo di installazione (da repository o da sorgente), dovrai adottare un approccio diverso per farlo.

Se stai utilizzando Samba in qualsiasi ambiente o conosci qualcuno che lo fa, continua a leggere!

La vulnerabilità

I sistemi obsoleti e privi di patch sono vulnerabili a una vulnerabilità legata all'esecuzione di codice in modalità remota. In termini semplici, ciò significa che una persona con accesso a una condivisione scrivibile può caricare un pezzo di codice arbitrario ed eseguirlo con permessi di root nel server.

Il problema è descritto nel sito Web di Samba come CVE-2017-7494 ed è noto che interessa le versioni di Samba 3.5 (rilasciate all'inizio di marzo 2010) e successive. Ufficiosamente, è stato chiamato SambaCry a causa delle sue somiglianze con WannaCry: entrambi prendono di mira il protocollo SMB e sono potenzialmente wormable, il che può causarne la diffusione da un sistema all'altro.

Debian, Ubuntu, CentOS e Red Hat hanno adottato misure rapide per proteggere i propri utenti e hanno rilasciato patch per le versioni supportate. Inoltre, sono state fornite soluzioni alternative di sicurezza anche per quelli non supportati.

Aggiornamento di Samba

Come accennato in precedenza, ci sono due approcci da seguire a seconda del metodo di installazione precedente:

Se hai installato Samba dai repository della tua distribuzione.

Diamo un’occhiata a cosa devi fare in questo caso:

Correggi Sambacry in Debian

Assicurati che apt sia impostato per ricevere gli ultimi aggiornamenti di sicurezza aggiungendo le seguenti righe all'elenco delle fonti (/etc/apt/sources.list):

deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main

Successivamente, aggiorna l'elenco dei pacchetti disponibili:

aptitude update

Infine, assicurati che la versione del pacchetto samba corrisponda alla versione in cui la vulnerabilità è stata corretta (vedi CVE-2017-7494):

aptitude show samba

Correggi Sambacry in Ubuntu

Per iniziare, controlla i nuovi pacchetti disponibili e aggiorna il pacchetto samba come segue:

sudo apt-get update
sudo apt-get install samba

Le versioni di Samba in cui è già stata applicata la correzione per CVE-2017-7494 sono le seguenti:

  • 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8

Infine, esegui il comando seguente per verificare che sul tuo box Ubuntu sia ora installata la versione corretta di Samba.

sudo apt-cache show samba

Correggi Sambacry su CentOS/RHEL 7

La versione di Samba con patch in EL 7 è samba-4.4.4-14.el7_3. Per installarlo, fai

yum makecache fast
yum update samba

Come prima, assicurati di avere ora la versione Samba con patch:

yum info samba

Anche le versioni precedenti e ancora supportate di CentOS e RHEL dispongono di correzioni disponibili. Controlla RHSA-2017-1270 per saperne di più.

Se hai installato Samba dal sorgente

Nota: la seguente procedura presuppone che tu abbia precedentemente creato Samba dal sorgente. Ti consigliamo vivamente di provarlo approfonditamente in un ambiente di test PRIMA di distribuirlo su un server di produzione.

Inoltre, assicurati di eseguire il backup del file smb.conf prima di iniziare.

In questo caso compileremo e aggiorneremo Samba anche dal sorgente. Prima di iniziare, però, dobbiamo assicurarci che tutte le dipendenze siano state precedentemente installate. Tieni presente che l'operazione potrebbe richiedere diversi minuti.

In Debian e Ubuntu:

aptitude install acl attr autoconf bison build-essential \
    debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
    libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
    libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
    libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
    libpopt-dev libreadline-dev perl perl-modules pkg-config \
    python-all-dev python-dev python-dnspython python-crypto xsltproc \
    zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto

In CentOS 7 o simili:

yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
    libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
    perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
    python-crypto gnutls-devel libattr-devel keyutils-libs-devel \
    libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
    pam-devel popt-devel python-devel readline-devel zlib-devel

Interrompi il servizio:

systemctl stop smbd

Scarica e decomprimi il sorgente (la versione 4.6.4 è l'ultima al momento in cui scriviamo):

wget https://www.samba.org/samba/ftp/samba-latest.tar.gz 
tar xzf samba-latest.tar.gz
cd samba-4.6.4

Solo a scopo informativo, controlla le opzioni di configurazione disponibili per la versione corrente con.

./configure --help

Puoi includere alcune delle opzioni restituite dal comando precedente se sono state utilizzate nella build precedente, oppure puoi scegliere di utilizzare l'impostazione predefinita:

./configure
make
make install

Infine, riavvia il servizio.

systemctl restart smbd

e verifica che stai utilizzando la versione aggiornata:

smbstatus --version

che dovrebbe restituire 4.6.4.

considerazioni generali

Se stai utilizzando una versione non supportata di una determinata distribuzione e per qualche motivo non riesci a eseguire l'aggiornamento a una più recente, potresti prendere in considerazione i seguenti suggerimenti:

  • Se SELinux è abilitato, sei protetto!
  • Assicurati che le condivisioni Samba siano montate con l'opzione noexec. Ciò impedirà l'esecuzione dei file binari che risiedono sul filesystem montato.

Aggiungere,

nt pipe support = no

alla sezione [global] del tuo file smb.conf e riavvia il servizio. Potresti tenere presente che questo "potrebbe disabilitare alcune funzionalità nei client Windows", come da progetto Samba.

Importante: tieni presente che l'opzione "nt pipe support=no" disabiliterebbe l'elenco delle condivisioni dai client Windows. Ad esempio: quando digiti \\10.100.10.2\ da Esplora risorse su un server Samba riceverai un'autorizzazione negata. I client Windows dovrebbero specificare manualmente la condivisione come \\10.100.10.2\nome_condivisione per accedere alla condivisione.

Riepilogo

In questo articolo abbiamo descritto la vulnerabilità nota come SambaCry e come mitigarla. Ci auguriamo che tu possa utilizzare queste informazioni per proteggere i sistemi di cui sei responsabile.

Se hai domande o commenti su questo articolo, non esitare a utilizzare il modulo sottostante per farcelo sapere.