Το απόσπασμα κώδικα Java που χρησιμοποιείται πιο συχνά στο Stack Overflow περιέχει σφάλμα

Java

Μια μελέτη που δημοσιεύθηκε στο Οκτώβριος 2018 στο περιοδικό Empirical Engineering Engineering από τους ακαδημαϊκούς Sebastian Baltes και Stephan Diehl αποκάλυψε ότι παρέχεται ένα απόσπασμα κώδικα απάντηση σε μια ερώτηση από Stack Overflow τον Σεπτέμβριο του 2010 από τον Andreas Lundblad, Προγραμματιστής Java στο Palantir, είναι το πιο διαδεδομένο απόσπασμα κώδικα Java στην πλατφόρμα κοινότητας.

Ωστόσο, σε μια ανάρτηση την περασμένη εβδομάδα, Ο Lundblad εξήγησε ότι ο κωδικός ήταν ελαττωματικός και ότι μετέτρεψε εσφαλμένα τον αριθμό των byte σε μορφές αναγνώσιμες από τον άνθρωπο. Ο εν λόγω κωδικός έχει συγκεντρώσει περισσότερες από χίλιες προτάσεις και έχει επίσης συμπεριληφθεί σε πολλά έργα και βρίσκεται σε αποθετήρια στο GitHub περίπου 7 χιλιάδες φορές.

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

Ο κωδικός που θεωρείται μετατρέπεται το μέγεθος byte σε αναγνώσιμη μορφή, για παράδειγμα 110592 μετατράπηκε σε "110.6 kB" ή "108.0 KiB". Ο κώδικας προτάθηκε ως παραλλαγή των προηγουμένως προτεινόμενων συμβουλών, βελτιστοποιημένος χρησιμοποιώντας λογάριθμους, στον οποίο η τιμή καθορίστηκε διαιρώντας την αρχική τιμή σε έναν βρόχο10 18, 10 15, 10 12, 10 19, 10 6, 10 3 και 10 0 ″ , ακόμη και όταν ο διαιρέτης είναι μεγαλύτερος από την αρχική τιμή σε byte.

Λόγω ανακριβών υπολογισμών στη βελτιστοποιημένη έκδοση (υπερχείλιση μεγάλης αξίας), το αποτέλεσμα της επεξεργασίας πολύ μεγάλων αριθμών (exabytes) δεν αντιστοιχούσαν στην πραγματικότητα.

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

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

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

«Σε συνεργατικές συνεδρίες με πολλαπλούς ανθρώπινους κωδικοποιητές, αξιολογήσαμε με μη αυτόματο τρόπο κάθε κομμάτι κώδικα για ευπάθειες ασφαλείας σύμφωνα με τις οδηγίες του CWE (Common Weakness Enumeration).

Από τα 72,483 σαρωμένα αποσπάσματα κώδικα που χρησιμοποιήθηκαν σε τουλάχιστον ένα έργο που φιλοξενήθηκε από το GitHub, βρήκαμε συνολικά 69 ευπαθή αποσπάσματα κώδικα ταξινομημένα σε 29 τύπους. Πολλά από τα αποσπάσματα κώδικα που μελετήθηκαν δεν έχουν ακόμη καθοριστεί ", ανέφεραν οι ερευνητές στην έκθεσή τους.

Τα 69 ευπαθή αποσπάσματα κώδικα βρέθηκε στο Stack Overflow επαναχρησιμοποιήθηκε σε συνολικά 2859 έργα GitHub. Για να βελτιώσουν την ποιότητα των κοινόχρηστων αποσπασμάτων κώδικα στο Stack Overflow, έχουν αναπτύξει μια επέκταση προγράμματος περιήγησης που επιτρέπει στους χρήστες του Stack Overflow να αναζητούν ευπάθειες στα αποσπάσματα όταν τα κατεβάζουν στην πλατφόρμα.

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

Ashkan Sami, Αναπληρωτής Καθηγητής Πληροφορικής, μηχανική και τεχνολογία πληροφοριών στο Πανεπιστήμιο Shiraz στο Ιράν, είπε ότι

«Η έρευνα ήταν μια προσπάθεια να εξεταστεί πώς μετεγκαθίσταται ελαττωματικός κώδικας από Stack Overflow στο GitHub. Βασικά αυτό που προσπαθούμε να δείξουμε είναι ότι η χρήση του κώδικα Stack Overflow χωρίς να τον κοιτάμε προσεκτικά μπορεί να οδηγήσει σε ευπάθειες εφαρμογών », δήλωσε ο Sami. Η μελέτη αναφέρεται επίσης σε ακαδημαϊκό άρθρο από το 2017.

Σύμφωνα με αυτό το άρθρο, 1161 ανασφαλή αποσπάσματα κώδικα που δημοσιεύτηκαν στο Stack Overflow χρησιμοποιήθηκαν σε 1.3 εκατομμύρια εφαρμογές Android διαθέσιμες στο Google Play.

Εκτός από μια προηγούμενη μελέτη, το 46% των προγραμματιστών που χρησιμοποίησαν τον κώδικα StackOverflow χωρίς να διευκρινίσει τον συγγραφέα, το 75% δεν γνώριζε ότι ο κώδικας έχει άδεια χρήσης από το CC BY-SA και το 67% δεν γνώριζε ότι αυτό συνεπάγεται την ανάγκη απόδοσης.

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

Για παράδειγμα, μετά την ανάλυση 72483 δειγμάτων κώδικα C ++ στο StackOverflow, οι ερευνητές εντόπισαν σοβαρές ευπάθειες σε 69 δείγματα (που είναι 0.09%), που περιλαμβάνονται στη λίστα των πιο δημοφιλών συστάσεων.

πηγή: https://programming.guide


Αφήστε το σχόλιό σας

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

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.