Phát hành Bubblewrap 0.6, một lớp để tạo môi trường biệt lập

Đã có bản phát hành các công cụ để tổ chức công việc trong môi trường biệt lập Bubblewrap 0.6, thường được sử dụng để hạn chế các ứng dụng riêng lẻ của người dùng không có đặc quyền. Trong thực tế, Bubblewrap được dự án Flatpak sử dụng như một lớp để cách ly các ứng dụng được khởi chạy khỏi các gói. Mã dự án được viết bằng C và được phân phối theo giấy phép LGPLv2+.

Để cách ly, 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. Để thực hiện các hoạt động đặc quyền nhằm định cấu hình vùng chứa, Bubblewrap được khởi chạy với quyền root (tệp thực thi có cờ suid) và sau đó đặt lại các đặc quyền sau khi vùng chứa được khởi tạo.

Việc kích hoạt không gian tên người dùng trong hệ thống không gian tên, cho phép bạn sử dụng bộ mã định danh riêng của mình trong vùng chứa, là không cần thiết để vận hành vì nó không hoạt động theo mặc định trong nhiều bản phân phối (Bubblewrap được định vị là triển khai suid giới hạn của một tập hợp con các khả năng của không gian tên người dùng - để loại trừ tất cả số nhận dạng người dùng và quy trình khỏi môi trường, ngoại trừ số nhận dạng hiện tại, các chế độ CLONE_NEWUSER và CLONE_NEWPID được sử dụng). Để bảo vệ bổ sung, các chương trình được thực thi trong Bubblewrap được khởi chạy ở chế độ PR_SET_NO_NEW_PRIVS, chế độ này cấm việc giành được các đặc quyền mới, chẳng hạn như nếu có cờ setuid.

Việc cách ly ở cấp hệ thống tệp được thực hiện bằng cách tạo một vùng tên gắn kết mới theo mặc định, trong đó một phân vùng gốc trống được tạo bằng cách sử dụng tmpfs. Nếu cần, các phân vùng FS bên ngoài sẽ được gắn vào phân vùng này ở chế độ “mount —bind” (ví dụ: khi khởi chạy với tùy chọn “bwrap —ro-bind /usr /usr”, phân vùng /usr sẽ được chuyển tiếp từ hệ thống chính ở chế độ chỉ đọc). Khả năng của mạng bị giới hạn trong việc truy cập vào giao diện loopback với cách ly ngăn xếp mạng thông qua cờ CLONE_NEWNET và CLONE_NEWUTS.

Điểm khác biệt chính so với dự án Firejail tương tự, cũng sử dụng mô hình khởi chạy setuid, là trong Bubblewrap, lớp tạo vùng chứa chỉ bao gồm các khả năng tối thiểu cần thiết và tất cả các chức năng nâng cao cần thiết để chạy các ứng dụng đồ họa, tương tác với màn hình nền và lọc các yêu cầu sang Pulseaudio, được chuyển sang phía Flatpak và được thực thi sau khi các đặc quyền được đặt lại. Mặt khác, Firejail kết hợp tất cả các chức năng liên quan trong một tệp thực thi, điều này gây khó khăn cho việc kiểm tra và duy trì bảo mật ở mức thích hợp.

Trong bản phát hành mới:

  • Đã thêm hỗ trợ cho hệ thống lắp ráp Meson. Hỗ trợ xây dựng bằng Autotools hiện vẫn được giữ lại nhưng sẽ bị xóa trong bản phát hành trong tương lai.
  • Đã triển khai tùy chọn "--add-seccomp" để thêm nhiều chương trình seccomp. Đã thêm cảnh báo rằng nếu bạn chỉ định lại tùy chọn "--seccomp", chỉ tham số cuối cùng sẽ được áp dụng.
  • Nhánh chính trong kho git đã được đổi tên thành main.
  • Đã thêm hỗ trợ một phần cho đặc tả REUSE, giúp thống nhất quy trình chỉ định thông tin giấy phép và bản quyền. Nhiều tệp mã đã được thêm tiêu đề SPDX-Lilicense-Identifier. Việc tuân theo các nguyên tắc SỬ DỤNG LẠI giúp việc tự động xác định giấy phép nào áp dụng cho phần nào của mã ứng dụng trở nên dễ dàng hơn.
  • Đã thêm việc kiểm tra giá trị của bộ đếm đối số dòng lệnh (argc) và thực hiện thoát khẩn cấp nếu bộ đếm bằng 2021. Thay đổi này giúp chặn các sự cố bảo mật do xử lý không chính xác các đối số dòng lệnh đã truyền, chẳng hạn như CVE-4034-XNUMX trong Polkit.

Nguồn: opennet.ru

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