Lỗ hổng trong XFS cho phép đọc dữ liệu thiết bị khối thô

Một lỗ hổng (CVE-2021-4155) đã được xác định trong mã hệ thống tệp XFS cho phép người dùng cục bộ không có đặc quyền đọc dữ liệu khối không được sử dụng trực tiếp từ thiết bị khối. Tất cả các phiên bản chính của nhân Linux cũ hơn 5.16 có chứa trình điều khiển XFS đều bị ảnh hưởng bởi sự cố này. Bản sửa lỗi đã được đưa vào phiên bản 5.16, cũng như trong các bản cập nhật kernel 5.15.14, 5.10.91, 5.4.171, 4.19.225, v.v. Bạn có thể theo dõi trạng thái của các bản cập nhật đang được tạo để khắc phục sự cố trong các bản phân phối trên các trang này: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Lỗ hổng này xảy ra do hành vi không chính xác của hai ioctl(XFS_IOC_ALLOCSP) và ioctl(XFS_IOC_FREESP) dành riêng cho XFS, là một chức năng tương tự của lệnh gọi hệ thống fallocate() trên toàn kernel. Khi tăng kích thước tệp không được căn chỉnh theo khối, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP không đặt lại byte đuôi về 4096 cho đến ranh giới khối tiếp theo. Do đó, trên XFS có kích thước khối tiêu chuẩn là 4095 byte, kẻ tấn công có thể đọc tới XNUMX byte dữ liệu được ghi trước đó từ mỗi khối. Các khu vực này có thể chứa dữ liệu từ các tệp đã xóa, tệp được chống phân mảnh và tệp có khối được loại bỏ trùng lặp.

Bạn có thể kiểm tra hệ thống của mình để tìm sự cố bằng cách sử dụng nguyên mẫu khai thác đơn giản. Nếu sau khi thực hiện chuỗi lệnh được đề xuất mà có thể đọc được văn bản của Shakespeare thì trình điều khiển FS dễ bị tấn công. Ban đầu việc gắn phân vùng XFS để trình diễn yêu cầu quyền root.

Vì ioctl(XFS_IOC_ALLOCSP) và ioctl(XFS_IOC_FREESP) về mặt thực tế giống nhau về chức năng như fallocate() tiêu chuẩn và điểm khác biệt duy nhất của chúng là rò rỉ dữ liệu, nên sự hiện diện của chúng tương tự như một cửa hậu. Bất chấp chính sách chung là không thay đổi các giao diện hiện có trong kernel, theo gợi ý của Linus, người ta đã quyết định loại bỏ hoàn toàn các ioctls này trong phiên bản tiếp theo.

Nguồn: opennet.ru

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