Skanowanie luk bezpieczeństwa w Dockerze

Skanowanie luk bezpieczeństwa w Dockerze

W tym materiale postaram się opisać, w jaki sposób zainstalować oraz przeprowadzić skanowanie luk bezpieczeństwa w Dockerze. Tak samo, jak w przypadku serwerów, na których nie korzystamy z konteneryzacji tak samo i na takich, na których takie są, istotne jest dbanie o bezpieczeństwo całych środowisk, a w wypadku Dockera jeszcze obrazów, z których powstają kontenery. Na szczęście dostępnych jest wiele bezpłatnych narzędzi, które pomagają skanować i identyfikować luki w zabezpieczeniach w takich środowiskach. W tym artykule przyjrzymy się niektórym najpopularniejszym narzędziom i przedstawimy przykłady krok po kroku, jak je zainstalować i używać. Zacznijmy!

 

Trwają zapisy na Kurs AI dla Administratora Serwerów!

Stań się ekspertem w dziedzinie wykorzystania AI w swojej pracy! 

Chcesz dołączyć do szkolenia! Zapisy na stronie: https://asdevops.pl/ai/

 

 

Narzędzia do skanowania zabezpieczeń platformy Docker

Docker stał się popularną platformą służącą do konteneryzacji, którą stosuje się w branży IT. Jednak jak każde narzędzie czy też środowisko nie jest odporny na luki. W związku z tym skanowanie obrazów Dockera pod kątem bezpieczeństwa jest niezbędne. W ten sposób upewniamy się, że nie ma potencjalnych zagrożeń dla systemu.

Trivy

Trivy to skaner luk w zabezpieczeniach typu open source, którego można używać do skanowania obrazów kontenerów w poszukiwaniu luk. Jest to lekkie i łatwe w użyciu narzędzie, które obsługuje obrazy Dockera. Korzysta z wielu baz danych zawierających luki, w tym National Vulnerability Database (NVD), Red Hat Security Data API i innych. Trivy jest dostępny zarówno na platformy Linux, jak i Windows.

Graype

Graype to następny skaner bezpieczeństwa typu open source przeznaczone do skanowania i analizy luk w zabezpieczeniach obrazów i pakietów oprogramowania. Może być też używany do skanowania rejestrów kontenerów i repozytoriów kodu źródłowego w celu zidentyfikowania luk w zabezpieczeniach, problemów z licencjami i błędów konfiguracji.

Docker Security Scanning

Skanowanie bezpieczeństwa Dockera (Docker Security Scanning) to oficjalne narzędzie dostarczane przez firmę Docker, które skanuje obrazy w poszukiwaniu znanych luk w zabezpieczeniach. Wykorzystuje bazę danych luk w zabezpieczeniach dostarczoną przez National Vulnerability Database (NVD) do identyfikowania luk w zabezpieczeniach obrazów. Zapewnia również interfejs API, którego można użyć do integracji z innymi narzędziami i platformami.

Po krótkim omówieniu przyszła pora na instalację oraz sposób użycia każdego z wymienionych.

Instalacja Trivy

Pobieramy najnowszą wersję ze strrony https://github.com/aquasecurity/trivy/releases. Aktualnie najnowsza wersja to 0.37.3. Z listy znajdujemy odpowiednią paczkę przeznaczoną dla dystrybucji, z jakiej korzystamy i pobieramy za pomocą:

wget https://github.com/aquasecurity/trivy/releases/download/v0.37.3/trivy_0.37.3_Linux-64bit.deb

Instalację przeprowadzam w systemie Debian, dlatego pobieram dokładnie ten plik natomiast jeżeli korzystasz z Red Hat, to powinieneś odnaleźć paczkę .rpm.

Po pobraniu instalujemy Trivy przy pomocy polecenia:

sudo dpkg -i trivy_0.37.3_Linux-64bit.deb
Wybieranie wcześniej niewybranego pakietu trivy.
(Odczytywanie bazy danych ... 204622 pliki i katalogi obecnie zainstalowane.)
Przygotowywanie do rozpakowania pakietu trivy_0.37.3_Linux-64bit.deb ...
Rozpakowywanie pakietu trivy (0.37.3) ...
Konfigurowanie pakietu trivy (0.37.3) ...

Instalacja jest dość szybka i nie wymaga, żadnej ingerencji z naszej strony. W celu weryfikacji poprawności instalacji w wierszu poleceń wprowadzamy polecenie:

