Οι προγραμματιστές Rust ωθούν πίσω καθώς το έργο Serde στέλνει προμεταγλωττισμένα δυαδικά αρχεία
Το Serde, ένα δημοφιλές έργο (απο)σειριοποίησης του Rust, αποφάσισε να το στείλει
serde_derive
μακροεντολή ως προμεταγλωτ
τι
σμένο δυαδικό.
Η κίνηση έχει δημιουργήσει μια αρκετή ώθηση μεταξύ των προγραμματιστών που ανησυχούν για τις μελλοντικές νομικές και τεχνικές επιπτώσεις της, μαζί με την πιθανότητα επιθέσεων στην αλυσίδα εφοδιασμού, εάν ο
λογαριασμός
συντηρητή που δημοσιεύει αυτά τα δυαδικά αρχεία παραβιαστεί.
Σύμφωνα με το μητρώο πακέτων Rust, crates.io,
serde
έχει γίνει λήψη
πάνω από 196 εκατομμύρια φορές
κατά τη διάρκεια της ζωής του, ενώ το
serde_derive
Η macro έχει σημειώσει περισσότερες από 171 εκατομμύρια λήψεις, επιβεβαιώνοντας την ευρεία κυκλοφορία του έργου.
Η μακροεντολή Serde γίνεται εκ των προτέρων μεταγλωττισμένη: δεν υπάρχει τρόπος να εξαιρεθείτε
Πριν από περίπου τρεις εβδομάδες, ένας προγραμματιστής της Rust που χρησιμοποιούσε το έργο Serde στην εφαρμογή του παρατήρησε κάτι περίεργο.
«Δουλεύω στη συσκευασία του Serde για το Fedora
Linux
και παρατήρησα ότι οι πρόσφατες εκδόσεις του
serde_derive
στείλτε ένα προμεταγλωττισμένο δυαδικό αρχείο τώρα”
έγραψε
Fabio Valentini, μέλος της Επιτροπής Συσκευασίας Fedora.
“Αυτό είναι προβληματικό για εμάς, καθώς δεν μπορούμε, σε καμία περίπτωση (με πολύ λίγες εξαιρέσεις, για υλικολογισμικό ή κάτι παρόμοιο) να αναδιανείμουμε προμεταγλωττισμένα δυαδικά αρχεία.”
Το Serde είναι ένα ευρέως χρησιμοποιούμενο
ser
ιαλοποίηση και
de
πλαίσιο σειριοποίησης για δομές δεδομένων Rust που,
σύμφωνα με την ιστοσελίδα της
έχει σχεδιαστεί για να διεξάγει αυτές τις λειτουργίες “αποτελεσματικά και γενικά”.
“Το οικοσύστημα Serde αποτελείται από δομές δεδομένων που ξέρουν πώς να σειριοποιούν και να αποσειροποιούν τον εαυτό τους μαζί με μορφές δεδομένων που ξέρουν πώς να σειριοποιούν και να αποσειροποιούν άλλα πράγματα”, αναφέρει ο ιστότοπος του έργου. Ενώ, “
αντλώ
” είναι μια από τις μακροεντολές του.
Ο Valentini ρώτησε περαιτέρω τους συντηρητές του έργου, πώς «πραγματικά παράγονταν» αυτά τα νέα δυαδικά και αν θα ήταν δυνατό γι’ αυτόν να αναδημιουργήσει τα δυαδικά, σε αντίθεση με την κατανάλωση προμεταγλωττισμένων εκδόσεων.
Ο David Tolnay, ο οποίος είναι ο κύριος συντηρητής του Serde,
αποκρίθηκε
με πιθανές λύσεις εκείνη τη στιγμή. Αλλά, αυτό δεν σημαίνει ότι όλοι είναι ευχαριστημένοι.
Μετά από μια εισροή σχολίων από προγραμματιστές σχετικά με το γιατί η απόφαση δεν ήταν η καταλληλότερη για το έργο, ο Tolnay
αναγνώρισε την ανατροφοδότηση
πριν κλείσετε το ζήτημα του
GitHub
.
Η αιτιολόγησή του για την αποστολή προμεταγλωττισμένων δυαδικών αρχείων αναπαράγεται ολόκληρη παρακάτω.
“Η προμεταγλωττισμένη υλοποίηση είναι ο μόνος υποστηριζόμενος τρόπος χρήσης των μακροεντολών που δημοσιεύονται
serde_derive
.
Εάν απαιτείται εργασία υλοποίησης σε ορισμένα εργαλεία κατασκευής για να το προσαρμόσετε, κάποιος θα πρέπει να αισθάνεται ελεύθερος να κάνει αυτή τη δουλειά (όπως έκανα για τους Buck και Bazel, τα οποία είναι εργαλεία που χρησιμοποιώ και συμβάλλω σημαντικά) ή να δημοσιεύσει το δικό σας πιρούνι της πηγής κωδικός με διαφορετικό όνομα.
Ξεχωριστά, όσον αφορά το παραπάνω σχόλιο σχετικά με την ασφάλεια, ο καλύτερος δρόμος προς τα εμπρός θα ήταν για ένα από τα άτομα που ενδιαφέρονται για αυτό να επενδύσει σε ένα Cargo ή crates.io RFC γύρω από προμεταγλωττισμένες μακροεντολές πρώτης κατηγορίας, ώστε να υπάρχει μια προσέγγιση που θα ταιριάζει σε εσάς. προτιμήσεις?
serde_derive
θα το υιοθετούσε όταν ήταν διαθέσιμο».
Η BleepingComputer προσέγγισε τον Tolnay με πρόσθετες ερωτήσεις πριν από τη δημοσίευση.
“Πρώτα το Moq του .NET και τώρα αυτό.”
Ορισμένοι προγραμματιστές Rust ζητούν να διατηρηθούν τα προμεταγλωττισμένα δυαδικά αρχεία
προαιρετικός
και χωριστά από το αρχικό κιβώτιο “serde_derive”, ενώ άλλοι έχουν παρομοιάσει την κίνηση στην αμφιλεγόμενη αλλαγή κώδικα με το έργο Moq .NET που πυροδότησε αντιδράσεις.
“Σκεφτείτε το ενδεχόμενο να μετακινήσετε την προμεταγλωττισμένη έκδοση serde_derive σε διαφορετικό κλουβί και την προεπιλεγμένη serde_derive στη δημιουργία από την πηγή, έτσι ώστε οι χρήστες που θέλουν το πλεονέκτημα του προμεταγλωττισμένου δυαδικού να μπορούν να επιλέξουν να το χρησιμοποιήσουν.”
ζητείται
ένας χρήστης.
“Ή αντίστροφα. Ή οποιαδήποτε άλλη λύση που επιτρέπει τη δημιουργία από πηγή χωρίς να χρειάζεται να επιδιορθώσετε το serde_derive.”
“Η αποστολή ενός δυαδικού αρχείου ως μέρος του κιβωτίου, ενώ κατανοώ τα πλεονεκτήματα της ταχύτητας του χρόνου κατασκευής, για λόγους ασφαλείας
δεν είναι
βιώσιμη λύση για ορισμένους χρήστες της βιβλιοθήκης.”
Χρήστες
επεσήμανε
πώς η αλλαγή θα μπορούσε να επηρεάσει οντότητες που “νομικά δεν επιτρέπεται να αναδιανέμουν προμεταγλωττισμένα δυαδικά αρχεία, με τις δικές τους άδειες”, αναφέροντας συγκεκριμένα περιβάλλοντα που ρυθμίζονται από την κυβέρνηση.
«…Πρώτα το Moq του .NET και τώρα αυτό», είπε ο Jordan Singh, ένας προγραμματιστής με έδρα την Αυστραλία, σε ένα
σχόλιο
που αργότερα αφαιρέθηκε.
“Αν αυτό είναι για να αναγκάσει τους προγραμματιστές φορτίου να υποστηρίξουν ένα χαρακτηριστικό, τότε είναι τρομερός τρόπος να το κάνουμε. Τουλάχιστον δώστε μας αναπαραγώγιμα δυαδικά αρχεία. Έχω βαρεθεί τους προγραμματιστές δημοφιλών κιβωτίων/βιβλιοθηκών να κρατούν τους πάντες ομήρους με παράλογες αποφάσεις.”
Donald Stufft με έδρα τη Φιλαδέλφεια
προειδοποίησε κατά
οι κίνδυνοι να μπείτε στην επιχείρηση «αποστολής δυαδικών» στα μέσα κοινωνικής δικτύωσης:

