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ć.