Backdoor στη σουίτα xz-utils

Κάποιες ώρες πριν στάλθηκε mail στη λίστα oss-security που αναφέρει για backdoor στο xz/liblzma project που οδηγεί σε ssh πρόσβαση.

https://www.openwall.com/lists/oss-security/2024/03/29/4

Ένα ζωντανό άρθρο που συγκεντρώνει όλες τις πληροφορίες στο πως κατέληξε να υπάρχει backdoor σε ένα τόσο σημαντικό project:

9 «Μου αρέσει»

Η Archlinux δίνει οδηγίες εδώ

Αμεση μετάβαση σε 5.6.1-2

5 «Μου αρέσει»
3 «Μου αρέσει»

7 «Μου αρέσει»

Πάντως είναι εντυπωσιακό πως αμέσως έγινε χαμός, η είδηση ταξίδεψε άμεσα και άμεσα βγήκαν ενημερώσεις σε όλες τις διανομές… Αν είχε γίνει σε Apple και Microsoft απλά θα είχαμε ένα ήσυχο και όμορφο Σαββατοκύριακο… και ίσως από Δευτέρα Τρίτη… Απρίλιο, Μάιο… και μετά από σκληρή δουλειά ίσως έβγαινε κάποια ενημέρωση…

7 «Μου αρέσει»

Και το έφερε έτσι η τύχη, ο Andres Freund που το ανακάλυψε είναι dev της microsoft.
Life is a bitch.

4 «Μου αρέσει»

Nαι, έχεις δίκιο, η κοινοτητα αντέδρασε άμεσα, και μέχρι σήμερα μαθαίνουμε νέα πραγμάτα για το συγκεκριμένο backdoor, ειδικότερα για το πως δουλευει το payload.
Φαίνεται ότι ο επιτιθέμενος συνδέεται μ’ ένα custom shh public key στον server, που έχει την ευπάθεια, και αυτό είναι αρκετό για να εκτελέσει κώδικα (REC, remote execution code). O συγκεκριμένος προγραμματιστής (πολύ πιστεύουν ότι είναι μια όμαδα ανθρώπων που χρηματοδοτείται από κάποιο κράτος) έχει συνεισφέρει και σ’αλλα προγράμματα ανοιχτού κώδικα. Βέβαια, αυτό δημιουργει πολλά ερωτηματα για το πόσα ακόμη backdoors υπάρχουν και περιμένουν να ανακαλυφθούν.

5 «Μου αρέσει»

Για τις μεγάλες επιχειρήσεις/DC που τρέχουν stable/custom repos, πολύ κακό για το τίποτα.

Αλλά…

και αυτό είναι το ΜΕΓΑΛΟ πρόβλημα! Σίγουρα, αν δεν είναι κάποιος που “παίζει” και απλά έγραψε κάτι και εξαφανίστηκε (το καλό σενάριο), τότε μάλλον είναι ομάδα που δούλευε σιωπηλά 2+ χρόνια στο πρότζεκτ και πέρασε αβλεπί την αλλαγή. Ο ένας και μοναδικός άνθρωπος που έχει την ευθύνη για το όλο πρότζεκτ, βασίστηκε σε κάποιον εθελοντή (που είχε δείξει καλή θέληση) και την πάτησε.

Και νομίζω εκεί πρέπει να ανοίξει μια συζήτηση: Πώς προστατεύουμε το Free/Open Source πλανήτη μας; Γιατί να δουλεύει κάποιος εθελοντικά ενώ γίνεται να πληρώνεται όταν γράφει κώδικα; Μεγάλες εταιρείες, που βγάζουν δις και δεν επιστρέφουν τίποτα στην κοινότητα. Μεγάλα DCs χρησιμοποιούν τα πάντα από FOSS και δεν επιστρέφουν τίποτα. Και έτσι δημιουργούνται ακόμα μεγαλύτερα προβλήματα: κόσμος φεύγει ή σταματάει, projects βγαίνουν outdated ή σταματάει η ανάπτυξή τους. Και το ερώτημα είναι εκεί. Τι κάνουμε;

Μεγάλη κουβέντα…

3 «Μου αρέσει»

Εχθές είδα το ντοκύμαντερ Καλλιεργώντας την Άγνοια στο ertflix και αντιλήφθηκα ότι πολλές φορές ένα γεγονός έχει πολλές προεκτάσεις και ίσως ο στόχος να μην ήταν αποκλείστηκα η πρόσβαση σε υπολογιστές linux αλλά η στοχοποίηση και η σπορά αμφιβολιών για την αξιοπιστία του ελεύθερου λογισμικού, που στην περίπτωσή μας εξαρτάται από ένα άτομο που εύκολα μπορείς να ξεγελάσεις… ευτυχώς όμως μας έσωσε ένας μηχανικός της Microsoft… δεν ξέρω περίεργη ιστορία…

Μερικά διδάγματα από αυτήν την ιστορία

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

  2. Ενισχύθηκε η άποψη μου για το να μη θέλω την τελευταία έκδοση. Οι χρήστες και οι διανομές που επηρεάστηκαν ήταν ακριβώς αυτές που είχαν την τελευταία έκδοση. Γκουχ γκούχ Arch :slight_smile:

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

  4. Μένω έκπληκτος με την τεχνική που χρησιμοποιήθηκε. Συνήθως τα backdoors είναι αρκετά δύσκολο να καταλάβεις πως λειτουργούν ή να το καταλάβεις. Αυτό ήταν διαφορετικό (δηλαδή το κατάλαβε το φτωχό μου μαμουδάκι λολ). Και το να μην υπάρχει ο κώδικας του backdoor μέσα στον κώδικα του github, όπου θα ήταν εύκολο να το δει κάποιος, αλλά μόνο στο tar απλά σατανικό.

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

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

ΥΓ1: Κανένας δεν περίμενε μια βιβλιοθήκη για συμπίεση να επηρεάζει το ssh. Το παράθυρο ήταν κάποιες τροποποιήσεις που έκαναν κάποιες διανομές για καταγραφές μέσα απο το systemd. Αν δεν είχες systemd ή δεν έτρεχες την τελευταία έκδοση δεν είχες τίποτα να ανησυχείς. Καταραμένο systemd :slight_smile: To αστείο της υπόθεσης; Θυμάμαι κάτι καυγάδες για μια επιλογή ενός αλγορίθμου συμπίεσης, ουσιαστικά για τον μόνο λόγο πως είχε αναπτυχθεί απο το facebook.

ΥΓ2: Βέβαια θα πρέπει να είναι κάποιος εντελώς ηλίθιος να φάει 2 χρόνια από τη ζωή του για να χτυπήσει κάποιο άλλο init που χρησιμοποιούν ελάχιστοι :slight_smile:

2 «Μου αρέσει»

Να κοιτάξεις τον βήχα σου :joy:
Arch does not directly link openssh to liblzma, and thus this attack vector is not possible.

3 «Μου αρέσει»

1 «Μου αρέσει»

Η ΜS έχει το Azure από το οποίο αντλεί μερικές 10άδες δις το χρόνο. Το Αzure χρησιμοποιεί linux. Επομένως, δεν ξέρω, δύσκολα η MS να έχει κάποια σχέση με αυτό.

Δεν φταίει το ίδιο το systemd ( o service manager/init), αλλά ο τρόπος που έχει γραφτεί και προωθείται η libsystemd. Τα βασικά του notification protocol μπορούν να υλοποιηθούν χωρίς να χρειάζεται πολύς κώδικας - αυτό φαίνεται από το πως αντικαταστάθηκαν τα patches. To πρόβλημα είναι πως υλοποιήθηκαν στην libsystemd, μαζί με ένα σωρό άσχετες με αυτό λειτουργίες - δείτε την συζήτηση για μείωση των εξαρτήσεων.
Το να υλοποιηθεί σε κάποια lib και να επαναχρησιμοποιείται από όλους δεν είναι αρνητικό. Το αντίθετο… Είναι η ίδια ουσιασικά λογική που κάνει τα tmpfiles.d και sysusers.d χρήσιμα - σαν ιδέα τουλάχιστον.
Το notification protocol τουλάχιστον θα μπορούσε να υλοποιηθεί πιο απλά πάντως - το s6 απλά ζητά να γράψει o daemon κάτι σε κάποιο fd, κάτι που πρακτικά είχε προτείνει και ο RIch Felker της musl:

@m01
Ο Anders Freund είναι PostgreSQL dev που αυτή τη στιγμή εργάζεται στην MS :slight_smile:

2 «Μου αρέσει»