Αρχική






news





Αναζητώντας ασφάλεια στα κρίσιμα έργα ανοιχτού κώδικα

Αναζητώντας ασφάλεια στα κρίσιμα έργα ανοιχτού κώδικα





Η Υπηρεσία

ς και Ασφάλειας Υποδομών των ΗΠΑ (CISA) δημοσίευσε έρευνα που εξετάζει 172 βασικά έργα ανοιχτού κώδικα και εάν είναι ευαίσθητα σε ελαττώματα

ς.


Η έκθεση, που συνυπογράφηκε από την CISA, το Ομοσπονδιακό Γραφείο Ερευνών (FBI), καθώς και από αυστραλιανούς (ASD, ACSC) και καναδικούς οργανισμούς (CCCS), αποτελεί συνέχεια του «

Case for Memory Safe Roadmaps

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

Ασφάλεια μνήμης

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

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

Ένα σύγχρονο παράδειγμα ασφαλούς γλωσσικού συστήματος είναι ο έλεγχος δανεισμού της Rust, ο οποίος εξαλείφει τους αγώνες δεδομένων. Άλλες γλώσσες όπως η Golang, η Java, η C# και η Python διαχειρίζονται τη μνήμη μέσω συλλογής σκουπιδιών, ανακτώντας αυτόματα την ελευθερωμένη μνήμη για να αποτρέψουν την εκμετάλλευση.

Οι μη ασφαλείς για τη μνήμη γλώσσες είναι εκείνες που δεν παρέχουν ενσωματωμένους μηχανισμούς διαχείρισης μνήμης, επιβαρύνοντας τον προγραμματιστή με αυτήν την ευθύνη και αυξάνοντας την πιθανότητα σφαλμάτων. Παραδείγματα τέτοιων περιπτώσεων είναι οι C, C++, Objective-C, Assembly, Cython και D.

Ο ευρέως χρησιμοποιούμενος κώδικας ανοιχτού κώδικα

ασφαλής

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

Τα βασικά ευρήματα που παρουσιάζονται στην έκθεση συνοψίζονται ως εξής:


  • 52% των κρίσιμων έργων ανοιχτού κώδικα που αναλύθηκαν περιέχουν κώδικα γραμμένο σε μη ασφαλείς για τη μνήμη γλώσσες.
  • Το 55% των συνολικών γραμμών κώδικα (LoC) σε αυτά τα έργα είναι γραμμένα σε μη ασφαλείς για τη μνήμη γλώσσες.
  • Τα μεγαλύτερα έργα είναι δυσανάλογα γραμμένα σε μη ασφαλείς για τη μνήμη γλώσσες.
  • Από τα δέκα μεγαλύτερα έργα ανά συνολικό LoC, το καθένα έχει αναλογία μη ασφαλούς για τη μνήμη LoC άνω του

    %.
  • Η διάμεση αναλογία μη ασφαλούς για τη μνήμη LoC σε αυτά τα μεγάλα έργα είναι 62,5%, με τέσσερα έργα να ξεπερνούν το 94%.
  • Ακόμη και έργα που είναι γραμμένα σε γλώσσες που δεν είναι ασφαλείς για μνήμη συχνά εξαρτώνται από στοιχεία γραμμένα σε μη ασφαλείς για μνήμη γλώσσες.

Μερικά αξιοσημείωτα παραδείγματα από το εξεταζόμενο σύνολο είναι το Linux (αναλογία μη ασφαλούς κώδικα 95%), το Tor (αναλογία μη ασφαλούς κώδικα 93%), το Chromium (αναλογία μη ασφαλούς 51%), ο MySQL Server (αναλογία μη ασφαλούς κώδικα 84%), το glibc (αναλογία μη ασφαλούς κώδικα 85%), Redis (αναλογία 85%), SystemD (65%) και Electron (47%).

Περίληψη ευρημάτων

Περίληψη ευρημάτων



Πηγή: CISA

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

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

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

εξηγεί η CISA στην έκθεση

.

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

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

Τελικά, η CISA συνιστά στους προγραμματιστές λογισμικού να γράφουν νέο κώδικα σε γλώσσες που είναι ασφαλείς για μνήμη, όπως Rust, Java και GO και να μεταφέρουν υπάρχοντα έργα, ειδικά κρίσιμα στοιχεία, σε αυτές τις γλώσσες.

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

VIA:

bleepingcomputer.com








Marizas Dimitris


Marizas Dimitris


https://www.techwar.gr

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

ΑΦΗΣΤΕ ΜΙΑ ΑΠΑΝΤΗΣΗ


Ακύρωση απάντησης



εισάγετε το σχόλιό σας!

παρακαλώ εισάγετε το όνομά σας εδώ