Κυκλοφορία του αυτόνομου συστήματος πακέτων Flatpak 1.12.0

Δημοσιεύτηκε ένας νέος σταθερός κλάδος της εργαλειοθήκης Flatpak 1.12, ο οποίος παρέχει ένα σύστημα για τη δημιουργία αυτόνομων πακέτων που δεν συνδέονται με συγκεκριμένες διανομές Linux και εκτελούνται σε ειδικό κοντέινερ που απομονώνει την εφαρμογή από το υπόλοιπο σύστημα. Παρέχεται υποστήριξη για την εκτέλεση πακέτων Flatpak για Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux και Ubuntu. Τα πακέτα Flatpak περιλαμβάνονται στο αποθετήριο Fedora και υποστηρίζονται από τον εγγενή διαχειριστή εφαρμογών GNOME.

Βασικές καινοτομίες στον κλάδο Flatpak 1.12:

  • Βελτιωμένη διαχείριση των ένθετων περιβαλλόντων sandbox που χρησιμοποιούνται στο πακέτο flatpak με τον πελάτη για την υπηρεσία παράδοσης παιχνιδιών Steam. Στα ένθετα sandboxes, επιτρέπεται η δημιουργία ξεχωριστών ιεραρχιών των καταλόγων /usr και /app, οι οποίες χρησιμοποιούνται στο Steam για την εκκίνηση παιχνιδιών σε ξεχωριστό κοντέινερ με το δικό του διαμέρισμα /usr, απομονωμένο από το περιβάλλον με τον πελάτη Steam.
  • Όλες οι παρουσίες πακέτου με το ίδιο αναγνωριστικό εφαρμογής (app-ID) μοιράζονται τους καταλόγους /tmp και $XDG_RUNTIME_DIR. Προαιρετικά, χρησιμοποιώντας τη σημαία "--allow=per-app-dev-shm", μπορείτε να ενεργοποιήσετε τη χρήση του κοινόχρηστου καταλόγου /dev/shm.
  • Βελτιωμένη υποστήριξη για εφαρμογές Text User Interface (TUI) όπως το gdb.
  • Μια ταχύτερη υλοποίηση της εντολής "ostree prune" προστέθηκε στο βοηθητικό πρόγραμμα build-update-repo, βελτιστοποιημένη για εργασία με αποθετήρια σε λειτουργία αρχειοθέτησης.
  • Η ευπάθεια CVE-2021-41133 στην υλοποίηση του μηχανισμού πύλης, που σχετίζεται με την έλλειψη αποκλεισμού νέων κλήσεων συστήματος που σχετίζονται με την τοποθέτηση κατατμήσεων στους κανόνες seccomp, έχει επιδιορθωθεί. Η ευπάθεια επέτρεψε στην εφαρμογή να δημιουργήσει ένα ένθετο sandbox για να παρακάμψει τους μηχανισμούς επαλήθευσης "πύλης" που χρησιμοποιούνται για την οργάνωση της πρόσβασης σε πόρους εκτός του κοντέινερ.

    Ως αποτέλεσμα, ένας εισβολέας, εκτελώντας κλήσεις συστήματος που σχετίζονται με την προσάρτηση, θα μπορούσε να παρακάμψει τον μηχανισμό απομόνωσης του sandbox και να αποκτήσει πλήρη πρόσβαση στα περιεχόμενα του περιβάλλοντος κεντρικού υπολογιστή. Η ευπάθεια μπορεί να χρησιμοποιηθεί μόνο σε πακέτα που παρέχουν στις εφαρμογές άμεση πρόσβαση σε υποδοχές AF_UNIX, όπως αυτές που χρησιμοποιούνται από τα Wayland, Pipewire και pipewire-pulse. Στην έκδοση 1.12.0, η ευπάθεια δεν εξαλείφθηκε εντελώς, επομένως η ενημέρωση 1.12.1 κυκλοφόρησε ζεστή.

Να σας υπενθυμίσουμε ότι το Flatpak επιτρέπει στους προγραμματιστές εφαρμογών να απλοποιούν τη διανομή των προγραμμάτων τους που δεν περιλαμβάνονται στα τυπικά αποθετήρια διανομής, προετοιμάζοντας ένα γενικό κοντέινερ χωρίς τη δημιουργία ξεχωριστών συγκροτημάτων για κάθε διανομή. Για χρήστες που γνωρίζουν την ασφάλεια, το Flatpak σάς επιτρέπει να εκτελέσετε μια αμφισβητήσιμη εφαρμογή σε ένα κοντέινερ, παρέχοντας πρόσβαση μόνο στις λειτουργίες δικτύου και στα αρχεία χρήστη που σχετίζονται με την εφαρμογή. Για χρήστες που ενδιαφέρονται για νέα προϊόντα, το Flatpak σάς επιτρέπει να εγκαταστήσετε τις πιο πρόσφατες δοκιμαστικές και σταθερές εκδόσεις εφαρμογών χωρίς να χρειάζεται να κάνετε αλλαγές στο σύστημα. Για παράδειγμα, τα πακέτα Flatpak είναι κατασκευασμένα για LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio κ.λπ.

