Phát hành hệ thống gói độc lập Flatpak 1.12.0

Một nhánh ổn định mới của bộ công cụ Flatpak 1.12 đã được xuất bản, cung cấp một hệ thống xây dựng các gói độc lập không bị ràng buộc với các bản phân phối Linux cụ thể và chạy trong một vùng chứa đặc biệt giúp tách biệt ứng dụng khỏi phần còn lại của hệ thống. Hỗ trợ chạy các gói Flatpak được cung cấp cho Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux và Ubuntu. Các gói Flatpak được bao gồm trong kho Fedora và được hỗ trợ bởi trình quản lý ứng dụng Gnome gốc.

Những cải tiến chính trong nhánh Flatpak 1.12:

  • Cải thiện khả năng quản lý các môi trường hộp cát lồng nhau được sử dụng trong gói Flatpak với ứng dụng khách dành cho dịch vụ phân phối trò chơi Steam. Trong các hộp cát lồng nhau, cho phép tạo các phân cấp riêng biệt của thư mục /usr và /app, được sử dụng trong Steam để khởi chạy trò chơi trong một vùng chứa riêng biệt với phân vùng /usr riêng, tách biệt với môi trường với ứng dụng khách Steam.
  • Tất cả các phiên bản gói có cùng mã định danh ứng dụng (ID ứng dụng) đều chia sẻ các thư mục /tmp và $XDG_RUNTIME_DIR. Theo tùy chọn, bằng cách sử dụng cờ “--allow=per-app-dev-shm”, bạn có thể cho phép sử dụng thư mục chia sẻ /dev/shm.
  • Cải thiện hỗ trợ cho các ứng dụng Giao diện người dùng văn bản (TUI) như gdb.
  • Việc triển khai nhanh hơn lệnh “ostree prune” đã được thêm vào tiện ích build-update-repo, được tối ưu hóa để làm việc với các kho lưu trữ ở chế độ lưu trữ.
  • Lỗ hổng CVE-2021-41133 trong việc triển khai cơ chế cổng thông tin, liên quan đến việc thiếu chặn các cuộc gọi hệ thống mới liên quan đến việc gắn phân vùng trong quy tắc seccomp, đã được sửa. Lỗ hổng này cho phép ứng dụng tạo một hộp cát lồng nhau để vượt qua các cơ chế xác minh “cổng thông tin” được sử dụng để tổ chức quyền truy cập vào các tài nguyên bên ngoài vùng chứa.

    Do đó, kẻ tấn công, bằng cách thực hiện các lệnh gọi hệ thống liên quan đến việc gắn kết, có thể bỏ qua cơ chế cách ly hộp cát và có toàn quyền truy cập vào nội dung của môi trường máy chủ. Lỗ hổng này chỉ có thể bị khai thác trong các gói cung cấp cho ứng dụng quyền truy cập trực tiếp vào ổ cắm AF_UNIX, chẳng hạn như các ổ cắm được Wayland, Pipewire và pipewire-Pulse sử dụng. Trong bản phát hành 1.12.0, lỗ hổng này vẫn chưa được loại bỏ hoàn toàn nên bản cập nhật 1.12.1 đã được tung ra ngay sau đó.

Hãy để chúng tôi nhắc bạn rằng Flatpak cho phép các nhà phát triển ứng dụng đơn giản hóa việc phân phối các chương trình của họ không có trong kho phân phối tiêu chuẩn bằng cách chuẩn bị một vùng chứa chung mà không cần tạo các tập hợp riêng biệt cho mỗi bản phân phối. Đối với những người dùng quan tâm đến bảo mật, Flatpak cho phép bạn chạy một ứng dụng có vấn đề trong một vùng chứa, chỉ cung cấp quyền truy cập vào các chức năng mạng và tệp người dùng được liên kết với ứng dụng. Đối với người dùng quan tâm đến sản phẩm mới, Flatpak cho phép bạn cài đặt bản thử nghiệm mới nhất và bản phát hành ổn định của ứng dụng mà không cần thực hiện thay đổi đối với hệ thống. Ví dụ: gói Flatpak được xây dựng cho LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, v.v.

Để giảm kích thước gói, nó chỉ bao gồm các phần phụ thuộc dành riêng cho ứng dụng, đồng thời các thư viện đồ họa và hệ thống cơ bản (thư viện GTK, Qt, GNOME và KDE, v.v.) được thiết kế dưới dạng môi trường thời gian chạy tiêu chuẩn bổ trợ. Sự khác biệt chính giữa Flatpak và Snap là Snap sử dụng các thành phần của môi trường hệ thống chính và sự cô lập dựa trên các cuộc gọi hệ thống lọc, trong khi Flatpak tạo một vùng chứa tách biệt với hệ thống và hoạt động với các bộ thời gian chạy lớn, không cung cấp các gói dưới dạng phụ thuộc mà là tiêu chuẩn. những môi trường hệ thống đó (ví dụ: tất cả các thư viện cần thiết cho hoạt động của các chương trình Gnome hoặc KDE).

