Vsebniki zagotavljajo izolacijo procesov, vendar si delijo jedro gostitelja, s cimer se bistveno razlikujejo od virtualnih strojev. Napacno konfiguriran vsebnik lahko napadalcu odpre neposredno pot do polnega nadzora nad gostiteljem in v orkestriranih okoljih nad celotno gruco. Organizacije dosledno podcenjujejo to napadalno povrsino.
Varnostni model vsebnikov
- Imenski prostori -- PID, omrezje, pripenjanje, uporabnik, UTS, IPC in cgroup zagotavljajo logicno izolacijo, vendar niso bili zasnovani kot varnostna meja proti sovraznim procesom.
- Cgroups -- Omejujejo porabo virov (CPE, pomnilnik, V/I), ne preprecujejo pa dostopa do obcutljivih virov gostitelja ob oslabljenih mejah.
- Zmogljivosti -- Docker privzeto zavrze vecino, vendar
--privilegedali izrecne dodelitve obnovijo nevarne zmogljivosti kot CAP_SYS_ADMIN. - Seccomp in AppArmor/SELinux -- Privzeti seccomp blokira ~44 sistemskih klicev; prilagojeni profili ali odsotnost profilov znatno oslabijo izolacijo.
Vektorji pobega iz vsebnika
- Privilegirani vsebniki --
--privilegedonemogoci skoraj vso izolacijo: poln dostop /dev, vse zmogljivosti, brez seccomp, brez AppArmor/SELinux. - Pripeta vticnica Docker -- /var/run/docker.sock daje dejanski korenski dostop na gostitelja. Ustvarjanje novih vsebnikov s pripetjem datotecnega sistema gostitelja.
- Obcutljive poti gostitelja -- Pripetje /, /etc, /root zagotavlja neposreden dostop do datotek gostitelja. Zapisljiva pripetja omogocajo spreminjanje.
- Izkoriščanja jedra -- Deljeno jedro pomeni, da vsaka izkoristljiva ranljivost (CVE-2022-0185, CVE-2022-0847 Dirty Pipe, CVE-2020-14386) vodi do popolnega pobega.
- Zloraba SYS_PTRACE -- S CAP_SYS_PTRACE in deljenim imenskim prostorom PID se prikljucite na procese gostitelja za vbrizgavanje kode ali branje pomnilnika.
Zaznava iz notranjosti
- /.dockerenv -- Docker ustvari to datoteko v korenu vsebnika.
- /proc/1/cgroup -- Vsebuje reference docker/kubepods/containerd v vsebniku; kaze / kot koren na gostitelju.
- Spremenljivke okolja -- KUBERNETES_SERVICE_HOST, imena storitev Docker Compose razkrivajo orkestracisko platformo.
- Omejen imenski prostor PID --
ps auxpokaze zelo malo procesov v primerjavi s stotinami na gostitelju.
Tehnike pobega
- Vticnica Docker --
docker run -v /:/hostfs -it alpine chroot /hostfsza korensko lupino na gostitelju. Uporabite curl proti API Docker, ce CLI ni na voljo. - Privilegirani nacin --
mount /dev/sda1 /mntza dostop do datotecnega sistema gostitelja. Zapisite kljuce SSH ali vnose crontab za obstojnost. - CAP_SYS_ADMIN prek release_agent cgroup -- Ustvarite cgroup, nastavite release_agent na skripto gostitelja, sprozite z izpraznitvijo. Izvede se na gostitelju kot root, ker operacije cgroup pobegnejo iz imenskega prostora pripenjanja.
- Ranljivosti runc -- CVE-2019-5736 je omogocil prepisovanje binarne datoteke runc gostitelja med zagonom. Ranljivosti izvajalnega okolja ne zahtevajo posebne konfiguracije vsebnika.
Varnost slik
- Ranljivosti osnovnih slik -- Zastarele osnovne plasti podedujejo vse znane CVE-je. Pregledujte s Trivy ali Grype pred uvedbo.
- Skrivnosti v plasteh -- Nespremenljive plasti ohranjajo skrivnosti tudi ko so "odstranjene" v kasnejsih plasteh.
docker history --no-truncrazkrije vgrajene poverilnice. - Vecstopenjske gradnje -- Kopirajte le koncne artefakte v minimalne izvajalne slike brez orodij za gradnjo in izvorne kode.
- Pregledovanje v CI/CD -- Trivy, Snyk Container in Anchore lahko prekinejo gradnje ob kriticnih CVE-jih.
Tezave specificne za Kubernetes
- Zetoni storitvenih racunov -- Privzeto pripeti na /var/run/secrets/kubernetes.io/serviceaccount/token. Povišana dovoljenja RBAC omogocajo interakcijo z API za izpis skrivnosti ali ustvarjanje podov.
- Neavtentificiran etcd -- Hrani celotno stanje gruce vkljucno s skrivnostmi v base64. Vrata 2379 brez avtentikacije izpostavljajo vsako skrivnost.
- API Kubelet (10250) -- Anonymous-auth omogoca izvajanje ukazov v kateremkoli podu na vozliscu.
- Obvod Pod Security Admission -- Napacne konfiguracije oznak imenskih prostorov ali izjem omogocijo privilegirane pode v omejenih imenskih prostorih.
- Napacne konfiguracije RBAC -- Preohlapne vezave ClusterRoleBinding in dovoljenja z nadomestnimi znaki omogocajo eskalacijo privilegijev po celotni gruci.
- Skrivnosti kot spremenljivke okolja -- Vidne v /proc/[pid]/environ. Namesto tega pripnite kot datoteke z omejenimi dovoljenji.
Dobavna veriga in omrezje
- Typosquatting -- Zlonamerne slike s podobnimi imeni uradnim v javnih registrih. Preverite vire in uporabite podpisovanje slik (cosign, Docker Content Trust).
- Omrezna segmentacija -- Privzeto omogoca vso komunikacijo med vsebniki. Kubernetes NetworkPolicy omejuje vstop/izstop na ravni poda.
- Storitvena mreza -- Istio/Linkerd zagotavljata medsebojni TLS, sifriranje in nadzor dostopa na plasti 7.
Orodja in utrjevanje
- deepce -- Presevanje vsebnika, eskalacija privilegijev in zaznava pobega iz notranjosti.
- CDK -- Orodje za penetracijsko testiranje vsebnikov za zbiranje informacij in izkoriscanje.
- Trivy -- Pregledovanje slik in gruc za CVE-je, napacne konfiguracije in skrivnosti.
- Falco -- Izvajalno spremljanje za zaznavo anomalnega vedenja (generiranje lupin, dostop do obcutljivih datotek).
- kube-hunter / peirates -- Penetracijsko testiranje Kubernetes za eskalacijo privilegijev in bocno premikanje.
Utrjevanje: zagon vsebnikov brez korenskih pravic, uveljavljanje datotecnih sistemov samo za branje, uporaba strogih varnostnih kontekstov (runAsNonRoot, drop ALL capabilities), omogocanje Pod Security Admission v nacinu uveljavljanja in redno pregledovanje slik ter konfiguracij gruc.
Zanima vas vec o tej temi? Preberite mojo strokovno stran o Web Application Security →
Komentarji
Ni se komentarjev. Bodite prvi!
Dodaj komentar