Το ελάττωμα κώδικα του Microsoft Visual Studio επιτρέπει στις επεκτάσεις να κλέβουν κωδικούς πρόσβασης
Το περιβάλλον επεξεργασίας και ανάπτυξης κώδικα Visual Studio Code (VS Code) της Microsoft περιέχει ένα ελάττωμα που επιτρέπει σε κακόβουλες επεκτάσεις να ανακτούν διακριτικά ελέγχου ταυτότητας που είναι αποθηκευμένα σε διαχειριστές διαπιστευτηρίων Windows, Linux και macOS.
Αυτά τα διακριτικά χρησιμοποιούνται για ενσωμάτωση με διάφορες υπηρεσίες και API τρίτων, όπως το Git, το GitHub και άλλες πλατφόρμες κωδικοποίησης, επομένως η κλοπή τους θα μπορούσε να έχει σημαντικές συνέπειες για την ασφάλεια των δεδομένων ενός οργανισμού σε κίνδυνο, οδηγώντας δυνητικά σε μη εξουσιοδοτημένη πρόσβαση στο σύστημα, παραβιάσεις δεδομένων. και τα λοιπά.
Το ελάττωμα ήταν
ανακαλύφθηκε από ερευνητές του Cycode
, ο οποίος το ανέφερε στη Microsoft μαζί με ένα λειτουργικό proof-of-concept (PoC) που ανέπτυξαν. Ωστόσο, ο τεχνολογικός γίγαντας αποφάσισε να μην διορθώσει το πρόβλημα, καθώς οι επεκτάσεις δεν αναμένεται να αποσπαστούν από το υπόλοιπο περιβάλλον.
Κλέβοντας μυστικά με προεκτάσεις
Το πρόβλημα ασφαλείας που ανακαλύφθηκε από το Cycode προκαλείται από την έλλειψη απομόνωσης των διακριτικών ελέγχου ταυτότητας στο ‘Secret Storage’ του VS Code, ένα API που επιτρέπει στις επεκτάσεις να αποθηκεύουν διακριτικά ελέγχου ταυτότητας στο λειτουργικό σύστημα.
Αυτό γίνεται χρησιμοποιώντας το Keytar, το περιτύλιγμα του VS Code για επικοινωνία με τον διαχειριστή διαπιστευτηρίων των Windows (στα Windows), το keychain (σε macOS) ή το μπρελόκ (για Linux).
Αυτό σημαίνει ότι κάθε επέκταση που εκτελείται σε VS Code, ακόμη και κακόβουλες, μπορεί να αποκτήσει πρόσβαση στη Μυστική αποθήκευση και να κάνει χρήση του Keytar για να ανακτήσει τυχόν αποθηκευμένα διακριτικά.
Ο ερευνητής Cycode Alex Ilgayev είπε στο BleepingComputer ότι εκτός από τον ενσωματωμένο έλεγχο ταυτότητας GitHub και Microsoft, όλα τα αποθηκευμένα διαπιστευτήρια από τη χρήση επεκτάσεων τρίτων.
“Εκτός από τον ενσωματωμένο έλεγχο ταυτότητας Github/Microsoft, όλα τα διακριτικά που αποθηκεύονται στο VSCode προέρχονται από επεκτάσεις”, είπε ο Ilgayev στο BleepingComputer.
“Ορίζονται είτε από επίσημες επεκτάσεις (από τη Microsoft), όπως Git, Azure, Docker/Kubernetes κ.λπ., είτε από επεκτάσεις τρίτων, όπως CircleCI, GitLab, AWS.”

