Ορισμένοι προγραμματιστές παραβιάζουν το λογισμικό ανοιχτού κώδικα

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

Getty Images

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

Για παράδειγμα, ο συντηρητής διαχείρισης πακέτων της JavaScript, RIAEvangelist, Brandon Nozaki Miller, έγραψε και δημοσίευσε ένα πακέτο πηγαίου κώδικα npm με ανοιχτό κώδικα που ονομάζεται peacenotwar. Έκανε λίγα αλλά τύπωσε ένα μήνυμα για ειρήνη στους επιτραπέζιους υπολογιστές. Μέχρι στιγμής, τόσο ακίνδυνο. 

Στη συνέχεια, ο Miller εισήγαγε κακόβουλο κώδικα στο πακέτο για να αντικαταστήσει τα συστήματα αρχείων των χρηστών εάν ο υπολογιστής τους είχε διεύθυνση IP Ρωσίας ή Λευκορωσίας. Στη συνέχεια το πρόσθεσε ως εξάρτηση στο λαϊκό του κόμβος-ipc πρόγραμμα και στιγμιαίο χάος! Πολλοί διακομιστές και υπολογιστές κατέρρευσαν καθώς ενημερώθηκαν στον πιο πρόσφατο κώδικα και στη συνέχεια διαγράφηκαν οι μονάδες δίσκου των συστημάτων τους. 

Η υπεράσπιση του Μίλερ, "Όλα αυτά είναι δημόσια, τεκμηριωμένα, αδειοδοτημένα και ανοιχτού κώδικα», δεν αντέχει. 

Liran Tal, η Σνυκ ερευνητής που αποκάλυψε το πρόβλημα είπε: «Ακόμα κι αν η εσκεμμένη και επικίνδυνη πράξη [εκλαμβάνεται] από ορισμένους ως νόμιμη πράξη διαμαρτυρίας, πώς αντανακλά αυτό στη μελλοντική φήμη του συντηρητή και μερίδιο στην κοινότητα προγραμματιστών; Θα είχε ποτέ ξανά εμπιστοσύνη σε αυτόν τον συντηρητή ότι δεν θα δώσει συνέχεια σε μελλοντικές ενέργειες σε τέτοιες ή ακόμη πιο επιθετικές ενέργειες για οποιαδήποτε έργα στα οποία συμμετέχει;» 

Ο Μίλερ δεν είναι τυχαίος μανιβέλα. Έχει δημιουργήσει πολύ καλό κώδικα, όπως node-ipc, και Διακομιστής HTTP κόμβου. Αλλά, μπορείτε να εμπιστευτείτε οποιονδήποτε από τον κώδικά του ότι δεν είναι κακόβουλος; Ενώ το περιγράφει ως «όχι κακόβουλο λογισμικό, [αλλά] λογισμικό proteste το οποίο είναι πλήρως τεκμηριωμένο», άλλοι διαφωνούν έντονα. 

Όπως έγραψε ένας προγραμματιστής του GitHub, «Αυτό που θα συμβεί με αυτό είναι ότι οι ομάδες ασφαλείας σε δυτικές εταιρείες που δεν έχουν καμία απολύτως σχέση με τη Ρωσία ή την πολιτική θα αρχίσουν να βλέπουν ελεύθερο λογισμικό ανοιχτού κώδικα ως λεωφόρος για επιθέσεις στην αλυσίδα εφοδιασμού (το οποίο είναι εντελώς) και απλά αρχίστε να απαγορεύετε το δωρεάν λογισμικό ανοιχτού κώδικα - όλα τα δωρεάν και ανοιχτού κώδικα - στις εταιρείες τους." 

Όπως έγραψε ένας άλλος προγραμματιστής του GitHub με τη λαβή nm17, «Το παράγοντα εμπιστοσύνης ανοιχτού κώδικα, το οποίο βασιζόταν στην καλή θέληση των προγραμματιστών έχει πλέον πρακτικά εξαφανιστεί, και τώρα, όλο και περισσότεροι άνθρωποι συνειδητοποιούν ότι μια μέρα, η βιβλιοθήκη/η εφαρμογή τους μπορεί ενδεχομένως να εκμεταλλευτεί για να κάνει/πεί ό,τι πίστευε κάποιος τυχαίος προγραμματιστής στο διαδίκτυο. ήταν το σωστό που έκαναν».

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

