Paglabas ng Flatpak 1.12.0 na self-contained package system

Ang isang bagong matatag na sangay ng Flatpak 1.12 toolkit ay nai-publish, na nagbibigay ng isang sistema para sa pagbuo ng mga self-contained na pakete na hindi nakatali sa mga partikular na pamamahagi ng Linux at tumatakbo sa isang espesyal na lalagyan na naghihiwalay sa application mula sa iba pang bahagi ng system. Ang suporta para sa pagpapatakbo ng mga pakete ng Flatpak ay ibinibigay para sa Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux at Ubuntu. Ang mga pakete ng Flatpak ay kasama sa repositoryo ng Fedora at sinusuportahan ng katutubong GNOME application manager.

Mga pangunahing inobasyon sa sangay ng Flatpak 1.12:

  • Pinahusay na pamamahala ng mga nested sandbox na kapaligiran na ginagamit sa flatpak package kasama ng kliyente para sa serbisyo ng paghahatid ng laro ng Steam. Sa mga nested sandbox, pinapayagan ang paglikha ng magkahiwalay na hierarchy ng /usr at /app na mga direktoryo, na ginagamit sa Steam para maglunsad ng mga laro sa isang hiwalay na lalagyan na may sarili nitong /usr partition, na nakahiwalay sa kapaligiran kasama ang Steam client.
  • Ang lahat ng mga instance ng package na may parehong application identifier (app-ID) ay nagbabahagi ng /tmp at $XDG_RUNTIME_DIR na mga direktoryo. Opsyonal, gamit ang flag na "--allow=per-app-dev-shm", maaari mong paganahin ang paggamit ng /dev/shm shared directory.
  • Pinahusay na suporta para sa mga application ng Text User Interface (TUI) gaya ng gdb.
  • Ang isang mas mabilis na pagpapatupad ng command na "ostree prune" ay idinagdag sa build-update-repo utility, na na-optimize para sa pagtatrabaho sa mga repository sa archive mode.
  • Ang kahinaan ng CVE-2021-41133 sa pagpapatupad ng mekanismo ng portal, na nauugnay sa kakulangan ng pagharang ng mga bagong tawag sa system na may kaugnayan sa pag-mount ng mga partisyon sa mga panuntunan ng seccomp, ay naayos na. Ang kahinaan ay nagbigay-daan sa application na lumikha ng isang nested sandbox upang i-bypass ang mga mekanismo ng pag-verify ng "portal" na ginagamit upang ayusin ang pag-access sa mga mapagkukunan sa labas ng container.

    Bilang resulta, ang isang attacker, sa pamamagitan ng pagsasagawa ng mga mounting-related na system call, ay maaaring makalampas sa sandbox isolation mechanism at makakuha ng ganap na access sa mga nilalaman ng host environment. Magagamit lang ang kahinaan sa mga package na nagbibigay ng mga application na may direktang access sa mga AF_UNIX socket, gaya ng mga ginagamit ng Wayland, Pipewire, at pipewire-pulse. Sa release 1.12.0, ang vulnerability ay hindi ganap na naalis, kaya ang update 1.12.1 ay pinakawalan nang mainit sa mga takong nito.

Paalalahanan ka namin na ang Flatpak ay nagpapahintulot sa mga developer ng application na pasimplehin ang pamamahagi ng kanilang mga programa na hindi kasama sa mga karaniwang repositoryo ng pamamahagi sa pamamagitan ng paghahanda ng isang unibersal na lalagyan nang hindi gumagawa ng hiwalay na mga asembliya para sa bawat pamamahagi. Para sa mga gumagamit na may kamalayan sa seguridad, pinapayagan ka ng Flatpak na magpatakbo ng isang kaduda-dudang application sa isang lalagyan, na nagbibigay ng access lamang sa mga function ng network at mga file ng user na nauugnay sa application. Para sa mga user na interesado sa mga bagong produkto, pinapayagan ka ng Flatpak na i-install ang pinakabagong pagsubok at mga stable na release ng mga application nang hindi na kailangang gumawa ng mga pagbabago sa system. Halimbawa, ang mga pakete ng Flatpak ay binuo para sa LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, atbp.

