Ευπάθεια στο Docker που σας επιτρέπει να ξεφύγετε από το κοντέινερ

Στο Toolkit για τη διαχείριση απομονωμένων κοντέινερ Linux Docker αναγνωρισθείς ευπάθεια (CVE-2018-15664), το οποίο, υπό ορισμένες συνθήκες, σας επιτρέπει να έχετε πρόσβαση στο περιβάλλον του κεντρικού υπολογιστή από ένα κοντέινερ, εάν έχετε τη δυνατότητα να εκκινήσετε τις εικόνες σας στο σύστημα ή με πρόσβαση σε ένα κοντέινερ που λειτουργεί. Το πρόβλημα εμφανίζεται σε όλες τις εκδόσεις του Docker και παραμένει αδιόρθωτο (προτείνεται, αλλά δεν έχει γίνει ακόμη αποδεκτό, patch, το οποίο εφαρμόζει την ανάρτηση του δοχείου κατά την εκτέλεση εργασιών με το FS).

Η ευπάθεια επιτρέπει την εξαγωγή αρχείων από ένα κοντέινερ σε ένα αυθαίρετο τμήμα του συστήματος αρχείων του κεντρικού συστήματος κατά την εκτέλεση της εντολής "docker cp". Η εξαγωγή αρχείων εκτελείται με δικαιώματα ρίζας, γεγονός που καθιστά δυνατή την ανάγνωση ή εγγραφή οποιωνδήποτε αρχείων στο περιβάλλον κεντρικού υπολογιστή, κάτι που αρκεί για να αποκτήσετε τον έλεγχο του συστήματος κεντρικού υπολογιστή (για παράδειγμα, μπορείτε να αντικαταστήσετε το /etc/shadow).

Η επίθεση μπορεί να πραγματοποιηθεί μόνο όταν ο διαχειριστής εκτελεί την εντολή «docker cp» για να αντιγράψει αρχεία προς ή από το κοντέινερ. Έτσι, ο εισβολέας πρέπει με κάποιο τρόπο να πείσει τον διαχειριστή του Docker για την ανάγκη εκτέλεσης αυτής της λειτουργίας και να προβλέψει τη διαδρομή που χρησιμοποιείται κατά την αντιγραφή. Από την άλλη πλευρά, μια επίθεση μπορεί να πραγματοποιηθεί, για παράδειγμα, όταν οι υπηρεσίες cloud παρέχουν εργαλεία για την αντιγραφή αρχείων διαμόρφωσης σε ένα κοντέινερ, που έχει δημιουργηθεί χρησιμοποιώντας την εντολή «docker cp».

Το πρόβλημα προκαλείται από ένα ελάττωμα στην εφαρμογή της συνάρτησης Ακολουθήστε τοSymlinkInScope, το οποίο υπολογίζει την απόλυτη διαδρομή στο κύριο σύστημα αρχείων με βάση τη σχετική διαδρομή, λαμβάνοντας υπόψη την τοποθέτηση του κοντέινερ. Κατά την εκτέλεση της εντολής "docker cp", μια βραχυπρόθεσμη αγωνιστική κατάσταση, στην οποία η διαδρομή έχει ήδη επαληθευτεί, αλλά η λειτουργία δεν έχει ακόμη πραγματοποιηθεί. Εφόσον η αντιγραφή εκτελείται στο πλαίσιο του κύριου συστήματος αρχείων του συστήματος κεντρικού υπολογιστή, μέσα σε μια καθορισμένη χρονική περίοδο, μπορείτε να αντικαταστήσετε τη σύνδεση με άλλη διαδρομή και να ξεκινήσετε την αντιγραφή δεδομένων σε μια αυθαίρετη θέση στο σύστημα αρχείων εκτός του δοχείο.

Δεδομένου ότι το χρονικό παράθυρο για να συμβεί μια συνθήκη αγώνα είναι εξαιρετικά περιορισμένο σε ένα έτοιμο exploit πρωτότυπο Κατά την εκτέλεση εργασιών αντιγραφής από ένα κοντέινερ, ήταν δυνατό να επιτευχθεί μια επιτυχημένη επίθεση σε λιγότερο από 1% των περιπτώσεων κατά την κυκλική αντικατάσταση ενός συμβολικού συνδέσμου στη διαδρομή που χρησιμοποιήθηκε στη λειτουργία αντιγραφής (η επιτυχής επίθεση πραγματοποιήθηκε μετά από περίπου 10 δευτερόλεπτα προσπαθειών για συνεχή αντιγραφή του αρχείου σε βρόχο με την εντολή “docker cp”).

Εκτελώντας μια λειτουργία αντιγραφής σε ένα κοντέινερ, μπορείτε να επιτύχετε μια επαναλαμβανόμενη επίθεση αντικατάστασης αρχείων στο κεντρικό σύστημα σε λίγες μόνο επαναλήψεις. Η πιθανότητα επίθεσης οφείλεται στο γεγονός ότι κατά την αντιγραφή σε ένα κοντέινερ, χρησιμοποιείται η έννοια "chrootarchive", σύμφωνα με την οποία η διαδικασία archive.go εξάγει το αρχείο όχι στο chroot της ρίζας του δοχείου, αλλά στο chroot του γονικός κατάλογος της διαδρομής στόχου, που ελέγχεται από τον εισβολέα και δεν σταματά την εκτέλεση του κοντέινερ (το chroot χρησιμοποιείται ως ένδειξη για την εκμετάλλευση των συνθηκών αγώνα).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο