Για την ασφάλεια των Flatpak/Snap

Βλέπω γενικά υπάρχει μια αντιπάθεια στα snap/flatpak/appimage στην κοινότητα των hard core χρηστών την οποία ακόμα δεν μπορώ να καταλάβω από που πηγάζει.

Ίσως επειδή πάντα τα έβλεπα «τεχνικά-τεχνολογικά» τα ζητήματα και όχι φιλοσοφικά/κοινωνικά/πολιτικά.

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

Ίσως, σε αυτήν την κοινότητα να υπάρχει η αντίληψη : “αν δεν είναι χαλασμένο, μην το φτιάχνεις…”

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

Στην τεχνολογία του λογισμικού το «αφού δουλεύει/ δεν είναι χαλασμένο - μην αλλάζεις» είναι σα τα λογισμικά του ΤΡΕΝΟΣΕ που μέχρι το 2010 ήταν σε DOS περιβάλλον :)

Πέρα από την πλάκα, όσοι έχουν ασχοληθεί με packaging θα σου πουν ότι υπάρχουν 3 τρόποι να διαθέσεις το λογισμικο σου πακεταρισμενο

    1. φτιάχνεις μονος σου ένα πακέτο (Deb, rpm, pkg, src κλπ) και το διαθέτεις από την ιστοσελίδα σου. Εδώ έχουμε τον κλασσικο τρόπο διάθεσης που είχαμε μάθει στο Windows. Θα πρέπει ο χρήστης να εμπιστευτεί σχεδόν τυφλά (σιγά μην κάτσει να ελέγξει) ότι το πακέτο δεν περιλαμβάνει κακόβουλο σκριπτ διότι το πακέτο για να εγκατασταθεί χρειάζεται root δικαιώματα.
    1. Ο αλλος τρόπος είναι να εκμεταλλευτείς κάποιες υποδομές «User repositories» όπως τα AUR, PPA και να δια εμείς έτσι το λογισμικο σου. Αρκετά πιο ασφαλές από τον (1) τρόπο μιας και ξέρεις από ποιον είναι, έχει ψηφιακή υπογραφή, αλλά πάλι κανένας δεν ελέγχει ότι δεν θα του στρίψει του dev και δεν θα χώσει κανα ζουζουνι. Επίσης είναι και το γεγονός ότι αρκετά από αυτά τα PPA/AUR τα παρατάνε η και προσθέτουν βιβλιοθήκες που μπορεί να αναβαθμίζουν συστατικά του λειτουργικού.
  1. Ο ποιο αξιόπιστος είναι να μπει στα επίσημα αποθετηρια της διανομής. Για να γίνει αυτό όμως θα περάσεις από 100 κύματα… και μέχρι να μπει το λογισμικο σου, θα είναι κάποια παλιά έκδοση γιατί δεν υπάρχει περίπτωση να βάλλουν την τελευταία έκδοση που έχεις βγάλει. Εκτός και αν είσαι η AMD, Google, Mozilla κλπ.

Όλα τα παραπάνω λοιπόν οδήγησαν στην ανάγκη του dev να διαμοιράζει λογισμικο σύντομα, σε συνεχή μορφή, σε απομόνωση από το υπόλοιπο λειτουργικό (να μην επηρεάζει το λειτουργικό αλλά ούτε να επηρεάζεται αν έχεις Ubuntu, Fedora, Arch κλπ)

Και έτσι … εγενετο το CI/CD των packaging (flatpak, snap, appimage)

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

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

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

Με την ίδια ακριβώς λογική κανένας δεν μπορεί να σου εξασφαλίσει ότι κάποιο πακέτο σε deb ή rpm δεν είναι κακόβουλο.

Έχουμε τώρα τα App Stores. Οι μεγάλες εταιρίες πχ Google και Apple εχουν αρκετές προδιαγραφές και απαιτήσεις (κάποιες φορές λογικές κάποιες φορές πάλι όχι) για να μπει κάποια εφαρμογή στο Store. Η δε Apple πουλάει την κλειστότητα για ασφάλεια και έχει ένα δίκιο.

Στον κόσμο του Linux το μόνο κλειστό μαγαζί είναι αυτό των Snap. Προσωπικά είμαι ενάντια στα snaps για μη τεχνικούς λόγους, αλλά ακριβώς για αυτό τον λόγο. Επειδή το μαγαζί είναι κλειστό και δεν μπορώ να ανοίξω (εγώ ή κάποιο άλλος το δικό μου). Το linux-user θεωρητικά αν ήθελε (πρακτικά δεν θέλει) θα έφτιαχνε το δικό του μαγαζί με Flatpak και εκεί θα έπρεπε να μας είχες δώσει εν λευκώ την εμπιστοσύνη σου για να κατεβάσεις κάτι απο εκεί.

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

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