Ο προγραμματιστής προειδοποιεί κατά της επιχείρησης “δυαδικών αρχείων αποστολής”.
Ο προγραμματιστής του Rust Nathan West, που περνάει
Lucretiel
ΕΙΔΙΚΑ
τονίζεται
οι κίνδυνοι της εφοδιαστικής αλυσίδας που προκύπτουν από τα προμεταγλωττισμένα δυαδικά αρχεία, εάν ο λογαριασμός συντηρητή διακυβευτεί:

Κίνδυνοι της εφοδιαστικής αλυσίδας που σχετίζονται με την αποστολή προμεταγλωττισμένων δυαδικών αρχείων
“Δεν είναι ακριβώς αυτός ο τρόπος με τον οποίο θα το έκαναν; Στείλτε το σιωπηλά ως μια ημι-εύλογη αλλαγή στο πώς
serde
έργα, αγνοήστε αδιάλλακτη κάθε κριτική για την απόφαση», έγραψε ο Γουέστ.
“Αυτός είναι *ακριβώς* ο λόγος που όλοι έχουν μια τέτοια αντανακλαστική αντίθεση σε κινήσεις σαν αυτή.”
«Η εμπιστοσύνη στο διαδίκτυο δεν είναι τέλεια· *δεν* ξέρουμε ότι αυτό είναι πραγματικά [the maintainer] ανάρτηση στο GitHub. Γι’ αυτό έχουμε στρώματα και πληρεξούσιους άμυνας. το πρόχειρο sh*t απορρίπτεται γιατί δεν αξίζει το ρίσκο.
Ο τεχνολόγος Sanket Kanjalkar κάλεσε τη μετάβαση σε δυαδικά πλοία χωρίς τρόπο εξαίρεσης “
ένα βήμα πίσω
.”
Αλλά, ένας επαγγελματίας ασφαλείας που πηγαίνει από Lander, έχει
μια ελαφρώς διαφορετική λήψη
:
«Αυτό το δράμα του Rust για
serde_derive
Η αποστολή ενός προμεταγλωττισμένου δυαδικού αρχείου είναι κάπως αστεία», γράφει ο Lander.
“Από τη μια, καταλαβαίνω την ανησυχία των ανθρώπων. Από την άλλη, ποιος νοιάζεται; κανείς δεν διαβάζει proc macro
code/build.rs
κώδικας για κάθε έργο που κάνουν ούτως ή άλλως. Μια εξαίρεση θα ήταν καλή ιδέα όμως».
Είτε συμφωνείτε με την απόφαση του έργου να εξυπηρετήσει τις μακροεντολές του προμεταγλωττισμένες είτε όχι, είναι καλή πρακτική να ελέγχετε τακτικά οποιονδήποτε πηγαίο κώδικα και δυαδικά αρχεία λογισμικού πριν τα ενσωματώσετε στα έργα σας.
Χάρη σε
Μάικλ Κερνς
για την άκρη.