Keychain που περιέχει κωδικούς πρόσβασης σύνδεσης
Πηγή: Cycode
Μόλις ανακάλυψαν το πρόβλημα, οι ερευνητές της Cycode άρχισαν να πειραματίζονται δημιουργώντας μια κακόβουλη επέκταση για την κλοπή κουπονιών για το CircleCI, μια δημοφιλή πλατφόρμα κωδικοποίησης με επεκτάσεις VS Code. Το έκαναν αυτό τροποποιώντας την επέκταση του CircleCI για να εκτελέσει μια εντολή που θα αποκάλυπτε το ασφαλές διακριτικό του και θα το έστελνε ακόμη και απευθείας στον διακομιστή του ερευνητή.
Σταδιακά, ανέπτυξαν μια πιο ευέλικτη μέθοδο επίθεσης για να εξάγουν αυτά τα μυστικά χωρίς να παραβιάζουν τον κώδικα της επέκτασης στόχου.
Το κλειδί σε αυτήν τη διαδικασία ήταν η ανακάλυψη ότι οποιαδήποτε επέκταση κώδικα VS είναι εξουσιοδοτημένη να έχει πρόσβαση στην κλειδοθήκη επειδή εκτελείται μέσα από την εφαρμογή στην οποία το λειτουργικό σύστημα έχει ήδη παραχωρήσει πρόσβαση στο κλειδί.
“Αναπτύξαμε μια κακόβουλη επέκταση απόδειξης της ιδέας που ανακτούσε με επιτυχία διακριτικά όχι μόνο από άλλες επεκτάσεις, αλλά και από την ενσωματωμένη λειτουργία σύνδεσης και συγχρονισμού του VS Code για λογαριασμούς GitHub και Microsoft, παρουσιάζοντας μια επίθεση “Κλοπή Token”.” – Cycode.
Στη συνέχεια, τα ανακτημένα διακριτικά έπρεπε να αποκρυπτογραφηθούν και η Cycode διαπίστωσε ότι ο αλγόριθμος που χρησιμοποιήθηκε για την κρυπτογράφηση των διακριτικών ήταν ο AES-256-GCM, ο οποίος είναι συνήθως ασφαλής. Ωστόσο, το κλειδί που χρησιμοποιήθηκε για την κρυπτογράφηση των διακριτικών προήλθε από την τρέχουσα εκτελέσιμη διαδρομή και το αναγνωριστικό του μηχανήματος, καθιστώντας εύκολη την αναδημιουργία του κλειδιού.

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

Αποκρυπτογράφηση των ανακτημένων διακριτικών
Πηγή: Cycode
Ένα δεύτερο ελάττωμα που ανακάλυψαν οι ερευνητές της Cycode ήταν ότι η συνάρτηση «getFullKey» ανακτά μυστικά από ένα δεδομένο «extensionId», το οποίο προέρχεται από το όνομα και τον εκδότη της επέκτασης.
Αυτό το πρόβλημα επιτρέπει σε οποιονδήποτε να τροποποιήσει αυτά τα πεδία και να ξεγελάσει τον Κώδικα VS ώστε να του παραχωρήσει πρόσβαση σε ασφαλή διακριτικά άλλης επέκτασης.
Το Cycode το δοκίμασε χρησιμοποιώντας μια επέκταση PoC που μιμήθηκε ξανά το CircleCI. Ωστόσο, σημείωσαν ότι η αναπαραγωγή οποιασδήποτε άλλης επέκτασης και η πρόσβαση στα μυστικά της θα ήταν ασήμαντο.
Αποκάλυψη και (όχι) επιδιόρθωση
Η Cycode είπε στο BleepingComputer ότι αποκάλυψαν το πρόβλημα στη Microsoft πριν από δύο μήνες, επιδεικνύοντας μάλιστα την επέκταση PoC και την ικανότητά της να κλέβει αποθηκευμένα διακριτικά επέκτασης.
Ανεξάρτητα από αυτό, οι μηχανικοί της Microsoft δεν το θεώρησαν αυτό ως ανησυχία για την ασφάλεια και αποφάσισαν να διατηρήσουν την υπάρχουσα σχεδίαση του πλαισίου διαχείρισης μυστικού αποθηκευτικού χώρου της VS Code.
Η BleepingComputer επικοινώνησε με τη Microsoft για ένα σχόλιο σχετικά με τα παραπάνω, αλλά δεν έλαβε απάντηση στις ερωτήσεις μας.