trivy version
Version: 0.37.3

Skanowanie z użyciem Trivy

Wykonanie skanowania za pomocą tego narzędzie jest niesamowicie proste. Składnia do przeprowadzenia skanowania wygląda następująco:

trivy image <nazwa-obrazu>

Zgodnie z opisem w ten sposób przeprowadzimy skanowanie obrazu. Jeżeli obecnie nie masz, żadnego pobranego to dla przykładu pobierzmy obraz systemu bazowego debian:

docker pull debian

Następnie przeprowadźmy skanowanie:

trivy image debian   	 
2023-03-03T08:08:49.582+0100    INFO    Need to update DB
2023-03-03T08:08:49.582+0100    INFO    DB Repository: ghcr.io/aquasecurity/trivy-db
2023-03-03T08:08:49.582+0100    INFO    Downloading DB...
35.76 MiB / 35.76 MiB [-----------------------------] 100.00% 15.99 MiB p/s 2.4s
2023-03-03T08:08:53.330+0100    INFO    Vulnerability scanning is enabled
2023-03-03T08:08:53.330+0100    INFO    Secret scanning is enabled
2023-03-03T08:08:53.330+0100    INFO    If your scanning is slow, please try '--scanners vuln' to disable secret scanning
2023-03-03T08:08:53.330+0100    INFO    Please see also https://aquasecurity.github.io/trivy/v0.37/docs/secret/scanning/#recommendation for faster secret detection
2023-03-03T08:08:55.322+0100    INFO    Detected OS: debian
2023-03-03T08:08:55.322+0100    INFO    Detecting Debian vulnerabilities...
2023-03-03T08:08:55.330+0100    INFO    Number of language-specific files: 0

debian (debian 11.6)

Total: 72 (UNKNOWN: 0, LOW: 55, MEDIUM: 5, HIGH: 11, CRITICAL: 1)

Nie wklejam całego wyniku, jaki otrzymałem, ponieważ jest on dość długi. Natomiast z końcowej informacji z przykładu wypisaną mamy ilość zagrożeń podzieloną w zależności od klasyfikacji zagrożenia. Każdy incydent jest w skrócie opisany, jak i również jest podany dokładny link, gdzie możemy więcej o tym przeczytać. Prostota w połączeniu z dość szczegółowymi informacjami jest ogromną zaletą tego oprogramowania, o czym myślę, że właśnie się przekonałeś.

Instalacja Graype

Zalecanym sposobem instalacji tego narzędzia jest pobranie pliku binarnego za pomocą narzędzia curl oraz jego uruchomienie. Wykonujemy to w następujący sposób:

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b /usr/local/bin
[info] checking github for the current release tag
[info] fetching release script for tag='v0.57.1'
[info] checking github for the current release tag
[info] using release tag='v0.57.1' version='0.57.1' os='linux' arch='amd64'
[info] installed /usr/local/bin/grype

Instalacja nie powinna sprawić nam problemu. Aby sprawdzić, czy wszystko poszło po naszej myśli, wystarczy, że wprowadzimy graype w wierszu poleceń, a zostanie wyświetlona lista opcji programu.

Skanowanie z użyciem Graype

Podstawowym skanowaniem, jakie możemy wykonać za pomocą tego narzędzia, wygląda następująco:

grype <image>

Czyli w naszym wypadku gdy mamy pobrany obraz debiana:

grype debian
 ✔ Vulnerability DB    	[no update available]
 ✔ Loaded image       	 
 ✔ Parsed image       	 
 ✔ Cataloged packages  	[96 packages]
 ✔ Scanned image       	[74 vulnerabilities]

Na początku zostanie pobrana baza z lukami oraz inne czynności przygotowujące do skanowania. Na końcu wypisana została liczba pakietów oraz luk, jakie udało się wykryć. Natomiast poniżej tego, co zaprezentowałem w przykładzie, znajduje się szczegółowa lista każdego pakietu razem z opisem CVE.

Możesz jeszcze chcieć wykonać skanowanie wszystkich warstw obrazu. Dodajesz do powyższego polecenia opcję –scope all-layers tak jak to prezentuje na poniższym przykładzie:

grype debian --scope all-layers

W przypadku prezentowanego obrazu wynik będzie identyczny. Jednak przy własnych obrazach i większej ilości warstw wyniki mogą się różnić.

Instalacja Docker Security Scanning

