Họ đã phát hiện ra một lỗ hổng trong firejail cho phép truy cập root vào hệ thống

Gần đây họ đã phát hành tin tức rằng một lỗ hổng đã được xác định (đã được liệt kê theo CVE-2022-31214) trong công cụ hộp cát ứng dụng Firejail, chi tiết rằng lỗ hổng được phát hiện có thể cho phép người dùng cục bộ trở thành root trên hệ thống máy chủ.

Firejail sử dụng cơ chế không gian tên, AppArmor và lọc cuộc gọi hệ thống (seccomp-bpf) trong Linux để cách ly, nhưng yêu cầu các đặc quyền nâng cao để định cấu hình bản phát hành biệt lập, mà nó có được bằng cách liên kết với tiện ích cờ gốc suid hoặc chạy với sudo.

Lỗ hổng bảo mật là do lỗi logic của tùy chọn “–join =” », được thiết kế để kết nối với một môi trường biệt lập đang chạy (tương tự như lệnh đăng nhập cho môi trường hộp cát) với môi trường được xác định bởi ID của tiến trình đang chạy trong đó. Trong giai đoạn trước khi khởi chạy, firejail phát hiện các đặc quyền của quy trình đã chỉ định và áp dụng chúng cho quy trình mới tham gia môi trường với tùy chọn “–join”.

Trước khi kết nối, kiểm tra xem quá trình được chỉ định có đang chạy trong môi trường firejail hay không. Kiểm tra này đánh giá sự tồn tại của tệp / run / firejail / mnt / join. Để khai thác lỗ hổng bảo mật, kẻ tấn công có thể mô phỏng một môi trường firejail giả tưởng không bị cô lập bằng cách sử dụng không gian tên mount và sau đó kết nối với nó bằng tùy chọn "--join".

Nếu cấu hình không bật chế độ cấm nhận thêm đặc quyền trong các quy trình mới (prctl NO_NEW_PRIVS), firejail sẽ kết nối người dùng với một môi trường hư cấu và cố gắng áp dụng cấu hình không gian tên người dùng của mã định danh người dùng (người dùng không gian tên) của quy trình init ( PID 1).

Hầu hết logic đằng sau hàm nối nằm trong mã nguồn từ tệp `src / firejail / join.c`. Các phần quan trọng của mã được thực thi với đặc quyền nâng cao (UID 0 có hiệu lực). ID của quy trình được truyền dưới dạng lệnh đối số dòng được kiểm tra để xác định xem nó có phải là rthùng chứa và xác định một số thuộc tính của nó Nó cũng áp dụng cho quy trình nhập cảnh mới.

Các tiêu chí chính để quyết định có tham gia quy trình mục tiêu hay không thành công là sự hiện diện của một tệp trong không gian tên gắn kết của mục tiêu, quy trình được tìm thấy trong / run / firejail / mnt / join. Việc xác minh này được thực hiện trên fHàm `is_ready_for_join ()`. Tệp được mở bằng lCác cờ `O_RDONLY | O_CLOEXEC` và kết quả theo dõi` fstat () `nên đáp ứng các yêu cầu sau:

- tệp phải là tệp bình thường.
- tệp phải được sở hữu bởi userid 0 (như đã thấy từ người dùng ban đầu
không gian tên).
- tệp phải có kích thước 1 byte.

Kết quả là quá trình được kết nối qua "firejail --join" sẽ kết thúc trong không gian tên ID người dùng ban đầu của người dùng với các đặc quyền không thay đổi, nhưng trong một không gian điểm gắn kết khác, hoàn toàn do kẻ tấn công kiểm soát.

Vỏ "đã tham gia" kết quả bây giờ sẽ tồn tại trên người dùng ban đầu
không gian tên, tuy nhiên, vẫn giữ các đặc quyền người dùng bình thường ban đầu không gian tên mount sẽ là vùng do kẻ tấn công kiểm soát. Như
cấu hình nonewprivs chưa được áp dụng, kẻ tấn công bây giờ có thể
chạy các chương trình setuid-root trong vùng tên mount này

Cụ thể, kẻ tấn công có thể chạy các chương trình setuid-root trong không gian của điểm gắn kết mà nó đã tạo, cho phép nó, ví dụ, thay đổi cấu hình / etc / sudoers hoặc các tham số PAM trong hệ thống phân cấp tệp của nó và có được khả năng chạy lệnh với tư cách là người chủ. sử dụng sudo hoặc các tiện ích của nó.

Cuối cùng, điều đáng nói là một khai thác chức năng đã được phát triển, thử nghiệm trên các phiên bản hiện tại của openSUSE, Debian, Arch, Gentoo và Fedora có cài đặt tiện ích firejail.

Sự cố đã được khắc phục trong phiên bản firejail 0.9.70. Như một bản sửa lỗi bảo mật, bạn có thể đặt cấu hình (/etc/firejail/firejail.config) thành "no join" và "force-nonewprivs yes".

Cuối cùng nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết theo dõi.


Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.