Η καρδιά του Μίλερ μπορεί να βρίσκεται στο σωστό μέρος — Slava Ukraini! — αλλά είναι λογισμικό ανοιχτού κώδικα που έχει μολυνθεί με κακόβουλο ωφέλιμο φορτίο ο σωστός τρόπος για την προστασία της εισβολής της Ρωσίας στην Ουκρανία; Οχι δεν είναι. 

Η μέθοδος ανοιχτού κώδικα λειτουργεί μόνο επειδή εμπιστευόμαστε ο ένας τον άλλον. Όταν αυτή η εμπιστοσύνη σπάσει, ανεξάρτητα από ποια αιτία, τότε το θεμελιώδες πλαίσιο του ανοιχτού κώδικα σπάει. Όπως είπε ο Greg Kroah-Hartman, ο συντηρητής του πυρήνα Linux για το σταθερό κλάδο, όταν φοιτητές από το Πανεπιστήμιο της Μινεσότα προσπάθησαν σκόπιμα να εισαγάγουν κακό κώδικα στον πυρήνα του Linux για ένα πείραμα το 2021, είπε, «Αυτό που κάνουν είναι σκόπιμη κακόβουλη συμπεριφορά και δεν είναι αποδεκτό και εντελώς ανήθικο».

Οι άνθρωποι έχουν από καιρό υποστηρίξει ότι ο ανοιχτός κώδικας πρέπει να περιλαμβάνει και ηθικές διατάξεις. Για παράδειγμα, του 2009 Εξαίρεση Γενική Δημόσια Άδεια (eGPL), μια αναθεώρηση του GPLv2, προσπάθησε να απαγορεύσει σε «εξαιρέσεις», όπως στρατιωτικούς χρήστες και προμηθευτές, να χρησιμοποιούν τον κώδικά του. Απέτυχε. Άλλες άδειες όπως η Άδεια JSON με την γλυκά αφελή ρήτρα «το λογισμικό θα χρησιμοποιείται για καλό, όχι για κακό» να υπάρχει ακόμα, αλλά κανείς δεν την επιβάλλει.  

Πιο πρόσφατα, η ακτιβίστρια και προγραμματίστρια λογισμικού Coraline Ada Ehmke παρουσίασε μια άδεια ανοιχτού κώδικα που απαιτεί από τους χρήστες της να ενεργούν ηθικά. Συγκεκριμένα, αυτή Ιπποκρατική άδεια προστέθηκε στο Άδεια ανοιχτού κώδικα MIT ρήτρα που αναφέρει: 

«Το λογισμικό δεν επιτρέπεται να χρησιμοποιηθεί από άτομα, εταιρείες, κυβερνήσεις ή άλλες ομάδες για συστήματα ή δραστηριότητες που ενεργά και εν γνώσει τους θέτουν σε κίνδυνο, βλάπτουν ή με άλλο τρόπο απειλούν τη σωματική, ψυχική, οικονομική ή γενική ευημερία μη προνομιούχων ατόμων ή ομάδων σε παραβίαση της Οικουμενικής Διακήρυξης των Ανθρωπίνων Δικαιωμάτων των Ηνωμένων Εθνών».

Ακούγεται καλό, αλλά δεν είναι ανοιχτού κώδικα. Βλέπετε, το ανοιχτό κώδικα είναι από μόνο του μια ηθική θέση. Η ηθική του περιέχεται στο Ίδρυμα Ελεύθερου Λογισμικού (FSF)'μικρό Τέσσερις βασικές ελευθερίες. Αυτό είναι το θεμέλιο για όλες τις άδειες ανοιχτού κώδικα και τη βασική τους φιλοσοφία. Όπως είπε τότε ο νομικός ειδικός ανοιχτού κώδικα και καθηγητής νομικής της Κολούμπια, Eben Moglen, ότι οι ηθικές άδειες δεν μπορούν να είναι ελεύθερο λογισμικό ή άδειες ανοιχτού κώδικα: 

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

Με άλλα λόγια, εάν δεν μπορείτε να μοιραστείτε τον κώδικά σας για οποιονδήποτε λόγο, ο κώδικάς σας δεν είναι πραγματικά ανοιχτού κώδικα. 

Ένα άλλο πιο ρεαλιστικό επιχείρημα σχετικά με την απαγόρευση σε μια ομάδα να χρησιμοποιεί λογισμικό ανοιχτού κώδικα είναι ότι ο αποκλεισμός σε κάτι όπως μια διεύθυνση IP είναι μια πολύ ευρεία βούρτσα. Ως Florian Roth, εταιρεία ασφαλείας Nextron SystemsΕπικεφαλής Έρευνας, ο οποίος θεώρησεαπενεργοποίηση των δωρεάν εργαλείων μου σε συστήματα με συγκεκριμένες ρυθμίσεις γλώσσας και ζώνης ώρας», αποφάσισε τελικά να μην το κάνει. Γιατί; Διότι κάνοντας αυτό, "θα απενεργοποιούσαμε επίσης τα εργαλεία σε συστήματα κριτικών και ελεύθερων στοχαστών που καταδικάζουν τις ενέργειες των κυβερνήσεών τους». 

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

Νωρίτερα φέτος, ο προγραμματιστής JavaScript Marak Squires σαμποτάρει σκόπιμα τις σκοτεινές, αλλά ζωτικής σημασίας βιβλιοθήκες Javascript ανοιχτού κώδικα «colors.js» και «faker.js». Το αποτέλεσμα? Δεκάδες χιλιάδες προγράμματα JavaScript ανατινάχθηκαν.

Γιατί; Δεν είναι ακόμα απολύτως σαφές, αλλά σε μια ανάρτηση που διαγράφηκε έκτοτε στο GitHub, ο Squires έγραψε: «Με εκτίμηση, Δεν πρόκειται πλέον να υποστηρίξω το Fortune 500s (και άλλες εταιρείες μικρότερου μεγέθους) με τη δωρεάν δουλειά μου. Δεν υπάρχουν πολλά άλλα να πούμε. Εκμεταλλεύσου αυτό ως ευκαιρία για να μου στείλεις ένα εξαψήφιο ετήσιο συμβόλαιο ή να ολοκληρώσω το έργο και να βάλεις κάποιον άλλο να εργαστεί σε αυτό». Όπως μπορείτε να φανταστείτε, αυτή η απόπειρα να εκβιάσει τον τρόπο με τον οποίο έχει μισθό δεν του βγήκε τόσο καλά. 

Και, στη συνέχεια, υπάρχουν άνθρωποι που βάζουν σκόπιμα κακόβουλο λογισμικό στον ανοιχτό κώδικα τους για διασκέδαση και κέρδος. Για παράδειγμα, η εταιρεία ασφαλείας DevOps JFrog ανακάλυψε 17 νέα κακόβουλα πακέτα JavaScript στο αποθετήριο NPM που επιτίθενται σκόπιμα και κλέβουν τα διακριτικά Discord ενός χρήστη. Αυτά μπορούν στη συνέχεια να χρησιμοποιηθούν στο Discord πλατφόρμα επικοινωνίας και ψηφιακής διανομής.

Εκτός από τη δημιουργία νέων κακόβουλων προγραμμάτων ανοιχτού κώδικα που φαίνονται αθώα και χρήσιμα, άλλοι επιτιθέμενοι παίρνουν παλιό, εγκαταλελειμμένο λογισμικό και το ξαναγράφουν ώστε να συμπεριλάβουν κερκόπορτες κλοπής κρυπτονομισμάτων. Ένα τέτοιο πρόγραμμα ήταν το event-stream. Είχε εισαγάγει κακόβουλο κώδικα σε αυτό για να κλέψει πορτοφόλια bitcoin και να μεταφέρει τα υπόλοιπά τους σε έναν διακομιστή της Κουάλα Λουμπούρ. Υπήρξαν αρκετά παρόμοια επεισόδια όλα αυτά τα χρόνια.

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

Τι μπορούμε να κάνουμε για αυτό; Λοιπόν, για ένα πράγμα, θα πρέπει να εξετάσουμε πολύ προσεκτικά πότε, αν ποτέ, θα πρέπει να εμποδίσουμε τη χρήση κώδικα ανοιχτού κώδικα. 

Πιο πρακτικά, πρέπει να αρχίσουμε να υιοθετούμε τη χρήση του του Linux Foundation Ανταλλαγή δεδομένων πακέτου λογισμικού (SPDX) και Λογισμικό Λογισμικού Υλικών (SBOM). Μαζί αυτά θα μας πουν ακριβώς τι κώδικα χρησιμοποιούμε στα προγράμματά μας και από πού προέρχεται. Τότε, θα είμαστε πολύ περισσότερο σε θέση να λαμβάνουμε τεκμηριωμένες αποφάσεις.

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

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

Σχετικές ιστορίες:



Πηγή