Реліз системи самодостатніх пакетів 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. У вкладених sandbox-ах дозволено створення окремих ієрархій каталогів /usr та /app, що використовується в Steam для запуску ігор в окремому контейнері зі своїм розділом /usr ізольованому від оточення з клієнтом Steam.
  • У всіх екземплярах пакетів з однаковим ідентифікатором програми (app-ID) забезпечено спільне використання каталогів /tmp та $XDG_RUNTIME_DIR. Опціонально за допомогою прапора «allow=per-app-dev-shm» можна включити використання загального каталогу /dev/shm.
  • Покращена підтримка програм із текстовим інтерфейсом користувача (TUI), таких як gdb.
  • В утиліту build-update-repo додано швидшу реалізацію команди «ostree prune», оптимізовану для роботи з репозиторіями, що знаходяться в режимі архіву.
  • Усунена вразливість 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 і т.п.) оформлені у вигляді типових runtime-оточень, що підключаються. Ключова відмінність Flatpak від Snap полягає в тому, що Snap використовує компоненти оточення основної системи та ізоляцію на основі фільтрації системних викликів, у той час як Flatpak створює окремий від системи контейнер і оперує великими runtime-наборами, надаючи як залежність не пакети, а типові системні оточення (наприклад, усі бібліотеки, необхідні для роботи програм GNOME або KDE).

Крім типового системного оточення (runtime), що встановлюється через спеціальний репозиторій, поставляються додаткові залежності (bundle), необхідні роботи програми. У сумі runtime і bundle утворюють начинку контейнера, при тому, що runtime встановлюється окремо і прив'язується відразу до кількох контейнерів, що дозволяє обійтися без дублювання загальних контейнерних системних файлів. В одній системі може бути встановлена ​​кілька різних runtime (GNOME, KDE) або кілька версій одного runtime (GNOME 3.40, GNOME 3.42). Контейнер із додатком як залежність використовує прив'язку лише до певного runtime, не враховуючи окремих пакетів, у тому числі складається runtime. Всі елементи, що відсутні, упаковуються безпосередньо разом з додатком. При формуванні контейнера вміст runtime монтується як розділ /usr, а bundle монтується в директорію /app.

Начинка runtime та контейнерів додатків формується з використанням технології OSTree, при якій образ атомарно оновлюється з Git-подібного сховища, що дозволяє застосовувати методи версійного контролю до компонентів дистрибутива (наприклад, можна швидко відкотити систему до попереднього стану). RPM-пакети транслюються в репозиторій OSTree за допомогою спеціального прошарку rpm-ostree. Окрема установка та оновлення пакетів усередині робочого оточення не підтримується, система оновлюється не лише на рівні окремих компонентів, а повністю, атомарно змінюючи свій стан. Надаються засоби для інкрементального застосування оновлень, що позбавляють необхідності повної заміни образу при кожному оновленні.

Формоване ізольоване оточення повністю незалежно від дистрибутива, що використовується, і при належних налаштуваннях пакета не має доступу до файлів і процесів користувача або основної системи, не може безпосередньо звертатися до обладнання, за винятком виведення через DRI, і звернень до мережної підсистеми. Виведення графіки та організація введення реалізовані за допомогою протоколу Wayland або через прокидання сокету X11. Взаємодія із зовнішнім середовищем побудована на основі системи обміну повідомленнями DBus та спеціального API Portals.

Для ізоляції використовується прошарок Bubblewrap і традиційні для Linux технології контейнерної віртуалізації, що ґрунтуються на використанні cgroups, просторів імен (namespaces), Seccomp та SELinux. Для виведення звуку використовується PulseAudio. При цьому ізоляція може бути відключена, чим розробники багатьох популярних пакетів для отримання повного доступу до ФС і всім пристроям в системі. Наприклад, з обмеженим режимом ізоляції, що залишає повний доступ до домашнього каталогу, поставляються пакети GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity та VLC.

У разі компрометації пакетів з доступом до домашнього каталогу, незважаючи на наявність в описі пакета мітки «sandboxed», атакуючому для виконання свого коду достатньо змінити файл ~/.bashrc. Окремим питанням є контроль за внесенням змін до пакетів та довіри до збирачів пакетів, які часто не пов'язані з основним проектом чи дистрибутивами.

Джерело: opennet.ru

Додати коментар або відгук