Office: έχασε η Microsoft την πρόσβαση σε πηγαίο κώδικα;

Microsoft Office: Ο τρόπος με τον οποίο γράφει η Microsoft patches για σφάλματα ασφαλείας έχει κάνει αρκετούς ειδικούς στον τομέα της ασφάλειας λογισμικού να πιστεύουν ότι η εταιρεία ενδέχεται να έχει χάσει τον πηγαίο κώδικα σε ένα από τα χαρακτηριστικά του Office.

Οι εμπειρογνώμονες κατέληξαν σε αυτό το συμπέρασμα αυτή την εβδομάδα όταν η Microsoft επιδιόρθωσε μια ευπάθεια ασφαλείας που αναγνωρίζεται σαν CVE-2017-11882 και επηρέαζε το EQNEDT32.EXE, τον επεξεργαστή εξισώσεων που συμπεριλαμβάνεται στη σουίτα του Microsoft Office από το 2007.office

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

Ερευνητές από την εταιρεία ασφάλειας Embedi ανακάλυψαν ένα ελάττωμα σε αυτό το χαρακτηριστικό κατά τη διάρκεια του καλοκαιριού. Το σφάλμα επέτρεπε σιωπηλές επιθέσεις σε όλες τις εκδόσεις του Microsoft Office και των Windows που κυκλοφόρησαν τα τελευταία 17 χρόνια χωρίς την αλληλεπίδραση χρηστών.

Ενώ οι περισσότεροι ειδικοί της ασφάλειας εξέτασαν την έκθεση της Embide (20 σελίδες PDF) για λεπτομέρειες σχετικά με το σφάλμα, μια συγκεκριμένη εταιρεία εξέτασε τον τρόπο με τον οποίο η Microsoft επιδιόρθωσε το σφάλμα στο Office.

Οι ειδικοί από την 0patch – που διαχειρίζονται μια πλατφόρμα για την άμεση διανομή, εφαρμογή και αφαίρεση binary patches – παρατήρησαν ότι το patched αρχείο EQNEDT32.EXE ήταν σχεδόν πανομοιότυπο με το παλιό.

“Συναντήσατε ποτέ έναν C/C++ compiler που έβαλε όλες τις λειτουργίες σε ένα εκτελέσιμο αρχείο των 500+ KB στην ίδια ακριβώς διεύθυνση του module μετά την μεταγλώττιση ενός τροποποιημένου πηγαίου κώδικα, ειδικά όταν αυτές οι τροποποιήσεις άλλαξαν το μέγεθος του κώδικα σε διάφορες λειτουργίες;” ρωτάνε οι εμπειρογνώμονες.

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

Ο μόνος τρόπος για τον οποίο το νέο EQNEDT32.EXE μπορεί να παρέμεινε παρόμοιο με την προηγούμενη έκδοση θα ήταν εάν οι μηχανικοί της Microsoft το επεξεργάστηκαν με μη αυτόματο τρόπο.

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

Οι ερευνητές της Embedi επεσήμαναν ότι η ηλικία του συστατικού είναι αυτό που τους έκανε να αναζητήσουν για σφάλματα.

“Το exe δημιουργήθηκε στις 11/9/2000”, αναφέρει η ομάδα της Embedi.

“Χωρίς περαιτέρω ανασυγκρότηση, χρησιμοποιήθηκε σε όλες τις εκδόσεις του Microsoft Office. Φαίνεται ότι το στοιχείο αναπτύχθηκε από την Design Science Inc. Ωστόσο, αργότερα τα δικαιώματα αγοράστηκαν από τη Microsoft”.

Το γεγονός ότι ένα στοιχείο που έρχεται με το Office τα τελευταία 17 χρόνια έχει λάβει μόνο μία ενημέρωση, είναι αρκετά περίεργο..

Η χειροκίνητη επεξεργασία εκτελέσιμων αρχείων για να αλλάξει η συμπεριφορά ενός δυαδικού συστήματος θεωρείται hack χαμηλού επιπέδου, η οποία συνήθως προκαλεί περισσότερα προβλήματα από αυτά που επιλύει. Οι προγραμματιστές που εμπλέκονται σε τέτοιες τακτικές συνήθως διακινδυνεύουν να καταστρέψουν ολόκληρο το δυαδικό. Σύμφωνα όμως με την 0patch, η επιδιόρθωση του EQNEDT32.EXE όμως ήταν έργο τέχνης.

Η ευπάθεια CVE-2017-11882 συνέβη επειδή το EQNEDT32.EXE μπορούσε να διαθέτει ένα σταθερό μέγεθος μνήμης και να φορτώνει ένα όνομα γραμματοσειράς. Εάν το όνομα της γραμματοσειράς ήταν πολύ μεγάλο, θα μπορούσε να προκαλέσει υπερχείλιση στο buffer κάτι που θα επέτρεπε στους επιτιθέμενους να εκτελέσουν κακόβουλο κώδικα.

Μετά η Microsoft βελτιστοποίησε και άλλες λειτουργίες καθώς οι τροποποιήσεις του κώδικα επηρέασαν μικρότερες λειτουργίες. Έτσι η εταιρεία πρόσθεσε bits padding για να αποφευχθεί η αναστάτωση των ρυθμίσεων άλλων κοντινών λειτουργιών.

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

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

Όλα τα στοιχεία καταλήγουν στο συμπέρασμα ότι η Microsoft έχει χάσει την πρόσβαση της στον πηγαίο κώδικα του EQNEDT32.EXE.

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

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

Αφήστε ένα Σχόλιο

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