To narzędzie jest wbudowane w Dockera dlatego też, jeżeli masz go zainstalowanego, to nie musisz nic dodatkowo instalować. Sposoby na instalację Dockera na różnych dystrybucjach odnajdziesz w naszym szkoleniu https://grupadm.pl/product/przedsprzedaz-docker-i-konteneryzacja-dla-administratora/ jak i również w dokumentacji Dockera pod adresem https://docs.docker.com/engine/install/.

W celu sprawdzenia, czy skaner jest zainstalowany, wprowadzamy w wierszu poleceń:

docker scan --version
Version:	v0.23.0
Git commit: 6c852fa
Provider:   Snyk (1.1064.0 (standalone))

Skanowanie luk bezpieczeństwa w Dockerze z użyciem Docker Security Scanning

Podstawową formą skanowania przy użyciu tego narzędzia jest:

docker scan <IMAGE-NAME>

Tak jak zapewne zauważyłeś, jest to identyczna forma jak poznanych poprzednio poleceń. Dlatego, aby przeprowadzić skanowanie naszego obrazu, wprowadzamy powyższe polecenie w następujący sposób:

docker scan debian
Docker Scan relies upon access to Snyk, a third party provider, do you consent to proceed using Snyk? (y/N)
y
failed to get DockerScanID: You need to be logged in to Docker Hub to use the scan feature.

If you are not using Docker Desktop, either
- use the "docker login" CLI command with a username and password. Note this will not work if
  2FA is required or if SSO enforcement is enabled on Docker Hub; or
- use the "docker login" CLI command with a username and Personal Access Token. This requires
  a token to be generated in advance.

If you are using Docker Desktop: login via the UI or whale menu

Nie jesteśmy w stanie wykonać skanowania, ponieważ nie jesteśmy zalogowani. W tym celu przed skanowaniem musimy zalogować się do Docker Hub przy pomocy polecenia:

docker login

Oczywiście musimy posiadać konto na Docker Hub (https://hub.docker.com/) dlatego, jeżeli jeszcze nie masz, to właśnie nadarzyła się okazja na założenie takiego.

Po zalogowaniu się możemy przeprowadzić skanowanie za pomocą wprowadzonego w poprzednim przykładzie polecenia:

Testing debian...

✗ Low severity vulnerability found in util-linux/libblkid1
  Description: Information Exposure
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-UTILLINUX-2401081
  Introduced through: util-linux/libblkid1@2.36.1-8+deb11u1, e2fsprogs@1.46.2-2, util-linux/libmount1@2.36.1-8+deb11u1, util-linux/mount@2.36.1-8+deb11u1, util-linux/libuuid1@2.36.1-8+deb11u1, util-linux@2.36.1-8+deb11u1, util-linux/bsdutils@1:2.36.1-8+deb11u1, util-linux/libsmartcols1@2.36.1-8+deb11u1
  From: util-linux/libblkid1@2.36.1-8+deb11u1
  From: e2fsprogs@1.46.2-2 > util-linux/libblkid1@2.36.1-8+deb11u1
  From: util-linux/libmount1@2.36.1-8+deb11u1 > util-linux/libblkid1@2.36.1-8+deb11u1
  and 15 more...

Tym razem skanowanie zostanie wykonane i otrzymamy równie obszerną listę, jak w przypadku poprzednich narzędzi. Tak naprawdę powyższy skaner korzysta z bazy snyk. O samym projekcie możesz poczytać pod adresem https://snyk.io/.

Podsumowanie – Skanowanie luk bezpieczeństwa w Dockerze

Skanowanie obrazów Dockera pod względem luk bezpieczeństwa nie jest niczym trudnym czy też nie wymaga wprowadzenia bardzo skomplikowanych poleceń. Pokazałem to w tym materiale. Mam też nadzieję, że ze względu na zaprezentowaną prostotę namówiłem Cię do korzystania z tych narzędzi. Są one darmowe, jak i ogólnodostępne, jedyny wysiłek, jaki musisz włożyć to ich instalacja oraz wprowadzenie prostych poleceń.

Chcesz wiedzieć więcej na temat bezpieczeństwa? Przeczytaj nasze artykuły lub weź udział w kursach!

 

Trwają zapisy na Kurs AI dla Administratora Serwerów!

Stań się ekspertem w dziedzinie wykorzystania AI w swojej pracy! 

Chcesz dołączyć do szkolenia! Zapisy na stronie: https://asdevops.pl/ai/

 

 

Kurs AI rusza 17 lipca!

X