Μετάβαση στο περιεχόμενο
LIVE ΕΝΗΜΕΡΩΣΗ

Αθήνα · Τετάρτη, 11 Νοεμβρίου 2026

LIVE

Microsoft FORGE Lab: Με τη βοήθεια τεχνητής νοημοσύνης εντόπισε σφάλματα ασφάλειας μνήμης στην τυπική βιβλιοθήκη της Rust, ακόμη και μέσω «ασφαλούς» κώδικα ENISA: Η κατάσταση της κυβερνοασφάλειας στην ΕΕ το 2026, με δείκτη 71,53 και πέντε κατευθύνσεις για το μέλλον Voyager 1: Η NASA καλεί τον κόσμο να στείλει φως σε κώδικα Μορς στις 17 Νοεμβρίου και διοργανώνει συζήτηση στο JPL για τη μία ημέρα φωτός CISA: Έξι ευπάθειες στον κατάλογο KEV, με Barracuda, Chromium και Outlook – Προθεσμία έως 13 Νοεμβρίου για τη Barracuda Γαλλία: Σύμβαση άνω του 1,5 δισ. ευρώ σε Airbus και Thales Alenia Space για τους στρατιωτικούς δορυφόρους IRIS – Τι αντικαθιστούν Βασιλικό Ναυτικό: 90 εκατ. λίρες για το «Atlantic Net» κατά των ρωσικών υποβρυχίων – Ποια εταιρεία το αναλαμβάνει Ουκρανικά πλήγματα στο εργοστάσιο της Στάραγια Ρούσα που επισκευάζει τα A-50 και σε βάση drones στο αεροδρόμιο του Ντονέτσκ Το Ιράν χαρακτήρισε τρομοκρατικές οργανώσεις το Πολεμικό Ναυτικό και την Πολεμική Αεροπορία της Αργεντινής – Σε ποια απόφαση του Μιλέι απαντά Βρετανία: Συνελήφθη Αμερικανός στρατιωτικός ως ύποπτος κατασκοπείας υπέρ της Ρωσίας – Σε ποιο στρατηγείο του ΝΑΤΟ υπηρετούσε Περισσότερα V-BAT για Στρατό Ξηράς και Πολεμικό Ναυτικό: Νέα παραγγελία μέσω του ΝΑΤΟ – Τι περιλαμβάνει η σύμβαση
Φουσκωτό καβούρι Ferris, η μασκότ της γλώσσας Rust, με φωτισμό νέον πάνω από τραπέζια στο συνέδριο 38C3

Τεχνολογία

Microsoft FORGE Lab: Με τη βοήθεια τεχνητής νοημοσύνης εντόπισε σφάλματα ασφάλειας μνήμης στην τυπική βιβλιοθήκη της Rust, ακόμη και μέσω «ασφαλούς» κώδικα

Ο φουσκωτός Ferris, το καβούρι-μασκότ της γλώσσας Rust, στον χώρο της κοινότητας της Rust στο 38ο Chaos Communication Congress (38C3). Φωτογραφία: Igloo22225 / CC BY 4.0

Διαφήμιση

Ένα πρόγραμμα γραμμένο αποκλειστικά σε «ασφαλή» Rust μπορεί να οδηγήσει σε συμπεριφορά που η γλώσσα έχει σχεδιαστεί να αποτρέπει. Αυτό έδειξε το FORGE Lab της Microsoft, που δημοσίευσε τη Δευτέρα 9 Νοεμβρίου ευρήματα από την τυπική βιβλιοθήκη της Rust (τα τμήματα std και core). Μέρος των σφαλμάτων εντοπίστηκε με τη βοήθεια του Hyenas, της ερευνητικής έκδοσης του συστήματος με την κωδική ονομασία MDASH, που σαρώνει κώδικα για ευπάθειες με τεχνητή νοημοσύνη. Τα σφάλματα τα διερεύνησαν, τα αναπαρήγαγαν και τα ανέφεραν στους συντηρητές της Rust οι ερευνητές της ομάδας.

