Họ đã tìm ra cách vượt qua SELinux

bỏ qua

Phá vỡ hiệu quả các chính sách SELinux

Cuối tháng XNUMX vừa qua, Cá Sean, một nhà nghiên cứu bảo mật cthông tin được chia sẻ vàn blog của anh ấy về một phương pháp anh ấy tìm thấy để bỏ qua mô-đun bảo mật SELinux.

Trong bài đăng trên blog của mình, cAnh ấy đã chia sẻ một minh họa về cách có thể vượt qua lệnh cấm tải các mô-đun hạt nhân, được triển khai trong các quy tắc SELinux cụ thể trên một trong các thiết bị được nghiên cứu (không chỉ rõ đó là thiết bị nào và mức độ ảnh hưởng của sự cố đối với các quy tắc SELinux trong phần sụn và bản phân phối).

Dành cho những ai chưa biết SELinux (Linux được tăng cường bảo mật) nên biết rằng eĐó là một mô-đun bảo mật cho nhân Linux, giúp cải thiện tính bảo mật của hệ thống và, trong trường hợp vi phạm bảo mật, ngăn vi phạm đó lan rộng khắp hệ thống.

SELinux hoạt động ở ba chế độ; "Vô hiệu hóa, Cho phép và Thực thi." Ở chế độ Tắt, SELinux vẫn bị tắt hoàn toàn. Nếu SELinux được kích hoạt, nó sẽ ở chế độ Permissive hoặc Executor. Ở chế độ cho phép, SELinux sẽ chỉ giám sát tương tác. Ở chế độ Thực thi, SELinux cũng sẽ lọc tương tác với giám sát.

Tính chặt chẽ về bảo mật của nó có thể được hiểu từ thực tế là với SELinux, ngay cả khi hệ thống bị xâm phạm, các tệp không được cấp quyền truy cập cũng không thể truy cập được.

Đã giải thích rất hời hợt về SELinux, về việc bỏ qua Sean Pesce đề cập rằng các mô-đun chặn trong các quy tắc SELinux liên quan dựa vào việc hạn chế quyền truy cập vào cuộc gọi hệ thống mô-đun hữu hạn, cho phép một mô-đun được tải từ một tệp và được sử dụng trong các tiện ích như insmod.

Gần đây tôi đã để mắt đến một thiết bị dựa trên Linux chưa được tiết lộ như một dự án phụ cuối tuần của cá nhân. Sử dụng một số kỹ thuật đơn giản mà tôi sẽ không thảo luận ở đây, tôi đã giành được quyền truy cập root shell. Để tránh tiết lộ các chi tiết không cần thiết về việc triển khai mục tiêu, các thông tin như tên tệp và bối cảnh SELinux đã được thay đổi trong bài viết.

Nó được đề cập rằng do đó, không nhất thiết phải tắt SELinux, nhưng để tránh nhiều phức tạp, mô-đun hạt nhân tùy chỉnh được tải "sẽ là tốt nhất". Nhưng không phải trong trường hợp này, vì để bỏ qua nó, anh ấy chia sẻ rằng trước tiên tôi quyết định sao chép một trong các mô-đun hạt nhân hiện có từ hệ thống tệp của thiết bị bằng cách sử dụng một tập lệnh và tập lệnh này được vá trong hàm module_init, hàm này cũng có thể được sử dụng để tải trực tiếp các mô-đun hạt nhân từ một bộ đệm trong bộ nhớ.

Kết nối với trình bao đảo ngược của mình, tôi nhanh chóng nhận ra rằng hệ thống đã bật SELinux. Mặc dù chính sách này không nghiêm ngặt như chính sách tiêu chuẩn mà bạn có thể tìm thấy trên thiết bị Android thông thường, nhưng nó đủ nghiêm ngặt để ngăn tôi thực hiện nhiều việc hữu ích (ví dụ: gắn hệ thống tệp và truy cập tệp trong /etc/ ) . May mắn thay, tôi đã có thể ghi và thực thi các tệp trong /tmp/ , vì vậy tôi vẫn có một cách dễ dàng để tạo và chạy các công cụ tùy chỉnh.

Anh ấy đề cập thêm rằng có hai lệnh gọi hệ thống khác nhau có thể được sử dụng để tải mô-đun hạt nhân: int init_module tải mô-đun hạt nhân được lưu trữ trong bộ nhớ, trong khi int mô-đun hữu hạn tải một mô-đun hạt nhân từ đĩa.

Với điều này, khả năng tải các mô-đun hạt nhân được tận dụng, có thể được biên dịch thành các mô-đun tùy chỉnh để thực hiện điều gì đó nâng cao hơn và với các cấu hình cần thiết, có thể thực hiện thành công hạt nhân với quyền truy cập không gian người dùng.

Bối cảnh SELinux không bị xóa; đúng hơn, chúng ta đang chuyển sang bối cảnh tác vụ khởi động (nói chung, bối cảnh này có thể có rất ít hạn chế, nếu có).

Để chứng minh phương pháp, một nguyên mẫu làm việc đã được chuẩn bịcho phép thực thi mã cấp nhân bằng cách tải mô-đun của nó và vô hiệu hóa hoàn toàn tính năng bảo vệ SELinux, nếu bạn có quyền truy cập root hạn chế vào hệ thống bằng SELinux.

Cuối cùng, nếu bạn quan tâm đến việc có thể tìm hiểu thêm về nó, bạn có thể kiểm tra chi tiết trong ấn phẩm gốc tại liên kết sau.


Để 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.