Một lỗ hổng trong systemd-coredump cho phép xác định nội dung bộ nhớ của các chương trình suid

Một lỗ hổng (CVE-2022-4415) đã được xác định trong thành phần systemd-coredump, xử lý các tệp cốt lõi được tạo sau khi các quy trình gặp sự cố, cho phép người dùng cục bộ không có đặc quyền xác định nội dung bộ nhớ của các quy trình đặc quyền đang chạy với cờ gốc suid. Sự cố cấu hình mặc định đã được xác nhận trên các bản phân phối openSUSE, Arch, Debian, Fedora và SLES.

Lỗ hổng này xảy ra do thiếu quá trình xử lý chính xác tham số fs.suid_dumpable sysctl trong systemd-coredump, khi được đặt thành giá trị mặc định là 2, sẽ cho phép tạo các kết xuất lõi cho các quy trình có cờ suid. Điều này được hiểu rằng các tệp cốt lõi của các tiến trình suid được viết bởi kernel phải có quyền truy cập được đặt để chỉ cho phép người dùng root đọc. Tiện ích systemd-coredump, được kernel gọi để lưu các tệp lõi, lưu trữ tệp lõi dưới ID gốc, nhưng cũng cung cấp quyền truy cập đọc dựa trên ACL vào các tệp lõi dựa trên ID của chủ sở hữu ban đầu đã khởi chạy quy trình .

Tính năng này cho phép bạn tải xuống các tệp cốt lõi mà không cần quan tâm đến việc chương trình có thể thay đổi ID người dùng và chạy với các đặc quyền nâng cao. Cuộc tấn công tập trung vào thực tế là người dùng có thể khởi chạy một ứng dụng suid và gửi cho nó tín hiệu SIGSEGV, sau đó tải nội dung của tệp lõi, bao gồm một phần bộ nhớ của quy trình trong khi chấm dứt bất thường.

Ví dụ: người dùng có thể chạy “/usr/bin/su” và trong một thiết bị đầu cuối khác chấm dứt quá trình thực thi của nó bằng lệnh “kill -s SIGSEGV `pidof su`”, sau đó systemd-coredump sẽ lưu tệp lõi trong /var /lib/systemd/ thư mục coredump, đặt ACL cho nó để cho phép người dùng hiện tại đọc. Vì tiện ích suid 'su' đọc nội dung của /etc/shadow vào bộ nhớ nên kẻ tấn công có thể truy cập vào thông tin về hàm băm mật khẩu của tất cả người dùng trên hệ thống. Tiện ích sudo không dễ bị tấn công vì nó cấm tạo các tệp lõi thông qua ulimit.

Theo các nhà phát triển systemd, lỗ hổng xuất hiện bắt đầu từ bản phát hành systemd 247 (tháng 2020 năm 246), nhưng theo nhà nghiên cứu đã xác định sự cố thì bản phát hành 0 cũng bị ảnh hưởng. Lỗ hổng xuất hiện nếu systemd được biên dịch bằng thư viện libacl (theo mặc định trong tất cả các bản phân phối phổ biến). Bản sửa lỗi hiện có sẵn dưới dạng bản vá. Bạn có thể theo dõi các bản sửa lỗi trong các bản phân phối trên các trang sau: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch. Như một giải pháp bảo mật, bạn có thể đặt sysctl fs.suid_dumpable thành XNUMX, điều này sẽ vô hiệu hóa việc gửi kết xuất tới trình xử lý systemd-coredump.

Nguồn: opennet.ru

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