Κυκλοφόρησε η τελική έκδοση της προδιαγραφής πλατφόρμας υλικού και λογισμικού CHERIoT 1.0 (Capability Hardware Extension to RISC-V for Internet of Things). Ορίζει μια επέκταση συνόλου εντολών (ISA) για τη δημιουργία ασφαλών συσκευών. Το CHERIoT παρέχει δυνατότητες υλικού για την παρακολούθηση πρόσβασης στη μνήμη, την επικύρωση δεικτών και την απομόνωση μπλοκ κώδικα. Έχει δημοσιευτεί μια σταθερή έκδοση του τυπικού μοντέλου αναφοράς CHERIoT ISA, που ορίζεται στη γλώσσα Sail. Το έργο διανέμεται με άδεια BSD.
Το έργο CHERIoT δημιουργήθηκε από τη Microsoft για την αντιμετώπιση ζητημάτων ασφαλείας σε υπάρχοντα κώδικα C και C++ και την προστασία αυτού του κώδικα χωρίς να τον ξαναγράψει. Η προστασία επιτυγχάνεται μέσω της χρήσης ενός τροποποιημένου μεταγλωττιστή που χρησιμοποιεί ένα εκτεταμένο σύνολο εντολών (ISA) για να διασφαλίσει την ακεραιότητα του δείκτη, τον έλεγχο των ορίων μνήμης και να αποτρέψει την πρόσβαση στην ελεύθερη μνήμη. Το 2023, το έργο του CHERIoT έγινε ανοιχτού κώδικα και μετατράπηκε σε ένα συνεργατικό έργο, στο οποίο συμμετείχαν και άλλες εταιρείες.
Τα στοιχεία υλικού του CHERIoT υλοποιούνται ως μικροελεγκτής βασισμένος σε RISC-V, εφαρμόζοντας την ασφαλή αρχιτεκτονική επεξεργαστή CHERI (Capability Hardware Extension to RISC-V) με ένα μοντέλο ελεγχόμενης πρόσβασης μνήμης βασισμένο σε δυνατότητες (κάθε λειτουργία ανάγνωσης και εγγραφής μνήμης είναι εξουσιοδοτημένη). Η αρχιτεκτονική συνόλου εντολών (ISA) του CHERIoT χρησιμοποιείται για την κατασκευή ενός μοντέλου λογισμικού που εγγυάται την ασφάλεια μνήμης σε επίπεδο αντικειμένου, προστατεύει από την πρόσβαση σε προηγουμένως απελευθερωμένη μνήμη και εφαρμόζει ένα ελαφρύ σύστημα απομόνωσης πρόσβασης μνήμης.
Αυτό το μοντέλο προστασίας λογισμικού αντιστοιχίζεται απευθείας στο μοντέλο γλώσσας C/C++, επιτρέποντάς του να εφαρμοστεί σε υπάρχουσες εφαρμογές, των οποίων η προστασία απαιτεί μόνο επαναμεταγλώττιση και εκτέλεση σε υλικό που υποστηρίζει το CHERIoT ISA. Για παράδειγμα, η χρήση του CHERIoT επιτρέπει την εφαρμογή αυτόματου ελέγχου ορίων, παρακολούθησης της διάρκειας ζωής της μνήμης και ακεραιότητας δείκτη σε στοιχεία που χειρίζονται μη αξιόπιστα δεδομένα χωρίς να απαιτούνται αλλαγές στον κώδικα.
Μεταξύ των προβλημάτων που μπλοκάρει το CHERIoT:
- Η μνήμη είναι εκτός ορίων.
- Αντικατάσταση δείκτη (όταν χρησιμοποιείται το CHERIoT, όλοι οι δείκτες πρέπει να προέρχονται από ήδη υπάρχοντες δείκτες).
- Πρόσβαση στη μνήμη μετά την απελευθέρωση (οποιαδήποτε πρόσβαση στη μνήμη χρησιμοποιώντας μη έγκυρο δείκτη ή δείκτη που αναφέρεται σε ένα ελευθερωμένο αντικείμενο έχει ως αποτέλεσμα την εμφάνιση εξαίρεσης όταν εφαρμόζεται το CHERIoT).
Εκτός από την προδιαγραφή και το επίσημο μοντέλο, το έργο αναπτύσσει μια υλοποίηση αναφοράς της CPU RISC-V Ibex 32-bit με υποστήριξη για το CHERIoT ISA και μια τροποποιημένη αλυσίδα εργαλείων LLVM. Τα σχηματικά πρωτότυπου CPU και οι περιγραφές μπλοκ υλικού στο Verilog διανέμονται με την άδεια Apache 2.0. Η CPU βασίζεται στον πυρήνα Ibex από το έργο lowRISC. Τα τσιπ ICENI που βασίζονται στον πυρήνα CHERIoT Ibex προετοιμάζονται για μαζική παραγωγή, με προγραμματισμένη διαθεσιμότητα για το επόμενο έτος. Η Microsoft αναπτύσσει επίσης τον μικροελεγκτή Kudu με υποστήριξη για το CHERIoT ISA. Οι Ibex και Kudu υποστηρίζουν ήδη πλήρως την προδιαγραφή CHERIoT 1.0. Βρίσκονται σε εξέλιξη εργασίες για την τυποποίηση των επεκτάσεων CHERI για τους επεξεργαστές RISC-V στο RISC-V International.
Επιπλέον, αναπτύσσονται ένας εξομοιωτής πλατφόρμας βασισμένος σε FPGA και ένα κοντέινερ Docker για προγραμματιστές με προεγκατεστημένα εργαλεία και τον προσομοιωτή CPU Ibex, που υλοποιούνται χρησιμοποιώντας το Verilator. Επιπλέον, έχει αναπτυχθεί ένα πρωτότυπο του λειτουργικού συστήματος πραγματικού χρόνου CHERIoT RTOS με βάση το CHERIoT, επιτρέποντας την απομόνωση διαμερισμάτων ακόμη και σε ενσωματωμένα συστήματα με 256 MB RAM. Ο κώδικας CHERIoT RTOS είναι γραμμένος σε C++ και διανέμεται με την άδεια MIT. Τα βασικά στοιχεία του λειτουργικού συστήματος, όπως ο bootloader, ο χρονοπρογραμματιστής και το σύστημα κατανομής μνήμης, υλοποιούνται ως διαμερίσματα.
Ένα διαμέρισμα στο CHERIoT RTOS είναι ένας απομονωμένος συνδυασμός κώδικα και καθολικών μεταβλητών που μοιάζει με μια κοινόχρηστη βιβλιοθήκη, αλλά σε αντίθεση με την τελευταία, είναι μεταβλητό και εκτελείται σε ξεχωριστό περιβάλλον ασφαλείας. Κανένας εξωτερικός κώδικας δεν μπορεί να μεταφέρει τον έλεγχο στον κώδικα σε ένα διαμέρισμα ή να έχει πρόσβαση σε αντικείμενα, εκτός από την κλήση ειδικά καθορισμένων σημείων εισόδου και τη χρήση δεικτών σε αντικείμενα που διαβιβάζονται ρητά κατά την κλήση ενός άλλου διαμερίσματος. Η ακεραιότητα και η εμπιστευτικότητα είναι εγγυημένες για τον κώδικα και τα καθολικά αντικείμενα σε ένα διαμέρισμα.
Πηγή: opennet.ru
