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)
Όταν εκτελείτε ένα κοντέινερ ως privileged, αυτές είναι οι προστασίες που απενεργοποιείτε:
Σε ένα privileged κοντέινερ, όλες οι συσκευές μπορούν να προσπελαστούν στο /dev/
. Επομένως, μπορείτε να escape κάνοντας mount τον δίσκο του host.
Τα συστήματα αρχείων πυρήνα παρέχουν έναν μηχανισμό για μια διαδικασία να τροποποιήσει τη συμπεριφορά του πυρήνα. Ωστόσο, όταν πρόκειται για διαδικασίες κοντέινερ, θέλουμε να αποτρέψουμε την πραγματοποίηση οποιωνδήποτε αλλαγών στον πυρήνα. Επομένως, τοποθετούμε τα συστήματα αρχείων πυρήνα ως μόνο για ανάγνωση εντός του κοντέινερ, διασφαλίζοντας ότι οι διαδικασίες του κοντέινερ δεν μπορούν να τροποποιήσουν τον πυρήνα.
Το /proc σύστημα αρχείων είναι επιλεκτικά εγγράψιμο, αλλά για λόγους ασφαλείας, ορισμένα μέρη είναι προστατευμένα από πρόσβαση εγγραφής και ανάγνωσης, επικαλύπτοντάς τα με tmpfs, διασφαλίζοντας ότι οι διαδικασίες κοντέινερ δεν μπορούν να έχουν πρόσβαση σε ευαίσθητες περιοχές.
tmpfs είναι ένα σύστημα αρχείων που αποθηκεύει όλα τα αρχεία στη εικονική μνήμη. Το tmpfs δεν δημιουργεί κανένα αρχείο στον σκληρό σας δίσκο. Έτσι, αν αποσυνδέσετε ένα σύστημα αρχείων tmpfs, όλα τα αρχεία που βρίσκονται σε αυτό χάνονται για πάντα.
Οι μηχανές κοντέινερ εκκινούν τα κοντέινερ με περιορισμένο αριθμό δυνατοτήτων για να ελέγχουν τι συμβαίνει μέσα στο κοντέινερ από προεπιλογή. Οι προνομιακές έχουν όλες τις δυνατότητες προσβάσιμες. Για να μάθετε για τις δυνατότητες διαβάστε:
Linux CapabilitiesΜπορείτε να χειριστείτε τις δυνατότητες που είναι διαθέσιμες σε ένα κοντέινερ χωρίς να εκτελείτε σε --privileged
λειτουργία χρησιμοποιώντας τις σημαίες --cap-add
και --cap-drop
.
Seccomp είναι χρήσιμο για να περιορίσει τις syscalls που μπορεί να καλέσει ένα κοντέινερ. Ένα προεπιλεγμένο προφίλ seccomp είναι ενεργοποιημένο από προεπιλογή κατά την εκτέλεση κοντέινερ docker, αλλά σε privileged mode είναι απενεργοποιημένο. Μάθετε περισσότερα για το Seccomp εδώ:
SeccompΕπίσης, σημειώστε ότι όταν χρησιμοποιούνται Docker (ή άλλες CRIs) σε ένα Kubernetes cluster, το seccomp filter είναι απενεργοποιημένο από προεπιλογή
AppArmor είναι μια βελτίωση του πυρήνα για να περιορίσει containers σε ένα περιορισμένο σύνολο πόρων με προφίλ ανά πρόγραμμα. Όταν εκτελείτε με την επιλογή --privileged
, αυτή η προστασία είναι απενεργοποιημένη.
Η εκτέλεση ενός κοντέινερ με την επιλογή --privileged
απενεργοποιεί τις ετικέτες SELinux, προκαλώντας να κληρονομήσει την ετικέτα της μηχανής κοντέινερ, συνήθως unconfined
, παρέχοντας πλήρη πρόσβαση παρόμοια με αυτή της μηχανής κοντέινερ. Σε λειτουργία χωρίς δικαιώματα root, χρησιμοποιεί container_runtime_t
, ενώ σε λειτουργία root, εφαρμόζεται το spc_t
.
Τα Namespaces ΔΕΝ επηρεάζονται από την επιλογή --privileged
. Ακόμα και αν δεν έχουν ενεργοποιηθεί οι περιορισμοί ασφαλείας, δεν βλέπουν όλες τις διαδικασίες στο σύστημα ή το δίκτυο του host, για παράδειγμα. Οι χρήστες μπορούν να απενεργοποιήσουν μεμονωμένα namespaces χρησιμοποιώντας τις επιλογές --pid=host
, --net=host
, --ipc=host
, --uts=host
των μηχανών κοντέινερ.
Από προεπιλογή, οι μηχανές κοντέινερ δεν χρησιμοποιούν χώρους ονόματος χρήστη, εκτός από τα κοντέινερ χωρίς δικαιώματα root, τα οποία τα απαιτούν για την τοποθέτηση συστήματος αρχείων και τη χρήση πολλαπλών UIDs. Οι χώροι ονόματος χρήστη, που είναι αναπόσπαστο μέρος των κοντέινερ χωρίς δικαιώματα root, δεν μπορούν να απενεργοποιηθούν και ενισχύουν σημαντικά την ασφάλεια περιορίζοντας τα προνόμια.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)