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!

Pierwszy webinar z SNMP już 26 marca!
Chcesz zrozumieć, jak skutecznie monitorować sieć i szybko reagować na problemy? Dołącz do naszych darmowych warsztatów online i odkryj SNMP – potężny protokół, który umożliwia efektywne zarządzanie infrastrukturą IT! zapisz się na bezpłatny webinar z SNMP!
Widzimy się 26 marca o 13:00!
Dołącz na: https://asdevops.pl/warsztaty/
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!