Ανακαλύφθηκε ευπάθεια σε έναν τεράστιο αριθμό μεταγλωττιστών που σας επιτρέπει να αποκρύψετε κακόβουλο κώδικα

Οι ειδικοί από το Πανεπιστήμιο του Κέιμπριτζ δημοσίευσαν πληροφορίες σχετικά με μια επικίνδυνη ευπάθεια (CVE-2021-42574), το οποίο επηρεάζει σχεδόν όλουςσύγχρονοι μεταγλωττιστές πηγαίου κώδικα. Το άρθρο Trojan Source περιγράφει μια ύπουλη επίθεση που επιτρέπει στους χάκερ να κρύβουν κακόβουλο κώδικα στον πηγαίο κώδικα διαφόρων προγραμμάτων.

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

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


</ img>

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

Κατά την προβολή και την ανάλυση αυτού του πηγαίο κώδικαο προγραμματιστής θα δει κώδικα με σχόλια που δεν προκαλούν καμία υποψία, αλλά ο μεταγλωττιστής ή ο διερμηνέας θα αντιστρέψει τη λογική σειρά των συμβόλων και το αθώο σχόλιο θα μετατραπεί σε πρόσθετο κώδικα που εισάγεται στο πρόγραμμα. Το σφάλμα υπάρχει σχεδόν σε όλους τους μεταγλωττιστές &#8211; για γλώσσες προγραμματισμού C, C++ (gcc και clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go και Python. σε μια ποικιλία δημοφιλών προγραμμάτων επεξεργασίας κώδικα, συμπεριλαμβανομένων των VS Code, Emacs, Atom και διεπαφών προβολής πηγαίου κώδικα στο GitHub, στο Gitlab, στο BitBucket και σε όλα τα προϊόντα Atlassian.

Πηγή: trojansource, zdnet

</ p>