Για να μειωθεί το μέγεθος του πακέτου, περιλαμβάνει μόνο εξαρτήσεις για συγκεκριμένες εφαρμογές και οι βασικές βιβλιοθήκες συστήματος και γραφικών (βιβλιοθήκες GTK, Qt, GNOME και KDE, κ.λπ.) έχουν σχεδιαστεί ως τυπικά περιβάλλοντα χρόνου εκτέλεσης plug-in. Η βασική διαφορά μεταξύ του Flatpak και του Snap είναι ότι το Snap χρησιμοποιεί τα στοιχεία του κύριου περιβάλλοντος συστήματος και την απομόνωση που βασίζεται σε κλήσεις συστήματος φιλτραρίσματος, ενώ το Flatpak δημιουργεί ένα κοντέινερ ξεχωριστό από το σύστημα και λειτουργεί με μεγάλα σύνολα χρόνου εκτέλεσης, παρέχοντας όχι πακέτα ως εξαρτήσεις, αλλά τυπικά περιβάλλοντα συστήματος (για παράδειγμα, όλες οι βιβλιοθήκες που είναι απαραίτητες για τη λειτουργία προγραμμάτων GNOME ή KDE).

Εκτός από το τυπικό περιβάλλον συστήματος (runtime), που είναι εγκατεστημένο μέσω ειδικού αποθετηρίου, παρέχονται πρόσθετες εξαρτήσεις (πακέτο) που απαιτούνται για τη λειτουργία της εφαρμογής. Συνολικά, ο χρόνος εκτέλεσης και το πακέτο αποτελούν το γέμισμα του κοντέινερ, παρά το γεγονός ότι ο χρόνος εκτέλεσης εγκαθίσταται χωριστά και συνδέεται με πολλά κοντέινερ ταυτόχρονα, γεγονός που σας επιτρέπει να αποφύγετε την αντιγραφή αρχείων συστήματος που είναι κοινά στα κοντέινερ. Ένα σύστημα μπορεί να έχει εγκατεστημένους πολλούς διαφορετικούς χρόνους εκτέλεσης (GNOME, KDE) ή πολλές εκδόσεις του ίδιου χρόνου εκτέλεσης (GNOME 3.40, GNOME 3.42). Ένα κοντέινερ με μια εφαρμογή ως εξάρτηση χρησιμοποιεί μια σύνδεση μόνο σε έναν συγκεκριμένο χρόνο εκτέλεσης, χωρίς να λαμβάνει υπόψη τα μεμονωμένα πακέτα που συνθέτουν τον χρόνο εκτέλεσης. Όλα τα στοιχεία που λείπουν συσκευάζονται απευθείας με την εφαρμογή. Όταν σχηματίζεται ένα κοντέινερ, τα περιεχόμενα χρόνου εκτέλεσης προσαρτώνται ως το διαμέρισμα /usr και το πακέτο προσαρτάται στον κατάλογο /app.

Ο χρόνος εκτέλεσης και τα κοντέινερ εφαρμογών κατασκευάζονται χρησιμοποιώντας την τεχνολογία OSTree, στην οποία η εικόνα ενημερώνεται ατομικά από ένα αποθετήριο τύπου Git, το οποίο επιτρέπει την εφαρμογή μεθόδων ελέγχου έκδοσης στα στοιχεία διανομής (για παράδειγμα, μπορείτε να επαναφέρετε γρήγορα το σύστημα σε ένα προηγούμενη κατάσταση). Τα πακέτα RPM μεταφράζονται στο αποθετήριο OSTree χρησιμοποιώντας ένα ειδικό επίπεδο rpm-ostree. Δεν υποστηρίζεται ξεχωριστή εγκατάσταση και ενημέρωση πακέτων εντός του εργασιακού περιβάλλοντος· το σύστημα ενημερώνεται όχι σε επίπεδο μεμονωμένων στοιχείων, αλλά ως σύνολο, αλλάζοντας ατομικά την κατάστασή του. Παρέχει εργαλεία για την σταδιακή εφαρμογή ενημερώσεων, εξαλείφοντας την ανάγκη για πλήρη αντικατάσταση της εικόνας με κάθε ενημέρωση.

Το απομονωμένο περιβάλλον που δημιουργείται είναι εντελώς ανεξάρτητο από τη διανομή που χρησιμοποιείται και, με τις σωστές ρυθμίσεις του πακέτου, δεν έχει πρόσβαση σε αρχεία και διαδικασίες του χρήστη ή του κύριου συστήματος, δεν μπορεί να έχει άμεση πρόσβαση στον εξοπλισμό, με εξαίρεση την έξοδο μέσω DRI, και κλήσεις στο υποσύστημα δικτύου. Η έξοδος γραφικών και η οργάνωση εισόδου υλοποιούνται χρησιμοποιώντας το πρωτόκολλο Wayland ή μέσω προώθησης υποδοχής X11. Η αλληλεπίδραση με το εξωτερικό περιβάλλον βασίζεται στο σύστημα ανταλλαγής μηνυμάτων DBus και σε ένα ειδικό Portal API.

Για απομόνωση, χρησιμοποιούνται το επίπεδο Bubblewrap και οι παραδοσιακές τεχνολογίες εικονικοποίησης κοντέινερ Linux, που βασίζονται στη χρήση cgroups, namespaces, Seccomp και SELinux. Το PulseAudio χρησιμοποιείται για την έξοδο ήχου. Σε αυτήν την περίπτωση, η απομόνωση μπορεί να απενεργοποιηθεί, η οποία χρησιμοποιείται από τους προγραμματιστές πολλών δημοφιλών πακέτων για να αποκτήσουν πλήρη πρόσβαση στο σύστημα αρχείων και σε όλες τις συσκευές του συστήματος. Για παράδειγμα, τα GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity και VLC διαθέτουν περιορισμένη λειτουργία απομόνωσης που αφήνει πλήρη πρόσβαση στον οικιακό κατάλογο.

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

Πηγή: opennet.ru

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