Skanowanie obrazów Dockerowych pod kątem bezpieczeństwa z Anchore

W dzisiejszym artykule skupimy się na temacie skanowania obrazów pod kątem bezpieczeństwa za pomocą narzędzia Anchore. Pokażę Ci, w jaki sposób możesz przeskanować obraz Twojej aplikacji lub oficjalnie obrazy dostępne na Docker Hub.

Spis treści

W artykule poruszymy następujące kwestie:

  • Dlaczego do skanowania obrazów używam Anchore?
  • Architektura Anchore
  • Anchore – wymagania wstępne i instalacja
  • Skanowanie obrazów: centos, nginx, aspnetcore

Skanowanie obrazów

Aby sprawdzić działanie Anchore, posłużymy się trzema oficjalnymi obrazami z Docker Hub. Będzie to kolejno: centos, nginx oraz aspnetcore.

Dlaczego wybrałem te obrazy?

Docker opublikował raport prezentujący najpopularniejsze obrazy w roku 2019.
Zarówno nginx jak i centos, znalazły się w TOP 10 najczęściej wyszukiwanych obrazów.

Obraz aspnetcore jest mi szczególnie bliski, ponieważ jak pewnie wiesz, na co dzień oprócz tematów związanych z Dockerem, zajmuję się projektowaniem i tworzeniem aplikacji, korzystając z frameworka ASP NET Core.

Źródło: https://www.docker.com/blog/introducing-the-docker-index/?fbclid=IwAR3QCy9cAnMrEO4L-PwRvlDrqbRCZWAlHF-jg9JZbhO8D141DVMflyHZI_Y


Dlaczego Anchore?

Anchore jest moim zdaniem jednym z najlepszych narzędzi open-source służącym do wykrywania podatności w obrazach Dockerowych.


Po pierwsze, Anchore posiada bardzo dobrą dokumentację. Czy wyobrażasz sobie korzystanie z jakiegoś narzędzia bez dokumentacji? Ja nie.

Po drugie posiada community, które ciągle wspomaga jego rozwój. Z reguły, gdy rozpoznaje narzędzia open-source, skupiam się właśnie na tych dwóch czynnikach – dokumentacja i community.

Na GitHubie można znaleźć wiele interesujących projektów, jednak często brak dokumentacji sprawia, że giną one śmiercią naturalną. Jeżeli Anchore nie spełnia Twoich oczekiwań, sprawdź koniecznie mój wpis na temat innych narzędzi, które polecam. Wpis dostępny jest TUTAJ.

Po trzecie, Anchore integruje się z systemami CI / CD. Przykładowo, istnieje plugin integrujący Anchore z Jenkinsem. Uważam jednak, że Anchore może zostac zintegrowany niemal z każdym narzędziem CI / CD. Wynika to z jego architektury, którą za chwilę poznasz.

Polecam przeczytać chociaż pierwsze fragmenty poprzedniego wpisu, aby zrozumieć skąd podatności znajdują się w obrazach oraz dlaczego należy je skanować.


Anchore – architektura

Spójrz proszę na poniższy obrazek, prezentujący architekturę Anchore. Komponenty w czerwonej ramce, są cześcią Anchore Enterprise – czyli płatnej wersji Anchore. My skupimy się głównie na komponentach wchodzących w skład Anchore open-source (w niebieskich ramkach).

Jak łatwo zauważyć na powyższym diagramie, Anchore został podzielony na 4 warstwy:

  • Warstwa kliencka
  • Warstwa API
  • Warstwa stanu
  • Warstwa “robocza”

Anchore CLI – to nic innego jak klient, który komunikuje się za pomocą REST z Anchore API.

Anchore API – kluczowa część architektury. Odbiera komunikaty od Anchore CLI a następnie komunikuje się z komponentami z warstwy State Tier

Catalog – odpowiada za zarządzanie stanem. Przechowuje dane niestrukturalne – np. pliki w formacie JSON (rezultat skanowania)

Policy Engine – wczytuje rezultaty skanowania pochodzące z Catalog a następnie normalizuje niestrukturalne dane, tak by można było je filtrować oraz weryfikować pod kątem zdefiniowanych polityk.

SimpleQueque – kolejka PostgreSQL używana przez pozostałe komponenty do asynchronicznych operacji (rozkazy, notyfikacje)

Analyzer – pobiera obrazy z Docker Registry (Docker Hub lub inne) i przeprowadza skanowanie. Odbiera rozkazy od SimpleQueque, a następnie po zakończeniu skanowania przekazuje rezultaty do Catalog oraz PolicyEngine.


Anchore – wymagania wstępne

Rekomendacją ze strony producenta jest minimum 4GB RAM i 10GB miejsca na dysku. Upewnij się, że maszyna na której będzie działać Anchore, spełnia te wymagania. Osobiście przeprowadziłem testy na maszynie z 2GB RAM i okazało się nie wystarczająco. Na szczęście była to maszyna wirtualne na Azure, więc przesunięcie suwaka w prawo załatwiło sprawę 🙂

Ważne. Całość poniżej prezentowanych poleceń została wykonana na Linuxie, a dokładniej na Ubuntu 18.04.


Anchore – instalacja

Istnieją dwie opcje na zainstalowanie Anchore – sposób tradycyjny oraz poprzez użycie Dockera. Jak można się łatwo domyślić – wybrałem opcję nr 2 🙂

Okey, czas na konfigurację i instalację. Postępuj zgodnie z instrukcją poniżej.

Stwórz katalog do przechowywania plików konfiguracyjnych

$ mkdir ~/aevolume && cd ~/aevolume

Skopiuj pliki konfiguracyjne

Wewnątrz obrazu anchore-engine, znajduje się plik docker-compose.yml, który posłuży do uruchomienia Anchore. Pobierz zatem obraz anchore-engine.

$ docker pull docker.io/anchore/anchore-engine:latest

Skopiuj plik docker-compose.yml do Twojego katalogu roboczego.

$ docker create --name ae docker.io/anchore/anchore-engine:latest
$ docker cp ae:/docker-compose.yaml ~/aevolume/docker-compose.yaml
$ docker rm ae

Upewnij się, że plik docker-compose.yml został poprawnie skopiowany do Twojego katalogu roboczego.

$ ls ~/aevolume
docker-compose.yaml

Pobierz i uruchom kontenery Anchore

Przejdź do katalogu roboczego i pobierz wszystkie niezbędne obrazy

$ cd ~/aevolume
$ docker-compose pull

Teraz nadszedł czas na uruchomienie. Jest tutaj jednak mała uwaga. Podczas pierwszego uruchomienia, Anchore musi pobrać bazę wszystkich podatności na dysk. Może to potrwać do 10 minut. Dlatego przed uruchomieniem całości, należy ustawić zmienną środowiskową COMPOSE_HTTP_TIMEOUT. Dla bezpieczeństwa ustawimy ją na 1000 sekund. Jeżeli Twoje połączenie internetowe jest kiepskie, ta wartość może być niewystarczająca.

$ COMPOSE_HTTP_TIMEOUT=1000 docker-compose up -d

Starting aevolume_anchore-db_1 ... done
Starting aevolume_engine-catalog_1 ... done
Starting aevolume_engine-api_1           ... done
Starting aevolume_engine-analyzer_1      ... done
Starting aevolume_engine-policy-engine_1 ... done
Starting aevolume_engine-simpleq_1       ... done

Upewnij się, że wszystkie usługi zostały uruchomione poprawnie

$ docker-compose ps

             Name                            Command                       State                   Ports
-----------------------------------------------------------------------------------------------------------------
aevolume_anchore-db_1             docker-entrypoint.sh postgres    Up                      5432/tcp
aevolume_engine-analyzer_1        /docker-entrypoint.sh anch ...   Up (health: starting)   8228/tcp
aevolume_engine-api_1             /docker-entrypoint.sh anch ...   Up (health: starting)   0.0.0.0:8228->8228/tcp
aevolume_engine-catalog_1         /docker-entrypoint.sh anch ...   Up (health: starting)   8228/tcp
aevolume_engine-policy-engine_1   /docker-entrypoint.sh anch ...   Up (health: starting)   8228/tcp
aevolume_engine-simpleq_1         /docker-entrypoint.sh anch ...   Up (health: starting)   8228/tcp

