Docker konténer (Debian) sérülékenységek

Fórumok

Sziasztok!

Lenne egy kérdésem debian docker konténerek kapcsán, hátha valaki tud segíteni.
Elkezdtem használni a "docker scan"-t az általam összeállított image-eknél és egy frissen build-eltnél is sok sebezhetőséget listáz.

debian:10.11-slim       67               4 critical, 11 high, 5 medium, 47 low
debian:10.11-backports  70               4 critical, 11 high, 6 medium, 49 low
debian:bullseye-slim    42               3 critical, 2 high, 0 medium, 37 low

Mivel a bullseye-ban már kevesebbet mutat, ezért beállítottam azt, de utána megtaláltam hogy a curl, amit használok még nem lett javítva (https://security-tracker.debian.org/tracker/CVE-2021-22945).
Így inkább visszatettem mindenhova a buster-t, amire kb. augusztusig még lesz support (https://wiki.debian.org/DebianReleases)

Azonban azt nem tudom hogyan tudnék minél több sérülékenységet befoltozni a buster-ben, mert ugyan az apt-ban be van állítva a security.debian.org,
de a frissítés (apt-get update && apt-get upgrade) után is azt írja a docker scan, hogy 67 sérülékenység van (4 critical, 11 high, 5 medium, 47 low)

Hogyan lehet ezekből minél többet befoltozni?
Megnéztem a backports-os image-t is, de abban még több a sérülékenység.
Használjak inkább ubuntu-t a konténerekben, mert oda hamarabb jönnek ki a frissítések?

Köszi!

A Dockerfile:

FROM debian:buster-slim

# environments
ENV TERM xterm
ENV DEBIAN_FRONTEND noninteractive
ENV TIMEZONE=Europe/Budapest

# timezone
ARG TIMEZONE="Europe/Budapest"

# apt-get update and upgrade, set timezone and locale
RUN apt-get update \
    && apt-get upgrade -y --no-install-recommends \
    && apt-get install -y --no-install-recommends unzip gnupg curl wget telnet net-tools iputils-ping ca-certificates apt-transport-https htop locales tzdata \
    && rm -f /etc/localtime \
    && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
    && echo ${TIMEZONE} > /etc/timezone \
    && sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen \
    && sed -i 's/# hu_HU.UTF-8 UTF-8/hu_HU.UTF-8 UTF-8/g' /etc/locale.gen \
    && sed -i 's/# hu_HU ISO-8859-2/hu_HU ISO-8859-2/g' /etc/locale.gen \
    && dpkg-reconfigure -f noninteractive locales \
    && dpkg-reconfigure -f noninteractive tzdata    

RUN apt-get autoremove -y --purge && apt-get clean

# environments
ENV LANG hu_HU.UTF-8
ENV LC_ALL hu_HU.UTF-8
ENV LANGUAGE hu_HU:en

Hozzászólások

 

Inkább térj át a distro mentes imagekra. :) Kevesebb a probléma. (nyilván 100% megoldás nincs, de minimalizalni tudod a sérülékenységek számát)

https://github.com/GoogleContainerTools/distroless

 

(amugy a docker imagekra is érvényes kell h legyen egy security concept, hardening. Célzok arra, hogy esetleges felesleges csomagok nem kerülnének fel, stb, stb.)

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

A distroless-t idáig nem ismertem. Helyette FROM scratch image-eket csinálok, beledobom a statikus binárisomat. Bár dinamikus is lehetne. Kellhet pár egyéb fájl, pl. TLS CA-k (ami nyilván egy distróból jön), /etc/passwd. Ha jól látom, kb ezt csinálja a distroless is.

Tudtommal erősen "tiltólistás" dolog az apt-get upgrade az image építésben.

Az upgrade helyett simán újra kell buildelni az image-t friss kiinduló image-val.

Milyensérülékenységektől félsz? Ha be tudnak jutni a konténerbe akkor már régen rossz. A bejövő portokat kell szűrni, tűzfalazni rendesen.

Azért "tiltólistás" mert napról-napra más lehet, ergo nehezen reprodukálható.
Security szempontból nyilván nem tiltólistás. 
Simán építhetsz magadnak saját "debian daily upgraded" base image-t, amíg elrakod addig tudod reprodukálni a bármit amit ebből építettél.

Amit írsz védekezést az az "alkalmazás szintű" hibák és exploitok ellen nem fog védeni.
Attól még a php-s akármidet simán felnyomhatják és használhatják smtp relaytől kezdve bitcoin bányászatig akármire.

Persze. Az is "csak" egy linux, ugyanúgy kell (kéne) frissíteni mint egy bare metal servert vagy vm-et.
Ugye annyi az előny, hogy általában a hoston nincs szinte semmi, ezért azt nem olyan könnyű megfektetni, a konténereket meg le lehet lövöldözni és lehet visszaállni, frissíteni, satöbbi.

Én is újra build-elem, csak a build során van benne az apt-get upgrade, mert azt tapasztaltam, hogy hiába friss a base image, mindig tud mit frissíteni rajta.
Nem tudom milyen sérülékenységtől féljek ;), csak meglepett, hogy a buster alap image-ben van 4 kritikus, 11 magas, stb. és gondoltam ezt jobb lenne javítani.

 

Üzemeltetőként bennem az merült fel elsőre, hogy ez nem Docker-specifikus kérdés, hanem általában OS/disztró (itt épp Debian 11) kérdés. Szerintem  minden létező rendszerben van folyamatosan ilyen találat különböző szintű sebezhetőségekre. Én azt gondolom, hogy elérhetetlen az az állapot kb., hogy 0 legyen az érték. Az viszont lehet nulla, hogy az éppen futó komplett rendszer mennyi (távolról) kihasználható sérülékenységet tartalmaz.

A másik, ami eszembe jutott, hogy ilyen szintű biztonságra figyelésnél érdemes lenne egyesével megnézni, mik is azok a sérülékenységek, és hogyan használhatók ki. Simán lehet, hogy hiába van 67 db számszerűen, téged egyik sem érint, mert nem használsz semmit azokból, amik azon a listán szerepelnek. Vagy érint néhány, de megelőzhető a kihasználásuk pl. valami módon (default konfig módosítása, stb.).

A 67 sérülékenységben volt curl is, amit használok, bár a többit nem néztem, szóval lehet tényleg nem is érintene a többi.
Most egyébként átáltam Ubuntu Focal-ra a konténerekben, mert a docker scan ott nem mutatott ki kritikus vagy magas sérülékenységet csak néhány közepeset meg alacsonyt.
 

ugyan nem írtad min futnak a konténerek (Host OS), és hogyan (feltételezésem a Docker, mivel említetted a docker scant is.) - de a lényeg hogy SELinux, AppArmor is jó barát. Továbbá Seccomp, rootless mode, van itt minden.

Szóval még ha az alap image-ben van is némi turpisság, amit természetesen igyekezni, asap kell minimalizálni, a host felöl is meg kell tenni mindent. Nem egyszerű feladat, ellenben szép kihívás.