Lỗ hổng trong sudo cho phép leo thang đặc quyền khi sử dụng các quy tắc cụ thể

Trong tiện ích Sudo, được sử dụng để tổ chức thực hiện các lệnh thay mặt cho người dùng khác, xác định sự dễ bị tổn thương (CVE-2019-14287), cho phép bạn thực thi các lệnh với quyền root, nếu có các quy tắc trong cài đặt sudoers trong đó trong phần kiểm tra ID người dùng sau từ khóa cho phép “TẤT CẢ” có lệnh cấm rõ ràng việc chạy với quyền root (“... (TẤT CẢ, !gốc)..." ). Lỗ hổng này không xuất hiện trong cấu hình mặc định của các bản phân phối.

Nếu sudoers có các quy tắc hợp lệ, nhưng cực kỳ hiếm trong thực tế, cho phép thực thi một lệnh nhất định dưới UID của bất kỳ người dùng nào ngoài root, thì kẻ tấn công có quyền thực thi lệnh này có thể bỏ qua hạn chế đã thiết lập và thực thi lệnh bằng quyền gốc. Để vượt qua giới hạn, chỉ cần thử thực thi lệnh được chỉ định trong cài đặt với UID “-1” hoặc “4294967295”, điều này sẽ dẫn đến việc thực thi lệnh đó với UID 0.

Ví dụ: nếu có một quy tắc trong cài đặt cung cấp cho bất kỳ người dùng nào quyền thực thi chương trình /usr/bin/id dưới bất kỳ UID nào:

myhost ALL = (TẤT CẢ, !root) /usr/bin/id

hoặc một tùy chọn chỉ cho phép thực thi đối với một người dùng cụ thể:

myhost bob = (TẤT CẢ, !root) /usr/bin/id

Người dùng có thể thực thi “sudo -u '#-1' id” và tiện ích /usr/bin/id sẽ được khởi chạy dưới quyền root, bất chấp lệnh cấm rõ ràng trong cài đặt. Vấn đề xảy ra là do bỏ qua các giá trị đặc biệt “-1” hoặc “4294967295”, điều này không dẫn đến thay đổi trong UID, nhưng vì bản thân sudo đã chạy bằng root nên không thay đổi UID nên lệnh target cũng ra mắt với quyền root.

Trong các bản phân phối SUSE và openSUSE, nếu không chỉ định “NOPASSWD” trong quy tắc thì sẽ tồn tại một lỗ hổng không thể khai thác được, vì trong sudoers, chế độ “Mặc định targetpw” được bật theo mặc định, chế độ này sẽ kiểm tra UID dựa trên cơ sở dữ liệu mật khẩu và nhắc bạn nhập mật khẩu của người dùng mục tiêu. Đối với các hệ thống như vậy, một cuộc tấn công chỉ có thể được thực hiện nếu có các quy tắc có dạng:

myhost ALL = (TẤT CẢ, !root) NOPASSWD: /usr/bin/id

Đã khắc phục sự cố trong bản phát hành Sudo 1.8.28. Bản sửa lỗi cũng có sẵn ở dạng . Trong bộ công cụ phân phối, lỗ hổng này đã được sửa trong Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD. Tại thời điểm viết bài, vấn đề vẫn chưa được khắc phục trong RHEL и Fedora. Lỗ hổng này được xác định bởi các nhà nghiên cứu bảo mật của Apple.

Nguồn: opennet.ru

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