Ο επεξεργαστής κώδικα και το περιβάλλον ανάπτυξης Visual Studio Code (VS Code) της Microsoft περιέχει ένα ελάττωμα που επιτρέπει σε κακόβουλες επεκτάσεις να ανακτήσουν tokens ελέγχου ταυτότητας που είναι αποθηκευμένα σε διαχειριστές διαπιστευτηρίων των Windows, Linux και macOS.

Δείτε επίσης: Το Visual Studio Code snap τώρα διαθέσιμο για Linux χάρη σε Microsoft και Canonical

Αυτά τα tokens χρησιμοποιούνται για την ενσωμάτωση με διάφορες υπηρεσίες και API τρίτων, όπως το Git, το GitHub και άλλες πλατφόρμες προγραμματισμού, οπότε η κλοπή τους θα μπορούσε να έχει σημαντικές συνέπειες για την ασφάλεια των δεδομένων ενός οργανισμού που βρίσκεται σε κίνδυνο, οδηγώντας ενδεχομένως σε μη εξουσιοδοτημένη πρόσβαση στο σύστημα, παραβιάσεις δεδομένων κ.λπ.

Το ελάττωμα ανακαλύφθηκε από ερευνητές της Cycode, οι οποίοι το ανέφεραν στη Microsoft μαζί με ένα λειτουργικό proof-of-concept (PoC) που ανέπτυξαν. Ωστόσο, ο τεχνολογικός γίγαντας αποφάσισε να μην επιδιορθώσει το ζήτημα, καθώς οι επεκτάσεις δεν αναμένεται να είναι sandboxed από το υπόλοιπο περιβάλλον.

Κλέβοντας μυστικά με επεκτάσεις

Το πρόβλημα ασφαλείας που ανακάλυψε η Cycode οφείλεται στην έλλειψη απομόνωσης των tokens ελέγχου ταυτότητας στο “Secret Storage” του VS Code, ένα API που επιτρέπει στις επεκτάσεις να αποθηκεύουν tokens ελέγχου ταυτότητας στο λειτουργικό σύστημα.

Αυτό γίνεται χρησιμοποιώντας το Keytar, το wrapper του VS Code για την επικοινωνία με τον διαχειριστή διαπιστευτηρίων των Windows (στα Windows), το keychain (στο macOS) ή το keyring (για το Linux).

Αυτό σημαίνει ότι οποιαδήποτε επέκταση που εκτελείται στο VS Code, ακόμη και κακόβουλη, μπορεί να αποκτήσει πρόσβαση στη μυστική αποθήκευση και να κάνει κατάχρηση του Keytar για να ανακτήσει τυχόν αποθηκευμένα tokens.

“Εκτός από τον ενσωματωμένο έλεγχο ταυτότητας Github/Microsoft, όλα τα tokens που αποθηκεύονται στο VS Code προέρχονται από επεκτάσεις”, δήλωσε ο Ilgayev στο BleepingComputer.

“Ορίζονται είτε από επίσημες επεκτάσεις (της Microsoft), όπως το Git, το Azure, το Docker/Kubernetes κ.λπ. είτε από επεκτάσεις τρίτων, όπως το CircleCI, το GitLab, το AWS”.

Keychain που περιέχει κωδικούς πρόσβασης

Μετά την ανακάλυψη του προβλήματος, οι ερευνητές της Cycode άρχισαν να πειραματίζονται δημιουργώντας μια κακόβουλη επέκταση για την κλοπή tokens για το CircleCI, μια δημοφιλή πλατφόρμα προγραμματισμού με επεκτάσεις VS Code. Το έκαναν αυτό τροποποιώντας την επέκταση του CircleCI ώστε να εκτελεί μια εντολή που θα εξέθετε το ασφαλές token του και μάλιστα θα το έστελνε κατευθείαν στον server του ερευνητή.

Πρόταση: Microsoft Visual Studio Code Open Source (!)

Σταδιακά, ανέπτυξαν μια πιο ευέλικτη μέθοδο επίθεσης για να αποσπάσουν αυτά τα μυστικά χωρίς να πειράξουν τον κώδικα της επέκτασης-στόχου.

Το κλειδί σε αυτή τη διαδικασία ήταν η ανακάλυψη ότι οποιαδήποτε επέκταση του VS Code είναι εξουσιοδοτημένη να έχει πρόσβαση στο keychain επειδή εκτελείται μέσα από την εφαρμογή που το λειτουργικό σύστημα έχει ήδη χορηγήσει πρόσβαση στο keychain.

Στη συνέχεια, τα ανακτηθέντα tokens έπρεπε να αποκρυπτογραφηθούν και η Cycode διαπίστωσε ότι ο αλγόριθμος που χρησιμοποιήθηκε για την κρυπτογράφηση των tokens ήταν ο AES-256-GCM, ο οποίος είναι συνήθως ασφαλής. Ωστόσο, το κλειδί που χρησιμοποιήθηκε για την κρυπτογράφηση των tokens προέκυπτε από την τρέχουσα διαδρομή του εκτελέσιμου προγράμματος και το αναγνωριστικό του μηχανήματος, καθιστώντας εύκολη την αναδημιουργία του κλειδιού.

Τα ανακτηθέντα tokens αποκρυπτογραφούνται από ένα custom JS script που εκτελείται στο Electron executable του VS Code, αποκρυπτογραφώντας και εκτυπώνοντας όλους τους κωδικούς πρόσβασης των τοπικά εγκατεστημένων επεκτάσεων.

Αποκρυπτογράφηση των ανακτηθέντων tokens

Ένα δεύτερο ελάττωμα που ανακάλυψαν οι ερευνητές της Cycode ήταν ότι η λειτουργία “getFullKey” ανακτά μυστικά με βάση ένα δεδομένο “extensionId”, το οποίο προκύπτει από το όνομα και τον εκδότη της επέκτασης.

Αυτό το πρόβλημα επιτρέπει σε οποιονδήποτε να τροποποιήσει αυτά τα πεδία και να ξεγελάσει το VS Code ώστε να του χορηγήσει πρόσβαση στα ασφαλή tokens μιας άλλης επέκτασης.

Η Cycode το δοκίμασε αυτό χρησιμοποιώντας μια επέκταση PoC που μιμείται και πάλι το CircleCI- ωστόσο, σημείωσαν ότι η αντιγραφή οποιασδήποτε άλλης επέκτασης και η απόκτηση πρόσβασης στα μυστικά της θα ήταν τετριμμένη.

Αποκάλυψη και (μη) διόρθωση

Η Cycode δήλωσε στο BleepingComputer ότι αποκάλυψε το πρόβλημα στη Microsoft πριν από δύο μήνες, επιδεικνύοντας μάλιστα την επέκταση PoC και την ικανότητά της να κλέβει αποθηκευμένα tokens επέκτασης.

Ανεξάρτητα από αυτό, οι μηχανικοί της Microsoft δεν το είδαν ως πρόβλημα ασφαλείας και αποφάσισαν να διατηρήσουν τον υπάρχοντα σχεδιασμό του πλαισίου διαχείρισης της μυστικής αποθήκευσης του VS Code.

Διαβάστε επίσης: Κακόβουλες επεκτάσεις Microsoft VSCode κλέβουν password

πηγή πληροφοριών:bleepingcomputer.com