Trong trình quản lý hệ thống systemd tính dễ bị tổn thương (), có khả năng cho phép bạn thực thi mã của mình với các đặc quyền nâng cao bằng cách gửi yêu cầu được thiết kế đặc biệt qua bus DBus. Sự cố đã được khắc phục trong bản phát hành thử nghiệm (các bản vá giải quyết vấn đề: , , ). Lỗ hổng đã được sửa trong các bản phân phối , , (xuất hiện trong RHEL 8, nhưng không ảnh hưởng đến RHEL 7), , и , nhưng tại thời điểm viết tin tức vẫn chưa được chỉnh sửa trong и .
Lỗ hổng này xảy ra do quyền truy cập vào vùng bộ nhớ đã được giải phóng (use-after-free), xảy ra khi thực thi không đồng bộ các yêu cầu tới Polkit trong khi xử lý tin nhắn DBus. Một số giao diện DBus sử dụng bộ đệm để lưu trữ các đối tượng trong một thời gian ngắn và xóa các mục trong bộ đệm ngay khi bus DBus rảnh để xử lý các yêu cầu khác. Nếu trình xử lý phương thức DBus sử dụng bus_verify_polkit_async(), thì nó có thể phải đợi hành động Polkit hoàn tất. Sau khi Polkit sẵn sàng, trình xử lý sẽ được gọi lại và truy cập dữ liệu đã được phân phối trong bộ nhớ. Nếu yêu cầu tới Polkit mất quá nhiều thời gian, các mục trong bộ đệm sẽ bị xóa trước khi trình xử lý phương thức DBus được gọi lần thứ hai.
Trong số các dịch vụ cho phép khai thác lỗ hổng, đáng chú ý là systemd-machined, cung cấp API DBus org.freedesktop.machine1.Image.Clone, dẫn đến việc lưu trữ dữ liệu tạm thời trong bộ đệm và truy cập không đồng bộ vào Polkit. Giao diện
org.freedesktop.machine1.Image.Clone có sẵn cho tất cả người dùng không có đặc quyền của hệ thống, điều này có thể làm hỏng các dịch vụ systemd hoặc có khả năng khiến mã được thực thi dưới quyền root (nguyên mẫu khai thác vẫn chưa được chứng minh). Mã cho phép khai thác lỗ hổng là trong systemd-machined trong phiên bản 2015 (RHEL 7.x sử dụng systemd 219).
Nguồn: opennet.ru