Ngoài môi trường hệ thống tiêu chuẩn (thời gian chạy), được cài đặt thông qua một kho lưu trữ đặc biệt, các phần phụ thuộc (gói) bổ sung cần thiết cho hoạt động của ứng dụng cũng được cung cấp. Tổng cộng, thời gian chạy và gói tạo thành việc lấp đầy vùng chứa, mặc dù thực tế là thời gian chạy được cài đặt riêng biệt và gắn với nhiều vùng chứa cùng một lúc, điều này cho phép bạn tránh sao chép các tệp hệ thống chung cho vùng chứa. Một hệ thống có thể được cài đặt nhiều thời gian chạy khác nhau (GNOME, KDE) hoặc nhiều phiên bản của cùng một thời gian chạy (GNOME 3.40, GNOME 3.42). Một vùng chứa có ứng dụng làm phần phụ thuộc chỉ sử dụng liên kết với một thời gian chạy cụ thể mà không tính đến các gói riêng lẻ tạo nên thời gian chạy. Tất cả các yếu tố còn thiếu được đóng gói trực tiếp với ứng dụng. Khi một vùng chứa được hình thành, nội dung thời gian chạy sẽ được gắn dưới dạng phân vùng /usr và gói được gắn vào thư mục /app.

Bộ chứa thời gian chạy và ứng dụng được xây dựng bằng công nghệ OSTree, trong đó hình ảnh được cập nhật nguyên tử từ kho lưu trữ giống Git, cho phép áp dụng các phương pháp kiểm soát phiên bản cho các thành phần phân phối (ví dụ: bạn có thể nhanh chóng khôi phục hệ thống về trạng thái cũ). trạng thái trước đó). Các gói RPM được dịch sang kho lưu trữ OSTree bằng cách sử dụng lớp RPM-ostree đặc biệt. Không hỗ trợ cài đặt và cập nhật riêng biệt các gói trong môi trường làm việc; hệ thống được cập nhật không phải ở cấp độ các thành phần riêng lẻ mà là toàn bộ, thay đổi trạng thái của nó một cách nguyên tử. Cung cấp các công cụ để áp dụng các bản cập nhật tăng dần, loại bỏ nhu cầu thay thế hoàn toàn hình ảnh sau mỗi bản cập nhật.

Môi trường biệt lập được tạo ra hoàn toàn độc lập với bản phân phối được sử dụng và với cài đặt gói phù hợp, không có quyền truy cập vào các tệp và quy trình của người dùng hoặc hệ thống chính và không thể truy cập trực tiếp vào thiết bị, ngoại trừ đầu ra qua DRI và các cuộc gọi tới hệ thống con của mạng. Tổ chức đầu vào và đầu ra đồ họa được triển khai bằng giao thức Wayland hoặc thông qua chuyển tiếp ổ cắm X11. Tương tác với môi trường bên ngoài dựa trên hệ thống nhắn tin DBus và API Cổng thông tin đặc biệt.

Để cách ly, lớp Bubblewrap và các công nghệ ảo hóa vùng chứa Linux truyền thống được sử dụng, dựa trên việc sử dụng các nhóm, không gian tên, Seccomp và SELinux. PulseAudio được sử dụng để phát ra âm thanh. Trong trường hợp này, tính năng cách ly có thể bị vô hiệu hóa, tính năng này được các nhà phát triển của nhiều gói phổ biến sử dụng để có toàn quyền truy cập vào hệ thống tệp và tất cả các thiết bị trong hệ thống. Ví dụ: GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity và VLC có chế độ cách ly giới hạn cho phép truy cập đầy đủ vào thư mục chính.

Nếu các gói có quyền truy cập vào thư mục chính bị xâm phạm, mặc dù có nhãn “hộp cát” trong mô tả gói, kẻ tấn công chỉ cần thay đổi tệp ~/.bashrc để thực thi mã của mình. Một vấn đề riêng biệt là việc kiểm soát các thay đổi đối với gói và sự tin tưởng vào những người xây dựng gói, những người thường không liên quan đến dự án chính hoặc các bản phân phối.

Nguồn: opennet.ru

Thêm một lời nhận xét