Upang bawasan ang laki ng package, kasama lang dito ang mga dependency na tukoy sa application, at ang mga pangunahing library ng system at graphics (mga library ng GTK, Qt, GNOME at KDE, atbp.) ay idinisenyo bilang mga plug-in na karaniwang runtime na kapaligiran. Ang pangunahing pagkakaiba sa pagitan ng Flatpak at Snap ay ang Snap ay gumagamit ng mga bahagi ng pangunahing kapaligiran ng system at paghihiwalay batay sa pag-filter ng mga tawag sa system, habang ang Flatpak ay gumagawa ng isang lalagyan na hiwalay sa system at nagpapatakbo ng malalaking runtime set, na hindi nagbibigay ng mga pakete bilang mga dependency, ngunit karaniwang mga kapaligiran ng system (halimbawa, lahat ng mga aklatan na kailangan para sa pagpapatakbo ng mga programang GNOME o KDE).

Bilang karagdagan sa karaniwang kapaligiran ng system (runtime), na naka-install sa pamamagitan ng isang espesyal na imbakan, ang mga karagdagang dependency (bundle) na kinakailangan para sa pagpapatakbo ng application ay ibinibigay. Sa kabuuan, ang runtime at bundle ang bumubuo sa pagpuno ng container, sa kabila ng katotohanan na ang runtime ay naka-install nang hiwalay at nakatali sa ilang mga container nang sabay-sabay, na nagbibigay-daan sa iyong maiwasan ang pagdoble ng mga system file na karaniwan sa mga container. Ang isang system ay maaaring magkaroon ng ilang magkakaibang runtime na naka-install (GNOME, KDE) o ilang bersyon ng parehong runtime (GNOME 3.40, GNOME 3.42). Ang isang container na may application bilang dependency ay gumagamit ng isang binding lamang sa isang partikular na runtime, nang hindi isinasaalang-alang ang mga indibidwal na package na bumubuo sa runtime. Ang lahat ng nawawalang elemento ay direktang nakabalot sa application. Kapag nabuo ang isang lalagyan, ang mga nilalaman ng runtime ay ini-mount bilang ang /usr partition, at ang bundle ay naka-mount sa direktoryo ng /app.

Ang runtime at application container ay binuo gamit ang OSTree technology, kung saan ang imahe ay atomically updated mula sa isang Git-like repository, na nagbibigay-daan sa mga version control method na mailapat sa mga bahagi ng pamamahagi (halimbawa, maaari mong mabilis na i-roll back ang system sa isang nakaraang estado). Ang mga RPM package ay isinasalin sa OSTree repository gamit ang isang espesyal na rpm-ostree layer. Ang hiwalay na pag-install at pag-update ng mga pakete sa loob ng kapaligiran sa pagtatrabaho ay hindi suportado; ang system ay na-update hindi sa antas ng mga indibidwal na bahagi, ngunit sa kabuuan, atomically nagbabago ang estado nito. Nagbibigay ng mga tool upang ilapat ang mga update nang paunti-unti, na inaalis ang pangangailangan na ganap na palitan ang larawan sa bawat update.

Ang nabuong nakahiwalay na kapaligiran ay ganap na independiyente sa pamamahagi na ginamit at, na may wastong mga setting ng package, ay walang access sa mga file at proseso ng user o ng pangunahing system, ay hindi direktang ma-access ang kagamitan, maliban sa output sa pamamagitan ng DRI, at mga tawag sa network subsystem. Ang graphics output at input organization ay ipinapatupad gamit ang Wayland protocol o sa pamamagitan ng X11 socket forwarding. Ang pakikipag-ugnayan sa panlabas na kapaligiran ay batay sa DBus messaging system at isang espesyal na Portals API.

Para sa paghihiwalay, ginagamit ang Bubblewrap layer at tradisyonal na Linux container virtualization na teknolohiya, batay sa paggamit ng mga cgroup, namespace, Seccomp at SELinux. Ginagamit ang PulseAudio upang mag-output ng tunog. Sa kasong ito, maaaring hindi paganahin ang paghihiwalay, na ginagamit ng mga developer ng maraming sikat na pakete upang makakuha ng ganap na access sa file system at lahat ng device sa system. Halimbawa, ang GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity, at VLC ay may limitadong isolation mode na nag-iiwan ng ganap na access sa home directory.

Kung ang mga package na may access sa home directory ay nakompromiso, sa kabila ng pagkakaroon ng "sandboxed" na label sa paglalarawan ng package, kailangan lang ng attacker na baguhin ang ~/.bashrc file upang maisagawa ang kanyang code. Ang isang hiwalay na isyu ay ang kontrol ng mga pagbabago sa mga pakete at pagtitiwala sa mga tagabuo ng package, na kadalasang hindi nauugnay sa pangunahing proyekto o mga pamamahagi.

Pinagmulan: opennet.ru

Magdagdag ng komento