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

Szerkesztve: 2022. 01. 30., v – 12:50

 

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.

zászló, zászló, szív

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.

zászló, zászló, szív

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

Szerkesztve: 2022. 01. 30., v – 19:39

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.