Ακριβώς αυτό το δίκτυο εμπιστοσύνης θίγει ο Cerebrux στο προηγούμενο post, που υπάρχει για χρόνια (deb, rpm, source κτλπ). Το ίδιο κακό μπορεί να γίνει και από μία κεντρική αρχή, βλέπε Canonical, αλλά και από έναν μεμονωμένο developer στο προσωπικό του github, τα νέα packaging format δεν αποφεύγουν αυτόν τον κανόνα.

Φυσικά & μπορεί να γίνει όπως αν δεν κάνω λάθος είχε γίνει κάποια στιγμή στο snap store, αλλά επειδή όπως είπε ο @Asfodelus το συγκεκριμένο δουλεύει στα πρότυπα των Google Play store αφαιρούνται.

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

Τα νεότερα συστήματα πακεταρισματος είναι εκ φύσεως :

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

Όλα αυτά κάνουν τα flatpak/snap/appimage καλύτερα από τα παραδοσιακά συστήματα διανομής λογισμικού.

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

Βασικά όχι. Μια Canonical αν το κάνει έχει μεγάλες επιπτώσεις. αν όμως το κάνω εγώ, ή ο Χοσέ από την Βραζιλία δεν έχουμε καμιά προσωπική επίπτωση (εκτός αν μας βρεις και μας κάνεις μήνυση). Θα μπορούσες να κατεβάσεις κάτι από εμένα να μου έχεις εμπιστοσύνη, αλλά να έχει χακάρει κάποιος τον υπολογιστή μου και να έχει κάνει κάτι σαν αυτό [*].

Τέλος (μόλις είδα το παρέθεσε και ο @cerebrux) ξεχνάς το θέμα της απομόνωσης που παρέχουν κάποια από τα νέα φορματς. Και μάλιστα τα snaps, μάλλον έχουν καλύτερα χαρακτηριστικά ασφαλείας κατά τον Pottering Πηγή.

[*] Αυτό το σενάριο αντιμετωπίζετε μόνο με reproducible builds.

Διαβάστε το paper του Ken Thomson εδώ :

Οι επιπτώσεις σε εσένα, σαν χρήστη του λογισμικού, είναι το ίδιο, από όποια αρχή και αν γίνουν. Δεν ξεχνάω τίποτα, ξεχνάς το crypto mining από παιχνίδι στο official ubuntu snap store.

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

Βασικά όχι δεν το ξεχνάω, για τον απλούστατο λόγο ότι δεν το έμαθα ποτέ :grinning:. Δεν το αμφισβητώ, αλλά έχεις κάποια πηγή να δω τι έγινε; Όπως είπα δεν κατέχω τα του snap.

Τώρα μεμονωμένα περιστατικά πάντα μπορεί να υπάρξουν σε κάθε μαγαζί. Μπορώ να σου πω αντίστοιχα περιστατικά σε άλλα μαγαζιά (ακόμα και σε Debian) . To θέμα είναι πόσο σύντομα υπάρχει δράση μετά την ανακάλυψη, πόσο γρήγορα εντοπίζονται, καθώς και το πλήθος τους.

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

https://www.bleepingcomputer.com/news/linux/malicious-package-found-on-the-ubuntu-snap-store/

Ανέφερες ένα μεμονωμένο περιστατικό που έγινε πριν τέσσερα (4) χρόνια. Εντοπίστηκε, αναφέρθηκε και

All Snaps of that author were removed from the store.

Τι συμπέρασμα μπορούμε να βγάλουμε από αυτό;

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

Προσωπικά επιλέγω την Ελευθερία έναντι της ασφάλειας, σχεδόν σε κάθε περίπτωση.

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

Ότι έγινε.
Talo, βεβαίως και υπάρχουν πλεονεκτήματα στα νέα packaging formats αλλά υπάρχουν και αντίστοιχοι λόγοι που κάποιος θέλει να παραμένει παραδοσιακός, και αυτή η ποικιλομορφία αποτελεί στοιχείο ελεύθερης κοινωνίας. Τα “δεν μπορώ να καταλάβω…”, δεν μπορώ εγώ προσωπικά…

Καλό :)
Το έθεσα καθαρά στο τεχνικό του ζήτημα και όταν πάρω μια απάντηση τεχνικής φύσης από κάποιον που λέει «δεν Μαρεσει το snap/flatpak κλπ» θα παραμείνω με την απορία.