Πρώτα οι όροι. Ασφάλεια μνήμης σημαίνει ότι ένα πρόγραμμα δεν διαβάζει και δεν γράφει σε σημεία της μνήμης που δεν του ανήκουν, κάτι που στις γλώσσες C και C++ αποτελεί συχνή πηγή ευπαθειών. Η Rust αποκλείει ολόκληρες κατηγορίες τέτοιων σφαλμάτων με το σύστημα τύπων και το μοντέλο ιδιοκτησίας. Κάτω από τις ασφαλείς διεπαφές προγραμματισμού (API) της βιβλιοθήκης όμως υπάρχει «unsafe» κώδικας, όπου τις εγγυήσεις που δεν μπορεί να ελέγξει ο μεταγλωττιστής τις αναλαμβάνει ο προγραμματιστής. Το Vec και το String, για παράδειγμα, χτίζονται από μικρά unsafe κομμάτια. Αν ο κώδικας αυτός παραβιάσει τις εγγυήσεις ασφάλειας που υπόσχεται, ακόμη και ο ασφαλής κώδικας που τον χρησιμοποιεί μπορεί να καταλήξει σε «απροσδιόριστη συμπεριφορά» (undefined behavior), δηλαδή σε κατάσταση για την οποία η γλώσσα δεν δίνει καμία εγγύηση.

Η ομάδα ταξινόμησε τα προβλήματα σε τρία μοτίβα λανθασμένης εμπιστοσύνης. Στο πρώτο, ο κώδικας εμπιστεύεται ότι δεν θα προκύψει πανικός (panic), δηλαδή πρόωρη έξοδος από τη συνάρτηση με ξετύλιγμα της στοίβας, κατά το οποίο εκτελούνται οι καταστροφείς (destructors). Στην MapWindows::clone (ζήτημα #156501) ο νέος προσωρινός χώρος μνήμης (buffer) είχε ήδη ενεργό καταστροφέα πριν γεμίσει, οπότε ένας πανικός στο ενδιάμεσο έκανε τον καταστροφέα να εκτελεστεί πάνω σε μη αρχικοποιημένες τιμές. Στο BTreeMap::insert (#156490) η ίδια αδυναμία εμφανιζόταν όταν ένας προσαρμοσμένος εκχωρητής μνήμης (allocator) ξετύλιγε τη στοίβα αντί να τερματίσει τη διεργασία. Η σταθεροποίηση του Allocator API, που κυκλοφορεί με τη Rust 1.100 την Πέμπτη 12 Νοεμβρίου, απαιτεί πλέον οι υλοποιήσεις να μην ξετυλίγουν ποτέ τη στοίβα (unwind) από τις μεθόδους του trait ή από το drop.

Διαφήμιση

Στο δεύτερο μοτίβο, ο κώδικας εμπιστεύεται υλοποιήσεις που δίνει ο χρήστης. Στη C++ ένας συγκριτής που παραβιάζει τους κανόνες ταξινόμησης της std::sort προκαλεί απροσδιόριστη συμπεριφορά, ενώ η sort_by της Rust πρέπει να μένει ασφαλής ό,τι κι αν επιστρέψει ο συγκριτής. Η str::replace (#156491) με προσαρμοσμένο Pattern μπορούσε να παραγάγει String που δεν είναι έγκυρο UTF-8. Η διόρθωση άλλαξε τον τύπο StringPattern ώστε να κρατά &str αντί για &[u8]. Η συνάρτηση join είχε διορθωθεί το 2020, μετά από αναφορά της ίδιας ομάδας (CVE-2020-36323), και χρειάστηκε νέα διόρθωση τον Απρίλιο του 2026: αν το πρώτο στοιχείο μεγάλωνε στη δεύτερη κλήση, ο υπολογισμός του μήκους που απέμενε υποχείλιζε (underflow) και οδηγούσε σε υπερχείλιση σωρού.

Το τρίτο μοτίβο αφορά τα όρια με το λειτουργικό σύστημα και εκεί οι πράκτορες τεχνητής νοημοσύνης αλλάζουν τα δεδομένα, γιατί γνωρίζουν αρκετά για το περιβάλλον όπου εκτελείται ο κώδικας ώστε η αναζήτηση να γίνεται πρακτικά εφικτή. Η process::exit, όταν καλείται από δευτερεύον νήμα, αποδέσμευε την εναλλακτική στοίβα σημάτων του κύριου νήματος (#161018). Αν το κύριο νήμα υπερχείλιζε τη στοίβα του εκείνη τη στιγμή, το πρόγραμμα κατέρρεε με σκέτο σφάλμα τμηματοποίησης (segmentation fault) αντί για το μήνυμα της Rust. Το σφάλμα υπήρχε από το 2015, δηλαδή σχεδόν 11 χρόνια. Η Microsoft έκρινε την εκμετάλλευσή του απίθανη στην πράξη. Στην CommandExt::exec (#156951) η καθολική μεταβλητή environ γραφόταν υπό κλείδωμα ανάγνωσης από το 2021. Τα δύο αυτά σφάλματα επηρεάζουν τη σταθερή έκδοση της Rust, ενώ η διόρθωση για την exec εξετάζεται ακόμη.

Η Microsoft τονίζει ότι κάθε σφάλμα χρειάζεται ασυνήθιστες συνθήκες, όπως πανικό την ακατάλληλη στιγμή ή εσκεμμένα λανθασμένη υλοποίηση, και δεν αποτελεί αυτόματα ευπάθεια στα προγράμματα που χρησιμοποιούν τη βιβλιοθήκη. Δύο από τα ζητήματα που κατέθεσε η ομάδα παραμένουν ανοιχτά. Η εταιρεία υπενθυμίζει ότι, κατά τις εκτιμήσεις, δισεκατομμύρια άνθρωποι χρησιμοποιούν καθημερινά λογισμικό ή λειτουργικά συστήματα βασισμένα στη Rust, ότι η ίδια την έχει κάνει μία από τις βασικές (Tier-1) εσωτερικές γλώσσες της, μαζί με τις C++, C# και TypeScript, και ότι το GitHub ξανάγραψε σε Rust το περιβάλλον εκτέλεσης του πράκτορα Copilot, ενώ κώδικα μεταφέρουν σε αυτήν και το Android, ο πυρήνας του Linux και το Bun.

Για τους προγραμματιστές το συμπέρασμα είναι πρακτικό: κάθε κλήση προς κώδικα που δεν ελέγχουν (clone, drop, συγκρίσεις, closures, μέθοδοι επαναληπτών) μπορεί να είναι πρόωρη έξοδος. Οι λύσεις που προτείνονται είναι να ολοκληρώνεται πρώτα η εργασία που μπορεί να προκαλέσει πανικό, να κρατιέται η ημιτελής κατάσταση σε ManuallyDrop, να ελέγχεται το αποτέλεσμα ξένου κώδικα και να δηλώνεται unsafe το trait όταν δεν υπάρχει άλλος τρόπος. Στην ομάδα συμμετέχουν οι δημιουργοί του στατικού αναλυτή Rudra (2021), ενώ η έρευνα αξιοποιείται στην ανάπτυξη του MDASH, που φέρνει την αναζήτηση ευπαθειών με πράκτορες τεχνητής νοημοσύνης στο Microsoft Defender, και τα ευρήματα μπορούν να τροφοδοτήσουν το νέο σύστημα πολλαπλών πρακτόρων Microsoft Perception. Για περισσότερες ειδήσεις με τεχνητή νοημοσύνη και ευπάθειες δείτε τις αναλύσεις μας για το πόσες από 383.000 ευπάθειες εκμεταλλεύονται πραγματικά οι επιτιθέμενοι και για τους πράκτορες τεχνητής νοημοσύνης που σαρώνουν το GitHub. Το πλήρες κείμενο υπάρχει στο blog ασφαλείας της Microsoft.

AI MICROSOFT Κυβερνοασφάλεια Τεχνητή νοημοσύνη Τεχνολογία