Trojan Source, επίθεση που επιτρέπει την προσθήκη αλλαγών κώδικα αόρατες στον προγραμματιστή

πριν ΛΙΓΕΣ μερες αποκάλυψαν ερευνητές από το Πανεπιστήμιο του Κέιμπριτζ τη δημοσίευση του μια τεχνική για υποκατάσταση κωδίκων κακόβουλο στον πηγαίο κώδικα των εφαρμογών.

Η προετοιμασμένη μέθοδος επίθεσης που Είναι ήδη καταχωρημένο στο CVE-2021-42574 έρχεται με το όνομα Trojan Source και βασίζεται στον σχηματισμό κειμένου που φαίνεται διαφορετικό στον μεταγλωττιστή/διερμηνέα και στο άτομο που βλέπει τον κώδικα.

Σχετικά με την πηγή Trojan

Η μέθοδος βασίζεται στην εφαρμογή ειδικών χαρακτήρων Unicode στα σχόλια κώδικα, τα οποία αλλάζουν τη σειρά εμφάνισης του αμφίδρομου κειμένου. Με τη βοήθεια αυτών των χαρακτήρων ελέγχου, Ορισμένα μέρη του κειμένου μπορούν να εμφανίζονται από αριστερά προς τα δεξιά, ενώ άλλα από τα δεξιά προς τα αριστερά.

Στην καθημερινή πρακτική, αυτοί οι χαρακτήρες ελέγχου μπορούν να χρησιμοποιηθούν, για παράδειγμα, για την εισαγωγή εβραϊκών ή αραβικών συμβολοσειρών σε ένα κωδικοποιημένο αρχείο. Ωστόσο, εάν χρησιμοποιείτε αυτούς τους χαρακτήρες για να συνδυάσετε γραμμές με διαφορετικές κατευθύνσεις κειμένου στην ίδια γραμμή, τα αποσπάσματα κειμένου που εμφανίζονται από τα δεξιά προς τα αριστερά ενδέχεται να επικαλύπτουν το υπάρχον κανονικό κείμενο που εμφανίζεται από αριστερά προς τα δεξιά.

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

Ανακαλύψαμε τρόπους για να χειριστούμε την κωδικοποίηση των αρχείων προέλευσης, έτσι ώστε οι θεατές και οι μεταγλωττιστές να βλέπουν διαφορετική λογική. Μια ιδιαίτερα καταστροφική μέθοδος χρησιμοποιεί χαρακτήρες παράκαμψης κατευθυντικότητας Unicode για να εμφανίσει τον κώδικα ως αναγραμματισμό της πραγματικής λογικής του. Έχουμε επαληθεύσει ότι αυτή η επίθεση λειτουργεί ενάντια σε C, C++, C#, JavaScript, Java, Rust, Go και Python και υποπτευόμαστε ότι θα λειτουργήσει ενάντια στις περισσότερες άλλες σύγχρονες γλώσσες.

Κατά την εξέταση του κώδικα, ο προγραμματιστής θα βρεθεί αντιμέτωπος με την οπτική σειρά των χαρακτήρων και θα δει ένα ύποπτο σχόλιο σε ένα πρόγραμμα επεξεργασίας κείμενο, διεπαφή ιστού ή IDE, αλλά ο μεταγλωττιστής και ο διερμηνέας θα χρησιμοποιήσουν τη λογική σειρά των χαρακτήρων και θα χειριστούν τον κακόβουλο κώδικα ως έχουν, ανεξάρτητα από αμφίδρομο κείμενο στο σχόλιο. Αρκετοί δημοφιλείς επεξεργαστές κώδικα (VS Code, Emacs, Atom) καθώς και διεπαφές για την προβολή κώδικα σε αποθετήρια (GitHub, Gitlab, BitBucket και όλα τα προϊόντα Atlassian) επηρεάζονται.

Υπάρχουν διάφοροι τρόποι χρήσης της μεθόδου για την υλοποίηση κακόβουλων ενεργειών: προσθήκη μιας κρυφής έκφρασης "επιστροφής", η οποία οδηγεί στον πρόωρο τερματισμό της εκτέλεσης της συνάρτησης. σχολιασμός εκφράσεων που συνήθως θεωρούνται έγκυρες κατασκευές (για παράδειγμα, για απενεργοποίηση σημαντικών ελέγχων). εκχώρηση άλλων τιμών συμβολοσειράς που οδηγούν σε αποτυχίες επικύρωσης συμβολοσειράς.

Επιπλέον, προτάθηκε μια άλλη επιλογή επίθεσης (CVE-2021-42694), η οποία περιλαμβάνει τη χρήση ομογλυφικών, σύμβολα που εμφανίζονται παρόμοια στην εμφάνιση, αλλά διαφέρουν στη σημασία και έχουν διαφορετικούς κωδικούς Unicode. Αυτοί οι χαρακτήρες μπορούν να χρησιμοποιηθούν σε ορισμένες γλώσσες σε ονόματα συναρτήσεων και μεταβλητών για να ξεγελάσουν τους προγραμματιστές. Για παράδειγμα, μπορείτε να ορίσετε δύο συναρτήσεις με δυσδιάκριτα ονόματα που εκτελούν διαφορετικές ενέργειες. Χωρίς λεπτομερή ανάλυση, δεν μπορείτε να καταλάβετε αμέσως ποια από αυτές τις δύο συναρτήσεις καλείται σε ένα συγκεκριμένο μέρος.

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

εκτός αυτού Τα τρωτά σημεία έχουν ήδη αρχίσει να επιδιορθώνονται έτοιμο για GCC, LLVM/Clang, Rust, Go, Python και binutils. Το GitHub, το Bitbucket και το Jira ετοιμάζουν ήδη μια λύση μαζί με το GitLab.

Τελικά Εάν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να συμβουλευτείτε τις λεπτομέρειες στον παρακάτω σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.