Kubernetes SecurityContext(s)

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

PodSecurityContext

Από τα έγγραφα:

Όταν καθορίζετε το security context ενός Pod, μπορείτε να χρησιμοποιήσετε αρκετά χαρακτηριστικά. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:

  • Να έχετε runASNonRoot ως True
  • Να ρυθμίσετε runAsUser
  • Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
  • Μην δίνετε privilege group πρόσβαση μέσω runAsGroup και supplementaryGroups

| Παράμετρος | Περιγραφή | |

fsGroup
integer

|

Μια ειδική συμπληρωματική ομάδα που εφαρμόζεται σε όλα τα κοντέινερ σε ένα pod. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να αλλάξει την ιδιοκτησία αυτού του όγκου ώστε να ανήκει στο pod:
1. Η ιδιοκτησία GID θα είναι το FSGroup
2. Το setgid bit είναι ρυθμισμένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στο FSGroup)
3. Τα δικαιώματα είναι OR’d με rw-rw–– Εάν δεν ρυθμιστεί, ο Kubelet δεν θα τροποποιήσει την ιδιοκτησία και τα δικαιώματα οποιουδήποτε όγκου

|

|

fsGroupChangePolicy
string

| Αυτό καθορίζει τη συμπεριφορά της αλλαγής ιδιοκτησίας και δικαιωμάτων του όγκου πριν εκτεθεί μέσα στο Pod. | |

runAsGroup
integer

| Ο GID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν ρυθμιστεί. | |

runAsNonRoot
boolean

| Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει. | |

runAsUser
integer

| Ο UID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν καθοριστεί. | |

seLinuxOptions
SELinuxOptions
Περισσότερες πληροφορίες σχετικά με seLinux

| Το SELinux context που θα εφαρμοστεί σε όλα τα κοντέινερ. Εάν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. | |

seccompProfile
SeccompProfile
Περισσότερες πληροφορίες σχετικά με Seccomp

| Οι seccomp επιλογές που θα χρησιμοποιηθούν από τα κοντέινερ σε αυτό το pod. | |

supplementalGroups
integer array

| Μια λίστα με ομάδες που εφαρμόζονται στη διαδικασία που εκτελείται πρώτη σε κάθε κοντέινερ, εκτός από το κύριο GID του κοντέινερ. | |

sysctls
Sysctl array
Περισσότερες πληροφορίες σχετικά με sysctls

| Οι sysctls περιέχουν μια λίστα με namespaced sysctls που χρησιμοποιούνται για το pod. Τα pods με μη υποστηριζόμενους sysctls (από τον χρόνο εκτέλεσης του κοντέινερ) ενδέχεται να αποτύχουν να εκκινηθούν. | |

windowsOptions
WindowsSecurityContextOptions

| Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ. Εάν δεν καθοριστεί, οι επιλογές εντός του SecurityContext ενός κοντέινερ θα χρησιμοποιηθούν. |

SecurityContext

Από τα έγγραφα:

Αυτό το context ορίζεται μέσα στις ορισμούς κοντέινερ. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:

  • allowPrivilegeEscalation να είναι False
  • Μην προσθέτετε ευαίσθητες capabilities (και αφαιρέστε αυτές που δεν χρειάζεστε)
  • privileged να είναι False
  • Εάν είναι δυνατόν, ρυθμίστε το readOnlyFilesystem ως True
  • Ρυθμίστε το runAsNonRoot σε True και ορίστε ένα runAsUser
  • Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
  • Μην δίνετε privilege group πρόσβαση μέσω runAsGroup.

Σημειώστε ότι τα χαρακτηριστικά που ορίζονται σε τόσο SecurityContext όσο και PodSecurityContext, η τιμή που καθορίζεται στο SecurityContext έχει προτεραιότητα.

allowPrivilegeEscalation
boolean

AllowPrivilegeEscalation ελέγχει εάν μια διαδικασία μπορεί να κερδίσει περισσότερα δικαιώματα από τη γονική διαδικασία της. Αυτό το bool ελέγχει άμεσα εάν η σημαία no_new_privs θα ρυθμιστεί στη διαδικασία του κοντέινερ. Το AllowPrivilegeEscalation είναι πάντα αληθές όταν το κοντέινερ εκτελείται ως Privileged ή έχει CAP_SYS_ADMIN

capabilities
Capabilities
Περισσότερες πληροφορίες σχετικά με Capabilities

Οι ικανότητες που προστίθενται/αφαιρούνται κατά την εκτέλεση κοντέινερ. Προεπιλογή είναι το προεπιλεγμένο σύνολο ικανοτήτων.

privileged
boolean

Εκτελέστε το κοντέινερ σε προνομιακή λειτουργία. Οι διαδικασίες σε προνομιακά κοντέινερ είναι ουσιαστικά ισοδύναμες με root στον host. Προεπιλογή είναι false.

procMount
string

Το procMount δηλώνει τον τύπο του proc mount που θα χρησιμοποιηθεί για τα κοντέινερ. Η προεπιλογή είναι DefaultProcMount που χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του χρόνου εκτέλεσης για αναγνώσιμες διαδρομές και κρυμμένες διαδρομές.

readOnlyRootFilesystem
boolean

Εάν αυτό το κοντέινερ έχει ένα σύστημα αρχείων ρίζας μόνο για ανάγνωση. Η προεπιλογή είναι false.

runAsGroup
integer

Ο GID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν ρυθμιστεί.

runAsNonRoot
boolean

Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει.

runAsUser
integer

Ο UID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν καθοριστεί.

seLinuxOptions
SELinuxOptions
Περισσότερες πληροφορίες σχετικά με seLinux

Το SELinux context που θα εφαρμοστεί στο κοντέινερ. Εάν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ.

seccompProfile
SeccompProfile

Οι seccomp επιλογές που θα χρησιμοποιηθούν από αυτό το κοντέινερ.

windowsOptions
WindowsSecurityContextOptions

Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ.

References

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks