Lỗ hổng trong Polkit cho phép bạn nâng cao đặc quyền của mình trong hệ thống

Một lỗ hổng (CVE-2021-3560) đã được xác định trong thành phần Polkit, được sử dụng trong các bản phân phối nhằm cho phép người dùng không có đặc quyền thực hiện các hành động yêu cầu quyền truy cập nâng cao (ví dụ: gắn ổ USB), cho phép người dùng cục bộ đạt được quyền root trong hệ thống. Lỗ hổng đã được sửa trong phiên bản Polkit 0.119.

Sự cố đã xuất hiện kể từ bản phát hành 0.113, nhưng nhiều bản phân phối, bao gồm RHEL, Ubuntu, Debian và SUSE, đã chuyển ngược chức năng bị ảnh hưởng vào các gói dựa trên bản phát hành Polkit cũ hơn (bản sửa lỗi gói đã có sẵn trong các bản phân phối).

Sự cố thể hiện ở hàm polkit_system_bus_name_get_creds_sync(), hàm này lấy các mã định danh (uid và pid) của quy trình yêu cầu nâng cao đặc quyền. Một quy trình được Polkit xác định bằng cách gán một tên duy nhất trong DBus, sau đó tên này được sử dụng để xác minh các đặc quyền. Nếu một quá trình ngắt kết nối khỏi dbus-daemon ngay trước khi trình xử lý polkit_system_bus_name_get_creds_sync bắt đầu, trình xử lý sẽ nhận được mã lỗi thay vì một tên duy nhất.

Lỗ hổng này xảy ra do mã lỗi trả về không được xử lý đúng cách và hàm polkit_system_bus_name_get_creds_sync() trả về TRUE thay vì FALSE, mặc dù không khớp quy trình với uid/pid và xác minh các đặc quyền được yêu cầu cho quy trình. Mã mà hàm polkit_system_bus_name_get_creds_sync() được gọi giả định rằng quá trình kiểm tra đã thành công và yêu cầu tăng cấp đặc quyền đến từ người chủ chứ không phải từ người dùng không có đặc quyền, điều này giúp có thể thực hiện các hành động đặc quyền mà không cần xác thực và xác minh thông tin xác thực bổ sung.

Nguồn: opennet.ru

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