Sprawdź status Anchore Engine za pomocą następującego polecenia:

$ docker-compose exec engine-api anchore-cli system status

Service analyzer (anchore-quickstart, http://engine-analyzer:8228): up
Service simplequeue (anchore-quickstart, http://engine-simpleq:8228): up
Service policy_engine (anchore-quickstart, http://engine-policy-engine:8228): up
Service catalog (anchore-quickstart, http://engine-catalog:8228): up
Service apiext (anchore-quickstart, http://engine-api:8228): up

Engine DB Version: 0.0.12
Engine Code Version: 0.6.1

I teraz ważna kwestia. Po mimo, że Anchore wystartował poprawnie, podczas pierwszego uruchomienia aktualizuje on bazę danych CVE. Zanim zaczniesz skanowanie obrazów, upewnij się ze cała baza danych została zsynchronizowana.

$ docker-compose exec engine-api anchore-cli system feeds list


Feed               Group           LastSync                      RecordCount
nvdv2              nvdv2:cves      pending                       0
vulnerabilities    alpine:3.10     2020-02-03T05:52:16.614182    1725
vulnerabilities    alpine:3.3      2020-02-03T05:52:44.576739    457
vulnerabilities    alpine:3.4      2020-02-03T05:52:52.426065    681
vulnerabilities    alpine:3.5      2020-02-03T05:53:04.347937    875
vulnerabilities    alpine:3.6      2020-02-03T05:53:19.113143    1051
vulnerabilities    alpine:3.7      2020-02-03T05:54:37.856837    1395
vulnerabilities    alpine:3.8      2020-02-03T05:55:02.512212    1486
vulnerabilities    alpine:3.9      2020-02-03T05:55:30.023154    1558
vulnerabilities    amzn:2          2020-02-03T05:56:00.192895    299
vulnerabilities    centos:5        pending                       1000
vulnerabilities    centos:6        pending                       0
vulnerabilities    centos:7        pending                       0
vulnerabilities    centos:8        pending                       0
vulnerabilities    debian:10       pending                       0
vulnerabilities    debian:11       pending                       0
vulnerabilities    debian:7        pending                       0
vulnerabilities    debian:8        pending                       0

Twoja instancja Anchore będzie w pełni gotowa, gdy wszystkie wartości w kolumnie RecordCount będą większe od 0.


Skanowanie obrazu Centos:7

Aby przeskanować dowolny obraz przy użyciu Anchore, wykorzystamy anchore-cli. Pierwszym krokiem jest pobranie obrazu przez Anchore-Engine. W naszym przypadku będzie to Centos:7.

$ docker-compose exec engine-api anchore-cli \
    image add docker.io/library/centos:7

Co ważne, pobieranie z Docker Hub zostanie zainicjalizowane w tle. Aby sprawdzić, czy obraz jest już gotowy do skanowania, skorzystaj z polecenia:

$ docker-compose exec engine-api anchore-cli \
    image wait docker.io/library/centos:7

Anchore umożliwia weryfikacje zainstalowanych pakietów oraz modułów. Służy do tego następujące polecenie:

$  docker-compose exec engine-api anchore-cli \
     image content docker.io/library/centos:7

os: available
files: available
npm: available
gem: available
python: available
java: available

Wreszcie nadchodzi wyczekiwane skanowanie.

$  docker-compose exec engine-api anchore-cli \
     image vuln docker.io/library/centos:7 all

I co? Jaki jest jego rezultat? Zżera cię ciekwość? Więc proszę – oto wyniki skanowania obrazu centos:7

Vulnerability ID   Package                          Severity   Fix                   Vulnerability URL
RHSA-2019:4190     nss-3.44.0-4.el7                 High       0:3.44.0-7.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2019:4190     nss-softokn-3.44.0-5.el7         High       0:3.44.0-8.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2019:4190     nss-softokn-freebl-3.44.0-5.el7  High       0:3.44.0-8.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2019:4190     nss-sysinit-3.44.0-4.el7         High       0:3.44.0-7.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2019:4190     nss-tools-3.44.0-4.el7           High       0:3.44.0-7.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2019:4190     nss-util-3.44.0-3.el7            High       0:3.44.0-4.el7_7      https://access.redhat.com/errata/RHSA-2019:4190
RHSA-2020:0227     sqlite-3.7.17-8.el7              High       0:3.7.17-8.el7_7.1    https://access.redhat.com/errata/RHSA-2020:0227

W obrazie centos:7, Anchore wykrył aż 7 podatności oznaczonych wysokim ryzykiem! A przecież jest to obraz pochodzący z sprawdzonego i oficjalnego źródła – Docker Hub’a.


Skanowanie obrazu Nginx

Na tapetę weźmiemy obraz nginx w wersji 1.17.8 (najbardziej aktualny w czasie pisania tego artykułu).

Postępujemy analogicznie jak w przypadku obrazu centos. Najpierw przy wykorzystaniu polecenia add, pobieramy obraz z Docker Huba i czekamy aż obraz zostanie pobrany przez Anchore.

$ docker-compose exec engine-api anchore-cli \
    image add docker.io/library/nginx:1.17.8
$ docker-compose exec engine-api anchore-cli \
    image wait docker.io/library/nginx:1.17.8

Gdy obraz jest gotowy – skanujemy całość poleceniem:

$  docker-compose exec engine-api anchore-cli \
     image vuln docker.io/library/nginx:1.17.8 all

I co otrzymujemy? 🙂

Vulnerability ID        Package                                   Severity          Fix                    CVE Refs        Vulnerability URL
CVE-2005-2541           tar-1.30+dfsg-6                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2007-5686           login-1:4.5-1.1                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-5686           passwd-1:4.5-1.1                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-6755           libssl1.1-1.1.1d-0+deb10u2                Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-6755
CVE-2009-4487           nginx-1.17.8-1~buster                     Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2009-4487
CVE-2010-0928           libssl1.1-1.1.1d-0+deb10u2                Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-0928
CVE-2010-4051           libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4051
CVE-2010-4051           libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4051
CVE-2010-4052           libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4052
CVE-2010-4052           libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4052
CVE-2010-4756           libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4756
CVE-2010-4756           libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4756
CVE-2011-3374           apt-1.8.2                                 Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3374
CVE-2011-3374           libapt-pkg5.0-1.8.2                       Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3374
CVE-2011-3389           libgnutls30-3.6.7-4                       Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3389
CVE-2011-4116           perl-base-5.28.1-6                        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-4116
CVE-2013-0340           libexpat1-2.2.6-2+deb10u1                 Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-0340
CVE-2013-4235           login-1:4.5-1.1                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4235
CVE-2013-4235           passwd-1:4.5-1.1                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4235
CVE-2013-4392           libsystemd0-241-7~deb10u2                 Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4392
CVE-2013-4392           libudev1-241-7~deb10u2                    Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4392
CVE-2014-8130           libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2014-8130
CVE-2015-9019           libxslt1.1-1.1.32-2.2~deb10u1             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2015-9019
CVE-2016-9085           libwebp6-0.6.1-2                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2016-9085
CVE-2017-11164          libpcre3-2:8.39-12                        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-11164
CVE-2017-15232          libjpeg62-turbo-1:1.5.2-2+b1              Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-15232
CVE-2017-16231          libpcre3-2:8.39-12                        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-16231
CVE-2017-16232          libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-16232
CVE-2017-17973          libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-17973
CVE-2017-18018          coreutils-8.30-3                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-18018
CVE-2017-5563           libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-5563
CVE-2017-7245           libpcre3-2:8.39-12                        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-7245
CVE-2017-7246           libpcre3-2:8.39-12                        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-7246
CVE-2017-9117           libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-9117
CVE-2017-9937           libjbig0-2.1-3.1+b2                       Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-9937
CVE-2018-1000654        libtasn1-6-4.13-3                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-1000654
CVE-2018-10126          libtiff5-4.1.0+git191117-2~deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-10126
CVE-2018-14048          libpng16-16-1.6.36-6                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-14048
CVE-2018-14550          libpng16-16-1.6.36-6                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-14550
CVE-2018-20796          libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-20796
CVE-2018-20796          libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-20796
CVE-2018-6829           libgcrypt20-1.8.4-5                       Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-6829
CVE-2019-1010022        libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022        libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023        libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023        libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024        libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010024
CVE-2019-1010024        libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010024
CVE-2019-1010025        libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010025
CVE-2019-1010025        libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010025
CVE-2019-19882          login-1:4.5-1.1                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-19882
CVE-2019-19882          passwd-1:4.5-1.1                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-19882
CVE-2019-6129           libpng16-16-1.6.36-6                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-6129
CVE-2019-9192           libc-bin-2.28-10                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9192
CVE-2019-9192           libc6-2.28-10                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9192
CVE-2019-9893           libseccomp2-2.3.3-4                       Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9893
CVE-2019-9923           tar-1.30+dfsg-6                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9923
CVE-2019-18224          libidn2-0-2.0.5-1                         Unknown           2.0.5-1+deb10u1                        https://security-tracker.debian.org/tracker/CVE-2019-18224
CVE-2019-20388          libxml2-2.9.4+dfsg1-7+b3                  Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2019-20388
CVE-2020-7595           libxml2-2.9.4+dfsg1-7+b3                  Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2020-7595

Dużo tego – przyznaję, że nie liczyłem ile wpisów wykrył nam Anchore. Na szczęście wszystkie wykryte wpisy są w statusie “Nieistotne” lub “Nieznane”.

Skanowanie na mojej maszynie zajęło mniej niż 3 sekundy, co również dobrze świadczy o Anchore.

Skanowanie obrazu ASP NET Core

Posłużymy się najnowszym wydaniem (na czas pisania tego artykułu) obrazu ASP NET Core w wersji 3.1. Będziemy postępować analogicznie jak w przypadku centos i nginx. W skrócie – pobieramy obraz, upewniamy się że obraz został pobrany, skanujemy.

$ docker-compose exec engine-api anchore-cli \
    image add mcr.microsoft.com/dotnet/core/aspnet:3.1
$ docker-compose exec engine-api anchore-cli \
    image wait mcr.microsoft.com/dotnet/core/aspnet:3.1

Gdy obraz będzie gotowy – skanujemy 🙂

$  docker-compose exec engine-api anchore-cli \
     image vuln mcr.microsoft.com/dotnet/core/aspnet:3.1 all

Jako że jest to bliska mi technologia, sam byłem bardzo ciekawy rezultatów.

Sięgając pamięcią wstecz, przypominam sobie, że w oficjalnym obrazie ASP NET Core 2.2 było wiele podatności o wysokim ryzyku, które musiałem ręcznie “fixować”.
Na szczęście w wersji 3.1 – bynajmniej Anchore, nie wykrywa żadnych podatności o wysokim ryzyku.

Tak jak w przypadku nginx, wykryte zostały tylko “Nieistotne” oraz “Nieznane”.

Vulnerability ID        Package                                     Severity          Fix                    CVE Refs        Vulnerability URL
CVE-2004-0971           libgssapi-krb5-2-1.17-3                     Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2004-0971
CVE-2004-0971           libk5crypto3-1.17-3                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2004-0971
CVE-2004-0971           libkrb5-3-1.17-3                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2004-0971
CVE-2004-0971           libkrb5support0-1.17-3                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2004-0971
CVE-2005-2541           tar-1.30+dfsg-6                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2007-5686           login-1:4.5-1.1                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-5686           passwd-1:4.5-1.1                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-6755           libssl1.1-1.1.1d-0+deb10u2                  Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-6755
CVE-2007-6755           openssl-1.1.1d-0+deb10u2                    Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2007-6755
CVE-2010-0928           libssl1.1-1.1.1d-0+deb10u2                  Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-0928
CVE-2010-0928           openssl-1.1.1d-0+deb10u2                    Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-0928
CVE-2010-4051           libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4051
CVE-2010-4051           libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4051
CVE-2010-4052           libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4052
CVE-2010-4052           libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4052
CVE-2010-4756           libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4756
CVE-2010-4756           libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2010-4756
CVE-2011-3374           apt-1.8.2                                   Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3374
CVE-2011-3374           libapt-pkg5.0-1.8.2                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3374
CVE-2011-3389           libgnutls30-3.6.7-4                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-3389
CVE-2011-4116           perl-base-5.28.1-6                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2011-4116
CVE-2013-4235           login-1:4.5-1.1                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4235
CVE-2013-4235           passwd-1:4.5-1.1                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4235
CVE-2013-4392           libsystemd0-241-7~deb10u2                   Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4392
CVE-2013-4392           libudev1-241-7~deb10u2                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2013-4392
CVE-2015-3276           libldap-2.4-2-2.4.47+dfsg-3+deb10u1         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2015-3276
CVE-2015-3276           libldap-common-2.4.47+dfsg-3+deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2015-3276
CVE-2017-11164          libpcre3-2:8.39-12                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-11164
CVE-2017-14159          libldap-2.4-2-2.4.47+dfsg-3+deb10u1         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-14159
CVE-2017-14159          libldap-common-2.4.47+dfsg-3+deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-14159
CVE-2017-16231          libpcre3-2:8.39-12                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-16231
CVE-2017-17740          libldap-2.4-2-2.4.47+dfsg-3+deb10u1         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-17740
CVE-2017-17740          libldap-common-2.4.47+dfsg-3+deb10u1        Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-17740
CVE-2017-18018          coreutils-8.30-3                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-18018
CVE-2017-7245           libpcre3-2:8.39-12                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-7245
CVE-2017-7246           libpcre3-2:8.39-12                          Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2017-7246
CVE-2018-1000654        libtasn1-6-4.13-3                           Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-1000654
CVE-2018-20796          libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-20796
CVE-2018-20796          libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-20796
CVE-2018-5709           libgssapi-krb5-2-1.17-3                     Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-5709
CVE-2018-5709           libk5crypto3-1.17-3                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-5709
CVE-2018-5709           libkrb5-3-1.17-3                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-5709
CVE-2018-5709           libkrb5support0-1.17-3                      Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-5709
CVE-2018-6829           libgcrypt20-1.8.4-5                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2018-6829
CVE-2019-1010022        libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022        libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023        libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023        libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024        libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010024
CVE-2019-1010024        libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010024
CVE-2019-1010025        libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010025
CVE-2019-1010025        libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-1010025
CVE-2019-19882          login-1:4.5-1.1                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-19882
CVE-2019-19882          passwd-1:4.5-1.1                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-19882
CVE-2019-9192           libc-bin-2.28-10                            Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9192
CVE-2019-9192           libc6-2.28-10                               Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9192
CVE-2019-9893           libseccomp2-2.3.3-4                         Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9893
CVE-2019-9923           tar-1.30+dfsg-6                             Negligible        None                                   https://security-tracker.debian.org/tracker/CVE-2019-9923
CVE-2019-18224          libidn2-0-2.0.5-1                           Unknown           2.0.5-1+deb10u1                        https://security-tracker.debian.org/tracker/CVE-2019-18224
CVE-2019-5481           curl-7.64.0-4                               Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2019-5481
CVE-2019-5481           libcurl4-7.64.0-4                           Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2019-5481
CVE-2019-5482           curl-7.64.0-4                               Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2019-5482
CVE-2019-5482           libcurl4-7.64.0-4                           Unknown           None                                   https://security-tracker.debian.org/tracker/CVE-2019-5482

Podsumowanie

Zachęcam Cię mocno do weryfikacji Twoich obrazów pod kątem bezpieczeństwa. Pamiętaj, że tworząc Dockerfile, w 90% przypadków korzystamy z polecenia FROM i wywołujemy obraz bazowy, który może mieć podatności. Te podatności przejdą bezpośrednio na Twój finalny obraz. Jeżeli będzie to obraz wykorzystywany do celów developerskich – nie będzie to aż tak groźne. Ryzyko pojawi się, gdy wdrożysz obraz z podatnościami na produkcję.

Polecam wprowadzenie nawyku skanowania obrazów. Niekoniecznie musi to być narzędzie Anchore.

PS. Jeżeli znasz jakieś inne ciekawe narzędzie, koniecznie podziel się nim w komentarzu!


.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *