Wyszukiwanie w witrynie

Jak naprawić lukę w zabezpieczeniach SambaCry (CVE-2017-7494) w systemach Linux


Samba od dawna jest standardem udostępniania usług współdzielenia plików i drukowania klientom Windows w systemach *nix. Używany zarówno przez użytkowników domowych, firmy średniej wielkości, jak i duże, wyróżnia się jako rozwiązanie typu „go-to-to” w środowiskach, w których współistnieją różne systemy operacyjne.

Jak to niestety bywa w przypadku powszechnie używanych narzędzi, większość instalacji Samby jest narażona na atak, który może wykorzystać znaną lukę w zabezpieczeniach, co nie było uważane za poważne, dopóki atak ransomware WannaCry nie trafił do wiadomości dawno temu.

W tym artykule wyjaśnimy, czym jest ta luka w zabezpieczeniach Samby i jak chronić przed nią systemy, za które odpowiadasz. W zależności od typu instalacji (z repozytoriów lub ze źródła) będziesz musiał zastosować inne podejście, aby to zrobić.

Jeśli obecnie używasz Samby w jakimkolwiek środowisku lub znasz kogoś, kto to robi, czytaj dalej!

Luka

Przestarzałe i niezałatane systemy są podatne na lukę umożliwiającą zdalne wykonanie kodu. W uproszczeniu oznacza to, że osoba mająca dostęp do zapisywalnego udziału może załadować fragment dowolnego kodu i wykonać go z uprawnieniami roota na serwerze.

Problem jest opisany na stronie internetowej Samby jako CVE-2017-7494 i wiadomo, że dotyczy Samby w wersji 3.5 (wydanej na początku marca 2010) i nowszych. Nieoficjalnie nazwano go SambaCry ze względu na podobieństwa do WannaCry: oba atakują protokół SMB i są potencjalnie robakami, co może powodować rozprzestrzenianie się z systemu na system.

Debian, Ubuntu, CentOS i Red Hat podjęły szybkie działania w celu ochrony swoich użytkowników i wydały łatki dla obsługiwanych wersji. Dodatkowo uwzględniono także obejścia zabezpieczeń dla nieobsługiwanych rozwiązań.

Aktualizowanie Samby

Jak wspomniano wcześniej, w zależności od poprzedniej metody instalacji można zastosować dwa podejścia:

Jeśli zainstalowałeś Sambę z repozytoriów swojej dystrybucji.

Przyjrzyjmy się, co musisz zrobić w tym przypadku:

Napraw Sambacry w Debianie

Upewnij się, że apt jest ustawiony na pobieranie najnowszych aktualizacji zabezpieczeń, dodając następujące wiersze do listy źródeł (/etc/apt/sources.list):

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

Następnie zaktualizuj listę dostępnych pakietów:

aptitude update

Na koniec upewnij się, że wersja pakietu Samba jest zgodna z wersją, w której usunięto lukę (zobacz CVE-2017-7494):

aptitude show samba

Napraw Sambacry w Ubuntu

Na początek sprawdź dostępność nowych pakietów i zaktualizuj pakiet samby w następujący sposób:

sudo apt-get update
sudo apt-get install samba

Wersje Samby, w których zastosowano już poprawkę dla CVE-2017-7494, to:

  • 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

Na koniec uruchom następujące polecenie, aby sprawdzić, czy na Twoim Ubuntu jest teraz zainstalowana odpowiednia wersja Samby.

sudo apt-cache show samba

Napraw Sambacry na CentOS/RHEL 7

Poprawiona wersja Samby w EL 7 to samba-4.4.4-14.el7_3. Aby go zainstalować, wykonaj to

yum makecache fast
yum update samba

Tak jak poprzednio, upewnij się, że masz teraz poprawioną wersję Samby:

yum info samba

Starsze, nadal obsługiwane wersje CentOS i RHEL również mają dostępne poprawki. Sprawdź RHSA-2017-1270, aby dowiedzieć się więcej.

Jeśli zainstalowałeś Sambę ze źródła

Uwaga: w poniższej procedurze założono, że Samba została wcześniej zbudowana ze źródeł. Gorąco zachęcamy do dokładnego wypróbowania go w środowisku testowym PRZED wdrożeniem go na serwerze produkcyjnym.

Dodatkowo przed rozpoczęciem pamiętaj o utworzeniu kopii zapasowej pliku smb.conf.

W tym przypadku skompilujemy i zaktualizujemy Sambę również ze źródła. Zanim jednak zaczniemy, musimy upewnić się, że wszystkie zależności zostały wcześniej zainstalowane. Pamiętaj, że może to zająć kilka minut.

W Debianie i 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

W CentOS 7 lub podobnym:

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

Zatrzymaj usługę:

systemctl stop smbd

Pobierz i rozpakuj źródło (przy czym 4.6.4 jest najnowszą wersją w chwili pisania tego tekstu):

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

Tylko w celach informacyjnych sprawdź dostępne opcje konfiguracji dla bieżącej wersji.

./configure --help

Możesz dołączyć niektóre opcje zwrócone przez powyższe polecenie, jeśli zostały użyte w poprzedniej kompilacji, lub możesz wybrać opcję domyślną:

./configure
make
make install

Na koniec uruchom ponownie usługę.

systemctl restart smbd

i sprawdź, czy korzystasz z zaktualizowanej wersji:

smbstatus --version

co powinno zwrócić 4.6.4.

Rozważania ogólne

Jeśli używasz nieobsługiwanej wersji danej dystrybucji i z jakiegoś powodu nie możesz dokonać aktualizacji do nowszej, możesz wziąć pod uwagę następujące sugestie:

  • Jeśli SELinux jest włączony, jesteś chroniony!
  • Upewnij się, że udziały Samby są zamontowane z opcją noexec. Zapobiegnie to wykonywaniu plików binarnych znajdujących się w zamontowanym systemie plików.

Dodać,

nt pipe support = no

do sekcji [global] pliku smb.conf i uruchom ponownie usługę. Możesz pamiętać, że zgodnie z projektem Samba „może to wyłączyć niektóre funkcje w klientach Windows”.

Ważne: pamiętaj, że opcja „nt pipe support=no” wyłączy wyświetlanie udziałów w klientach Windows. Np.: gdy wpiszesz \\10.100.10.2\ w Eksploratorze Windows na serwerze samby, otrzymasz odmowę uprawnień. Aby uzyskać dostęp do udziału, klienci systemu Windows musieliby ręcznie określić udział jako \\10.100.10.2\nazwa_udziału.

Streszczenie

W tym artykule opisaliśmy lukę znaną jako SambaCry i sposoby jej ograniczenia. Mamy nadzieję, że będziesz mógł wykorzystać te informacje do ochrony systemów, za które jesteś odpowiedzialny.

Jeśli masz jakieś pytania lub uwagi dotyczące tego artykułu, skorzystaj z poniższego formularza, aby nas o tym poinformować.