Docker --privileged
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kada pokrenete kontejner kao privilegovan, ovo su zaštite koje onemogućavate:
U privilegovanom kontejneru, svi uređaji mogu biti pristupljeni u /dev/
. Stoga možete pobeći tako što ćete montirati disk domaćina.
Datoteke sistema jezgra pružaju mehanizam za proces da modifikuje ponašanje jezgra. Međutim, kada su u pitanju procesi kontejnera, želimo da sprečimo njihovo menjanje jezgra. Stoga, montiramo datoteke sistema jezgra kao samo za čitanje unutar kontejnera, osiguravajući da procesi kontejnera ne mogu modifikovati jezgro.
/proc datotečni sistem je selektivno zapisiv, ali iz bezbednosnih razloga, određeni delovi su zaštićeni od pisanja i čitanja preklapanjem sa tmpfs, osiguravajući da procesi kontejnera ne mogu pristupiti osetljivim oblastima.
tmpfs je datotečni sistem koji čuva sve datoteke u virtuelnoj memoriji. tmpfs ne kreira nikakve datoteke na vašem hard disku. Dakle, ako odmontirate tmpfs datotečni sistem, sve datoteke koje se u njemu nalaze su izgubljene zauvek.
Motori kontejnera pokreću kontejnere sa ograničenim brojem sposobnosti kako bi kontrolisali šta se dešava unutar kontejnera po defaultu. Privilegovani imaju sve sposobnosti dostupne. Da biste saznali više o sposobnostima, pročitajte:
Možete manipulisati sposobnostima dostupnim kontejneru bez pokretanja u --privileged
režimu koristeći --cap-add
i --cap-drop
zastavice.
Seccomp je koristan za ograničavanje syscalls koje kontejner može pozvati. Podrazumevani seccomp profil je omogućen podrazumevano prilikom pokretanja docker kontejnera, ali u privilegovanom režimu je on onemogućen. Saznajte više o Seccomp-u ovde:
Takođe, imajte na umu da kada se Docker (ili drugi CRI) koriste u Kubernetes klasteru, seccomp filter je onemogućen po defaultu
AppArmor je poboljšanje jezgra koje ograničava kontejnere na ograničen skup resursa sa profilima po programu. Kada pokrenete sa --privileged
flagom, ova zaštita je onemogućena.
Pokretanje kontejnera sa --privileged
zastavicom onemogućava SELinux oznake, uzrokujući da nasledi oznaku kontejnerskog motora, obično unconfined
, što omogućava pun pristup sličan kontejnerskom motoru. U režimu bez root privilegija koristi container_runtime_t
, dok se u root režimu primenjuje spc_t
.
Namespaces NISU pogođeni --privileged
oznakom. Iako nemaju omogućena bezbednosna ograničenja, ne vide sve procese na sistemu ili host mreži, na primer. Korisnici mogu onemogućiti pojedinačne namespaces koristeći --pid=host
, --net=host
, --ipc=host
, --uts=host
oznake kontejnerskih motora.
Podrazumevano, kontejnerski alati ne koriste korisničke imenske prostore, osim za kontejnere bez root privilegija, koji ih zahtevaju za montiranje datotečnih sistema i korišćenje više UID-ova. Korisnički imenski prostori, koji su ključni za kontejnere bez root privilegija, ne mogu se onemogućiti i značajno poboljšavaju bezbednost ograničavanjem privilegija.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)