Trình tải động , đi kèm với OpenBSD, có thể, trong một số điều kiện nhất định, - các ứng dụng để lại biến môi trường LD_LIBRARY_PATH và do đó cho phép tải mã của bên thứ ba trong bối cảnh một quy trình đang chạy với các đặc quyền nâng cao. Các bản vá khắc phục lỗ hổng này đã có sẵn để phát hành и . Các bản vá nhị phân () cho các nền tảng AMD64, i386 và arm64 đã được sản xuất và sẽ có sẵn để tải xuống vào thời điểm tin tức này được xuất bản.
Bản chất của vấn đề: trong quá trình hoạt động, ld.so trước tiên trích xuất giá trị của biến LD_LIBRARY_PATH từ môi trường và sử dụng hàm _dl_split_path(), biến nó thành một mảng các chuỗi - đường dẫn đến các thư mục. Nếu sau này hóa ra quy trình hiện tại được bắt đầu bởi ứng dụng SUID/SGID thì mảng đã tạo và trên thực tế, biến LD_LIBRARY_PATH sẽ bị xóa. Đồng thời, nếu _dl_split_path() hết bộ nhớ (điều này khó khăn do giới hạn 256 kB rõ ràng về kích thước của các biến môi trường, nhưng về mặt lý thuyết là có thể), thì biến _dl_libpath sẽ nhận được giá trị NULL và các lần kiểm tra tiếp theo của giá trị của biến này sẽ buộc bỏ qua cuộc gọi tới _dl_unsetenv("LD_LIBRARY_PATH").
Lỗ hổng được các chuyên gia tìm thấy , cũng như các vấn đề. Các nhà nghiên cứu bảo mật đã xác định lỗ hổng đã lưu ý rằng vấn đề được giải quyết nhanh chóng như thế nào: một bản vá đã được chuẩn bị và các bản cập nhật được phát hành trong vòng ba giờ sau khi dự án OpenBSD nhận được thông báo.
Ngoài ra: Bài toán đã được gán một số . Được thực hiện trên danh sách gửi thư an ninh oss , bao gồm một khai thác nguyên mẫu chạy trên kiến trúc OpenBSD 6.6, 6.5, 6.2 và 6.1
AMD64 và i386 (việc khai thác có thể được điều chỉnh cho phù hợp với các kiến trúc khác).
Sự cố này có thể bị khai thác trong quá trình cài đặt mặc định và cho phép người dùng cục bộ không có đặc quyền thực thi mã dưới quyền root thông qua thay thế thư viện khi chạy tiện ích chpass hoặc passwd suid. Để tạo các điều kiện bộ nhớ thấp cần thiết cho hoạt động, hãy đặt giới hạn RLIMIT_DATA thông qua setrlimit.
Nguồn: opennet.ru