Παντως καθε φορμα που αυξανει την ευκολια χρησης διατηρωντας την ασφαλεια καλο ειναι να υπαρχει. Τα λογισμικα παντα ηθελαν να εχουν εναν μπαμπουλα με μια σφραγιδα απο πανω οπως και οι χρηστες στο μεγαλυτερο κομματι τους θελαν αυτη τη σφραγιδα. Απο το πιστοποιημενο λογισμικο σε dos κτλ σε παιχνιδιμηχανες μεχρι τα store και τα snap flatpak κτλ.

Το linux παντως σαν ασφαλεια τα τοσα χρονια που το χρησιμοποιω , αποκεντρωμενο δεν το λες. Αποθετηρια πιστοποιημενα κτλ. Και για να τρεξουν ανεξαρτητες εφαρμογες πολυ δουλεια.

Το αντιθετο απο τα windows που κατεβαζες οτι ηθελες ετρεχες το exe και οτι γινοταν.

Αν εξαιρεσουμε την ασφαλεια γιατι οσο μεγαλυτερο γινεται ενα φορμα τοσο δυσκολοτερο ειναι να βρεθει το κακοβουλο , η ευκολια χρησης σε μια περιοδο που οι νεοι χρηστες μαθαινουν για τα παντα με ενα κλικ ειναι απαραιτητη. Στο κατω κατω υπαρχει και το gentoo για τους σκληροπυρινικους (χαχαχ παντα το λεω αυτο με το gentoo γιατι ειναι το μονο που αν μου πεις βαλε λιγο να το δουμε θελω καμια βδομαδα)

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

Αν δεν κάνω λάθος οι snap εγκαταστάσεις έχουν πιο πρόσφατες εκδόσεις των εφαρμογών, σε σχέση με την εγκατάσταση με τον διαχειριστή πακέτων της κάθε διανομής.
Βέβαια βλέπω ότι πολλά software centers προκρίνουν τη χρήση των flatpak.
Είναι τα flatpak πιο ασφαλή ή πιο λειτουργικά από τα appimages;
Γιατί έχουν μεγαλύτερο χρόνο εγκατάστασης;

Τα snaps θα τα βρελις μόνο σε Ubuntu και σε διανομές βασισμένες σε αυτό. Αλλά όχι σε όλες στο Mint για παράδειγμα είναι απενεργοποιημένα.

Για το θέμα της ασφάλειας δεν μπορώ να απαντήσω με σιγουριά, αλλά για την ευκολία; Απλά και στο ένα και στο άλλο είναι ένα κλικ στο App Center της κάθε διανομής.

Δεν έχουν μεγαλύτερο χρόνο εγκατάστασης, απλά μπορείς να έχεις διαφορετικά runtimes. Αυτά είναι που παίρνουν τον χώρο και την χρόνο. Αν τα πάντα χρησιμοποιούν το ίδιο runtime ο χρόνος πρέπει να είναι ο ίδιος. Και τα flatpak ξεκινάνε πολύ πιο γρήγορα κάτι που βρίσκω περισσότερο σημαντικό.

ΥΓ: Απο πλευράς ασφάλειας τα χειρότερα είναι τα native (είτε deb είτε rpm είτε οτιδήποτε άλλο) και τα AppImages γιατί δεν χρησιμοποιούν τεχνολογίες sandboxing. Τώρα η διανομή μου είναι ακόμα κολλημένη στο X11 οπότε δεν έχει τόσο μεγάλη σημασία.

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

Μεγαλύτερη κατανάλωση πόρων είναι το σημαντικότερο μειονέκτημα τους. Επίσης στο θέμα ασφάλεια αν εμφανιστεί ένα vuln σε κάποια βιβλιοθήκη θα πρέπει να κάνεις (αφότου πρώτα οι devs των πακέτων ανεβάσουν και εάν) update/remove όλα τα πακέτα που έχουν αυτή τη βιβλιοθήκη (αν βρεις ποια είναι βέβαια), κάτι που γίνεται άμεσα σε ένα κλασσικό packaging system.

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

Αν εμφανιστεί κάποιο vulnerability αυτό δεν θα ξεφύγει από το confinement που έχει.

Sandbox ακούω, sandbox escape και privilege escalation σκέφτομαι.
Για ρίξε μια ματιά εδώ :
https://security.archlinux.org/package/flatpak
επίσης είχε γίνει το 2019 :
http://www.hackersnotes.com/blog/pentest/linux-privilege-escalation-via-snapd-using-dirty_sock-exploit-and-demonstration-of-cve-2019-7304/
βρέθηκε και τώρα :

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