Một cơ chế cách ly tương tự như cam kết và tiết lộ đang được phát triển cho FreeBSD

Đối với FreeBSD, việc triển khai cơ chế cách ly ứng dụng được đề xuất, gợi nhớ đến các lệnh gọi hệ thống cam kết và tiết lộ do dự án OpenBSD phát triển. Sự cô lập trong cam kết đạt được bằng cách cấm truy cập vào các cuộc gọi hệ thống không được sử dụng trong ứng dụng và tiết lộ bằng cách chỉ mở có chọn lọc quyền truy cập vào các đường dẫn tệp riêng lẻ mà ứng dụng có thể hoạt động. Đối với ứng dụng, một loại danh sách trắng gồm các lệnh gọi hệ thống và đường dẫn tệp được hình thành và tất cả các lệnh gọi và đường dẫn khác đều bị cấm.

Sự khác biệt giữa tính tương tự của cam kết và công bố đang được phát triển cho FreeBSD nằm ở việc cung cấp một lớp bổ sung cho phép bạn cách ly các ứng dụng mà không cần thực hiện thay đổi đối với mã của chúng hoặc chỉ với những thay đổi tối thiểu. Hãy nhớ lại rằng trong OpenBSD, cam kết và tiết lộ nhằm mục đích tích hợp chặt chẽ với môi trường cơ bản và được sử dụng bằng cách thêm các chú thích đặc biệt vào mã của từng ứng dụng. Để đơn giản hóa việc tổ chức bảo vệ, các bộ lọc cho phép bạn loại bỏ chi tiết ở cấp độ các lệnh gọi hệ thống riêng lẻ và thao tác các loại lệnh gọi hệ thống (đầu vào/đầu ra, đọc tệp, ghi tệp, ổ cắm, ioctl, sysctl, khởi chạy quy trình, v.v.) . Các chức năng hạn chế quyền truy cập có thể được gọi trong mã ứng dụng khi một số hành động nhất định được thực hiện, ví dụ: quyền truy cập vào ổ cắm và tệp có thể bị từ chối sau khi mở các tệp cần thiết và thiết lập kết nối mạng.

Tác giả của cổng cam kết và tiết lộ cho FreeBSD dự định cung cấp khả năng cách ly các ứng dụng tùy ý mà tiện ích rèm được đề xuất, cho phép bạn áp dụng các quy tắc được xác định trong một tệp riêng biệt cho các ứng dụng. Cấu hình được đề xuất bao gồm một tệp có cài đặt cơ bản xác định các lớp lệnh gọi hệ thống và đường dẫn tệp điển hình dành riêng cho một số ứng dụng nhất định (làm việc với âm thanh, tương tác mạng, ghi nhật ký, v.v.), cũng như một tệp có quy tắc truy cập cho các ứng dụng cụ thể.

Tiện ích rèm có thể được sử dụng để cô lập hầu hết các tiện ích chưa sửa đổi, quy trình máy chủ, ứng dụng đồ họa và thậm chí toàn bộ phiên máy tính để bàn. Rèm có thể được sử dụng cùng với các cơ chế cách ly được cung cấp bởi hệ thống con Jail và Capsicum. Cũng có thể tổ chức cách ly lồng nhau, khi các ứng dụng được khởi chạy sẽ kế thừa các quy tắc được đặt cho ứng dụng gốc, bổ sung cho chúng những hạn chế riêng lẻ. Một số hoạt động hạt nhân (cơ sở gỡ lỗi, POSIX/SysV IPC, PTY) được bảo vệ bổ sung bằng cơ chế rào cản nhằm ngăn chặn quyền truy cập vào các đối tượng hạt nhân không được tạo bởi quy trình hiện tại hoặc quy trình gốc.

Một quy trình có thể định cấu hình sự cô lập của chính nó bằng cách gọi windowctl hoặc bằng cách sử dụng các hàm plegde() và Reveal() của libcurtain, tương tự như các hàm được tìm thấy trong OpenBSD. Để theo dõi các khóa trong khi ứng dụng đang chạy, sysctl ‘security.curtain.log_level’ được cung cấp. Quyền truy cập vào các giao thức X11 và Wayland được kích hoạt riêng bằng cách chỉ định các tùy chọn “-X”/”-Y” và “-W” khi chạy rèm, nhưng khả năng hỗ trợ cho các ứng dụng đồ họa vẫn chưa đủ ổn định và có một số vấn đề chưa được giải quyết ( vấn đề chủ yếu xuất hiện khi sử dụng X11 và hỗ trợ Wayland được triển khai tốt hơn nhiều). Người dùng có thể thêm các hạn chế bổ sung bằng cách tạo tệp quy tắc cục bộ (~/.curtain.conf). Ví dụ: để chỉ cho phép ghi từ Firfox vào thư mục ~/Downloads/, bạn có thể thêm phần “[firefox]” với quy tắc “~/Downloads/ : rw +”.

Việc triển khai bao gồm mô-đun hạt nhân mac_curtain để kiểm soát truy cập bắt buộc (MAC, Kiểm soát truy cập bắt buộc), một bộ bản vá cho hạt nhân FreeBSD với việc triển khai các trình xử lý và bộ lọc cần thiết, thư viện libcurtain để sử dụng các chức năng plegde và công bố trong các ứng dụng, tiện ích rèm, các tệp cấu hình ví dụ, một tập hợp các thử nghiệm và bản vá cho một số chương trình trong không gian người dùng (ví dụ: để sử dụng $TMPDIR để hợp nhất công việc với các tệp tạm thời). Nếu có thể, tác giả dự định giảm thiểu số lượng thay đổi cần có bản vá cho kernel và ứng dụng.

Nguồn: opennet.ru

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