Ένα θέμα ευπάθειας με την ονομασία CVE-2024-21626 εντοπίστηκε στο κιτ εργαλείων runc για την εκκίνηση απομονωμένων κοντέινερ, που χρησιμοποιείται στο Docker και το Kubernetes. Επιτρέπει την πρόσβαση στο σύστημα αρχείων του περιβάλλοντος κεντρικού υπολογιστή από ένα απομονωμένο κοντέινερ. Κατά τη διάρκεια της επίθεσης, ένας εισβολέας μπορεί να αντικαταστήσει ορισμένα εκτελέσιμα αρχεία στο περιβάλλον κεντρικού υπολογιστή και έτσι να επιτύχει την εκτέλεση του κώδικά του εκτός του κοντέινερ. Το πρόβλημα δεν παρουσιάζεται στο runtime crun και το youki, τα οποία χρησιμοποιούν runc, καθώς και στο LXC. Το θέμα ευπάθειας διορθώθηκε στο runc 1.1.12.
Στην περίπτωση χρήσης εργαλείων Docker ή Kubernetes, μια επίθεση μπορεί να πραγματοποιηθεί με την προετοιμασία μιας ειδικά σχεδιασμένης εικόνας κοντέινερ, μετά την εγκατάσταση και την εκκίνηση της οποίας μπορεί να προσπελαστεί ένα εξωτερικό σύστημα αρχείων από το κοντέινερ. Όταν χρησιμοποιείτε το Docker, είναι δυνατή η εκμετάλλευσή της μέσω ενός ειδικά σχεδιασμένου αρχείου Docker. Η ευπάθεια μπορεί επίσης να εκμεταλλευτεί εάν οι διεργασίες ξεκινούν στο κοντέινερ χρησιμοποιώντας την εντολή "runc exec" συνδέοντας τον κατάλογο εργασίας με τον χώρο ονομάτων του περιβάλλοντος κεντρικού υπολογιστή.
Η ευπάθεια προκαλείται από διαρροή εσωτερικών περιγραφέων αρχείων. Πριν από την εκτέλεση κώδικα μέσα σε ένα κοντέινερ, το runc κλείνει όλους τους περιγραφείς αρχείων χρησιμοποιώντας τη σημαία O_CLOEXEC. Ωστόσο, μετά την επακόλουθη εκτέλεση της συνάρτησης setcwd(), ένας περιγραφέας αρχείου που δείχνει στον κατάλογο εργασίας παραμένει ανοιχτός και παραμένει προσβάσιμος μετά την εκκίνηση του κοντέινερ. Προτείνονται διάφορα βασικά σενάρια επίθεσης για το περιβάλλον κεντρικού υπολογιστή χρησιμοποιώντας τον υπόλοιπο περιγραφέα αρχείων.
Για παράδειγμα, ένας εισβολέας θα μπορούσε να ορίσει την παράμετρο process.cwd σε μια εικόνα κοντέινερ ώστε να δείχνει στο "/proc/self/fd/7/", κάτι που θα συνέδεε τη διεργασία pid1 στο κοντέινερ με έναν κατάλογο εργασίας που βρίσκεται στον χώρο προσάρτησης του περιβάλλοντος κεντρικού υπολογιστή. Έτσι, η εικόνα κοντέινερ θα μπορούσε να ρυθμιστεί ώστε να εκκινεί το "/proc/self/fd/7/../../../bin/bash" και, μέσω της εκτέλεσης ενός σεναρίου κελύφους, να αντικαταστήσει τα περιεχόμενα του "/proc/self/exe", το οποίο δείχνει στο αντίγραφο κεντρικού υπολογιστή του /bin/bash.
Μια άλλη παραλλαγή επίθεσης επιτρέπει σε έναν εισβολέα, περιορισμένο μέσα σε ένα κοντέινερ, να αποκτήσει πρόσβαση στον κατάλογο του περιβάλλοντος κεντρικού υπολογιστή εάν εκκινηθούν διεργασίες με δικαιώματα στο καθορισμένο κοντέινερ χρησιμοποιώντας την εντολή "runc exec" με την επιλογή "--cwd". Ο εισβολέας μπορεί να αντικαταστήσει τη διαδρομή της εκκινούμενης διεργασίας με έναν συμβολικό σύνδεσμο που οδηγεί στο "/proc/self/fd/7/" και να επιτύχει το άνοιγμα του "/proc/$exec_pid/cwd" για πρόσβαση στο σύστημα αρχείων στην πλευρά του κεντρικού υπολογιστή. Ο εισβολέας μπορεί επίσης να επιτύχει την αντικατάσταση εκτελέσιμων αρχείων στην πλευρά του περιβάλλοντος κεντρικού υπολογιστή οργανώνοντας την εκκίνηση ενός εκτελέσιμου αρχείου από το περιβάλλον κεντρικού υπολογιστή ("/proc/self/fd/7/../../../bin/bash") και στη συνέχεια αντικαθιστώντας το αρχείο "/proc/$pid/exe" που αναφέρεται στο εκκινημένο αρχείο.
Επιπλέον, εντοπίστηκαν πέντε ακόμη ευπάθειες στα στοιχεία του Docker toolkit:
- CVE-2024-23651 — Μια συνθήκη κούρσας στο BuildKit, ένα πακέτο που χρησιμοποιείται από το Docker για τον μετασχηματισμό του πηγαίου κώδικα σε αντικείμενα κατασκευής, προκαλείται από τη χρήση ενός ενιαίου κοινόχρηστου σημείου προσάρτησης με προσωρινή μνήμη ("--mount=type=cache,source=") σε παράλληλα στάδια κατασκευής, η οποία επιτρέπει την πρόσβαση σε αρχεία στο περιβάλλον κεντρικού υπολογιστή από το κοντέινερ κατασκευής κατά την επεξεργασία ενός ειδικά κατασκευασμένου Dockerfile στο BuildKit. Η ευπάθεια διορθώνεται στο BuildKit 0.12.5.
- CVE-2024-23652 - Ένα σφάλμα κατά τη διαγραφή κενών αρχείων που δημιουργήθηκαν για ένα σημείο προσάρτησης κατά τη χρήση της επιλογής "--mount" επιτρέπει τη διαγραφή αρχείων εκτός του κοντέινερ κατά την επεξεργασία ενός ειδικά κατασκευασμένου Dockerfile. Αυτή η ευπάθεια διορθώνεται στο BuildKit 0.12.5.
- CVE-2024-23653 - Ένα σφάλμα υλοποίησης API στο BuildKit επιτρέπει την εκτέλεση ενός κοντέινερ με αυξημένα δικαιώματα, ανεξάρτητα από τη ρύθμιση security.insecure. Αυτή η ευπάθεια διορθώνεται στο BuildKit 0.12.5.
- CVE-2024-23650 – Ένα κακόβουλο πρόγραμμα-πελάτης ή frontend BuildKit μπορεί να προκαλέσει διακοπή λειτουργίας μιας διεργασίας παρασκηνίου BuildKit. Αυτό το πρόβλημα διορθώθηκε στο BuildKit 0.12.5.
- CVE-2024-24557 — Ευπάθεια δηλητηρίασης προσωρινής μνήμης στο Moby, ένα στοιχείο για την κατασκευή εξειδικευμένων συστημάτων απομόνωσης κοντέινερ. Κατά την επεξεργασία μιας ειδικά κατασκευασμένης εικόνας κοντέινερ, είναι δυνατή η προσωρινή αποθήκευση δεδομένων που μπορούν να χρησιμοποιηθούν σε επόμενα στάδια της κατασκευής. Η ευπάθεια διορθώνεται στις εκδόσεις Moby 25.0.2 και 24.0.9.
Πηγή: opennet.ru
