Εντοπίστηκε κακόβουλο πακέτο rustdecimal στο αποθετήριο Rust crates.io

Οι προγραμματιστές της γλώσσας Rust έχουν προειδοποιήσει ότι ένα πακέτο rustdecimal που περιέχει κακόβουλο κώδικα έχει εντοπιστεί στο αποθετήριο crates.io. Το πακέτο βασίστηκε στο νόμιμο πακέτο rust_decimal και διανεμήθηκε χρησιμοποιώντας ομοιότητα στο όνομα (typesquatting) με την προσδοκία ότι ο χρήστης δεν θα παρατηρούσε την απουσία υπογράμμισης κατά την αναζήτηση ή την επιλογή μιας ενότητας από μια λίστα.

Αξίζει να σημειωθεί ότι αυτή η στρατηγική αποδείχθηκε επιτυχημένη και όσον αφορά τον αριθμό των λήψεων, το εικονικό πακέτο ήταν ελαφρώς πίσω από το αρχικό (~111 χιλιάδες λήψεις του rustdecimal 1.23.1 και 113 χιλιάδες του αρχικού rust_decimal 1.23.1) . Ταυτόχρονα, η πλειοψηφία των λήψεων αφορούσε έναν αβλαβή κλώνο που δεν περιείχε κακόβουλο κώδικα. Οι κακόβουλες αλλαγές προστέθηκαν στις 25 Μαρτίου στην έκδοση rustdecimal 1.23.5, η οποία έγινε λήψη περίπου 500 φορές πριν εντοπιστεί το πρόβλημα και αποκλειστεί το πακέτο (υποτίθεται ότι οι περισσότερες λήψεις της κακόβουλης έκδοσης έγιναν από bots) και δεν χρησιμοποιήθηκε ως εξαρτήσεις από άλλα πακέτα που υπάρχουν στο αποθετήριο (είναι πιθανό το κακόβουλο πακέτο να ήταν μια εξάρτηση από τις τελικές εφαρμογές).

Οι κακόβουλες αλλαγές συνίσταντο στην προσθήκη μιας νέας συνάρτησης, Decimal::new, η υλοποίηση της οποίας περιείχε ασαφή κώδικα για λήψη από εξωτερικό διακομιστή και εκκίνηση ενός εκτελέσιμου αρχείου. Κατά την κλήση της συνάρτησης, ελέγχθηκε η μεταβλητή περιβάλλοντος GITLAB_CI και, εάν οριστεί, έγινε λήψη του αρχείου /tmp/git-updater.bin από τον εξωτερικό διακομιστή. Ο κακόβουλος χειριστής με δυνατότητα λήψης υποστήριζε εργασία σε Linux και macOS (η πλατφόρμα των Windows δεν υποστηριζόταν).

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο